在 Python 中合并音频文件

Posted

技术标签:

【中文标题】在 Python 中合并音频文件【英文标题】:Combine audio files in Python 【发布时间】:2020-04-29 10:14:05 【问题描述】:

如何在 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()

但这会将一个音频文件附加到另一个。我想要的是代码,它“堆叠”音频文件(请使用音量控制)。这在 Python 中是否可行?

【问题讨论】:

***.com/questions/7629873/… 的可能重复项。 【参考方案1】:

您可以使用 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")

要叠加声音,试试这个:

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")

这里有完整的文档pydub API Documentation

【讨论】:

谢谢,但这只是附加音频。我想要的是,音频是分层的,所以一个音频在另一个之上 @ProgrammerJonas 我已经编辑了我的答案,以包含一个将一种声音叠加在另一种声音上的示例。如果您觉得有帮助,请将问题标记为已回答,否则请让我们知道什么不起作用

以上是关于在 Python 中合并音频文件的主要内容,如果未能解决你的问题,请参考以下文章

合并背景音频文件

如何在ffmpeg中合并音频和两个视频文件?

ffmpeg+Python实现B站MP4格式音频与视频的合并

在 ios 中合并音频文件的问题

如何将两个音频文件合并为一个并在javascript中合并后播放

合并音频文件