我有一個2秒16位單聲道8khz wav文件,我需要更改其音量。更改python中的wav文件的音量
它應該是非常簡單的,因爲改變音量與改變信號幅度是一樣的,我只需要對它進行衰減,即把它乘以0到1之間的一個數。但它不會「 t工作:新的聲音較低但非常充滿噪音。我究竟做錯了什麼?
這裏是我的代碼:
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()
謝謝你們!
爲什麼使用'* 5/10'而不是'/ 2'? –
如果我不得不猜測,我會說'* 5'部分正在削減和溢出。 –
您是否正在以正確的字節順序讀取文件? [WAV文件是little-endian。](http://web.archive.org/web/19991115123323/http://www.borg.com/~jglatt/tech/wave.htm)使用其他endian將減半樣品並添加大量噪音。 –