如何在 Python 中将多个音频文件 (wav) 合并为一个文件?我找到了这个:
import wave
infiles = ["sound_1.wav", "sound_2.wav"]
outfile = "sounds.wav"
data= []
for infile in infiles:
w = wave.open(infile, 'rb')
data.append( [w.getparams(), w.readframes(w.getnframes())] )
w.close()
output = wave.open(outfile, 'wb')
output.setparams(data[0][0])
output.writeframes(data[0][1])
output.writeframes(data[1][1])
output.close()
Run Code Online (Sandbox Code Playgroud)
但这会将一个音频文件附加到另一个。我想要的是代码,它“堆叠”音频文件(请控制音量)。这在Python中甚至可能吗?
您可以使用 pydub 模块。这是使用 Python 剪切、编辑、合并音频文件的最简单方法之一。
以下是如何使用它来将音频文件与音量控制相结合的示例:
from pydub import AudioSegment
sound1 = AudioSegment.from_file("/path/to/sound.wav", format="wav")
sound2 = AudioSegment.from_file("/path/to/another_sound.wav", format="wav")
# sound1 6 dB louder
louder = sound1 + 6
# sound1, with sound2 appended (use louder instead of sound1 to append the louder version)
combined = sound1 + sound2
# simple export
file_handle = combined.export("/path/to/output.mp3", format="mp3")
Run Code Online (Sandbox Code Playgroud)
要叠加声音,请尝试以下操作:
from pydub import AudioSegment
sound1 = AudioSegment.from_file("1.wav", format="wav")
sound2 = AudioSegment.from_file("2.wav", format="wav")
# sound1 6 dB louder
louder = sound1 + 6
# Overlay sound2 over sound1 at position 0 (use louder instead of sound1 to use the louder version)
overlay = sound1.overlay(sound2, position=0)
# simple export
file_handle = overlay.export("output.mp3", format="mp3")
Run Code Online (Sandbox Code Playgroud)
完整文档在这里pydub API 文档