【问题标题】:Increase volume before streaming with Python在使用 Python 进行流式传输之前增加音量
【发布时间】:2016-05-19 13:35:03
【问题描述】:

这里我们有一个使用 PyAudio 从 wav 文件流式传输音频的普通代码:

def play_sound(sound):
CHUNK = 1024
wf = wave.open(sound, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)
data = wf.readframes(CHUNK)
while len(data) > 0:
    stream.write(data)
    data = wf.readframes(CHUNK)
stream.stop_stream()
stream.close()
p.terminate()
return True

如何在不使用 PyDub 的情况下将音频流式传输到扬声器之前增加音量?

【问题讨论】:

    标签: python python-2.7 audio volume pyaudio


    【解决方案1】:

    如何使用soundfilesounddevice 模块?

    import soundfile as sf
    import sounddevice as sd
    
    weight = 1.7
    
    data, fs = sf.read('myfile.wav')
    sd.play(data * weight, fs, blocking=True)
    

    【讨论】:

    • 不,不会的。它有效,但我使用 PyAudio 是有原因的。有没有办法将它与 PyAudio 代码合并?
    • 请问是什么原因?
    • 我想将音频流式传输到非默认播放设备,因此使用 PyAudio 我可以使用output_device_index= 来确定我希望音频流式传输到哪个播放设备。还有一些方便的功能,例如get_device_info_by_index()get_device_count()。如果您知道另一种将音频流式传输到非默认播放设备的方法,请随时回答 this
    • 使用sounddevice,您可以将device= 与设备号或以空格分隔的子字符串一起使用。您还可以使用sounddevice.default.device 为后续调用设置默认值。要获取可用设备及其 ID,您可以使用query_devices()。都在the docs,你应该看看!
    • 非常感谢。当我快速浏览文档时,我没有注意到 sounddevice.play() 中有device= 的选项。它不仅解决了我的问题,还缩短了我的代码。
    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 2018-04-13
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    • 1970-01-01
    相关资源
    最近更新 更多