Ich habe eine 2 Sekunden 16-Bit-Single-Channel-8khz Wav-Datei und ich muss seine Lautstärke ändern.Ändern Sie das Volumen einer WAV-Datei in Python
Es sollte ziemlich einfach sein, denn das Ändern der Lautstärke ist das gleiche wie das Ändern der Amplitude des Signals, und ich muss es nur abschwächen, das heißt es für eine Zahl zwischen 0 und 1 multiplizieren. Aber es tut nicht t Arbeit: Der neue Sound ist niedriger, aber sehr laut. Was mache ich falsch?
Hier ist mein Code:
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()
Danke Jungs!
Warum verwenden Sie '* 5/10' anstelle von'/2'? –
Wenn ich raten müsste, würde ich sagen, dass der '* 5'-Teil abschneidet und überläuft. –
Liest du die Datei in der richtigen Endianness? [WAV-Dateien sind Little-Endian.] (Http://www.archive.org/web/19991115123323/http://www.borg.com/~jglatt/tech/wave.htm) Mit dem anderen Endian wird die Hälfte Probe und fügen Sie eine Menge Lärm hinzu. –