如何使用Python混合音频文件?
我想在Python中做一些基本的音频混合。
举个例子:我想把两个mp3文件合在一起,最后得到一个mp3文件。再比如,我想把一个mp3文件的前十秒加到另一个mp3文件的开头。
有什么好的方法可以实现这些任务吗?我想用Python自带的功能,比如audioop,但找不到好的教程或示例代码来使用这些内置功能。
我正在查看文档,但我有点困惑,不知道怎么做这些事情。我甚至不确定Python的库是否支持mp3格式。我查过的资料大多是关于WAV文件的。那么,如果是这样的话,我想问一下,有没有简单的方法可以把mp3转换成WAV格式进行处理,然后再转换回来?
3 个回答
1
我过去是这样做的:我使用了 subprocess 这个模块,然后调用 sox 工具。
比如说,我可以这样写:subprocess.call(["sox", "in.1.mp3", "in.2.mp3", "out.mp3"])
1
你可以看看python audiotools项目里的代码。这是一个包含命令行工具的集合,使用了一个共同的python包。里面有一个工具叫做trackcat
,可以把两个或多个音频轨道合并在一起;还有一个叫tracksplit
的工具,可以根据.cue文件把音频轨道拆分开。这些工具以及其他很多工具,都可以处理各种编码的音频文件,包括mp3格式。
25
你可以很简单地使用 pydub 来做到这一点:
from pydub import AudioSegment
sound1 = AudioSegment.from_mp3("/path/to/file1.mp3")
sound2 = AudioSegment.from_mp3("/path/to/file1.mp3")
# mix sound2 with sound1, starting at 5000ms into sound1)
output = sound1.overlay(sound2, position=5000)
# save the result
output.export("mixed_sounds.mp3", format="mp3")