在 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+Python实现B站MP4格式音频与视频的合并