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()
は君たちをありがとう!
なぜ「/ 2」ではなく「* 5/10」を使用していますか? –
もし私が推測しなければならないのは、 '* 5 'の部分がクリッピングしていることです。 –
正しいエンディアンでファイルを読んでいますか? [WAVファイルはリトルエンディアンです。](http://web.archive.org/web/19991115123323/http://www.borg.com/~jglatt/tech/wave.htm)もう一方のエンディアンを使用すると、サンプルを追加し、多くのノイズを追加します。 –