我有一个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()
感谢你们!