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()
君たちありがとう!