如何使用numpy更改pyaudio中的信号振幅?

如何使用numpy更改pyaudio中的信号振幅?,numpy,volume,pyaudio,Numpy,Volume,Pyaudio,我目前正在将Python3.3与pyaudio和numpy结合使用。我以pyaudio网站上的示例为例,播放一个简单的wave文件,并将数据发送到默认的声卡上 现在我想改变音频的音量,但是当我把数组乘以0.5,我会得到很多噪声和失真 下面是一个代码示例: while data != '': decodeddata = numpy.fromstring(data, numpy.int16) newdata = (decodeddata * 0.5).astype(numpy.int16) stre

我目前正在将Python3.3与pyaudio和numpy结合使用。我以pyaudio网站上的示例为例,播放一个简单的wave文件,并将数据发送到默认的声卡上

现在我想改变音频的音量,但是当我把数组乘以0.5,我会得到很多噪声和失真

下面是一个代码示例:

while data != '':
decodeddata = numpy.fromstring(data, numpy.int16)
newdata = (decodeddata * 0.5).astype(numpy.int16)
stream.write(newdata.tostring())

data = wf.readframes(CHUNK)
我应该如何处理这个数组上的乘法或除法而不破坏波形


谢谢,

源文件的比特率24位似乎与portaudio不兼容。导出到16位pcm文件后,乘法不会导致失真


要解决不同类型文件的这一问题,必须检查位深度并相应地重新缩放。

您尝试将解码数据转换为浮点,将数组乘以0.5,然后转换回短整数??