我有一个 2 秒 16 位单通道 8khz wav 文件,我需要更改它的音量。
应该很简单,因为改变音量和改变信号幅度是一样的,我只需要衰减它,也就是将它乘以0到1之间的一个数字。但它不起作用:新的声音较低,但非常充满噪音。我究竟做错了什么?
这是我的代码:
import wave, numpy, struct
# Open
w = wave.open("input.wav","rb")
p = w.getparams()
f = p[3] # number of frames
s = w.readframes(f)
w.close()
# Edit
s = numpy.fromstring(s, numpy.int16) * 5 / 10 # half amplitude
s = struct.pack('h'*len(s), *s)
# Save
w = wave.open("output.wav","wb")
w.setparams(p)
w.writeframes(s)
w.close()
谢谢你们!