在 Python 中合并音频文件

CMi*_*nus 3 python audio


如何在 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中甚至可能吗?

Tha*_*r A 8

您可以使用 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 文档

  • @ProgrammerJonas我编辑了我的答案,包括一个将一种声音叠加在另一种声音上的示例。如果您觉得有帮助,请将问题标记为已回答,否则请告诉我们什么不起作用 (3认同)