【问题标题】:How do I mix audio files using python?如何使用 python 混合音频文件?
【发布时间】:2011-11-29 14:26:00
【问题描述】:

我想在 python 中做基本的音频混合。

举个例子:我想把两个 mp3 文件加在一起,然后返回一个 mp3 文件。另一个例子:我想将一个 mp3 文件的前十秒添加到另一个 mp3 文件的开头。

完成这些任务的最佳方法是什么?我想使用内置的 python 函数,如 audioop,但找不到任何好的教程或示例代码来使用内置函数。

我正在浏览文档,但我很困惑,无法弄清楚如何做这样的事情。我什至不确定 python 库是否像 mp3 那样。我看过的大多数东西似乎都是指 WAV 文件。所以,如果是这种情况,我想一个后续问题是有没有一种简单的方法可以将 mp3 转换为 WAV 进行操作并再次返回?

【问题讨论】:

  • 在几乎任何情况下,我都认为您必须在处理之前转换为 WAV。 mp3 是一种压缩格式,必须先对其进行解压缩才能操作 PCM 数据。
  • 抱歉应该让最后一个问题更清楚:“有没有一种简单的方法可以将 mp3 转换为 WAV 进行操作,然后再返回 在 python 中?”

标签: python audio mp3


【解决方案1】:

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

【讨论】:

  • 这是一个古老的问题和答案,但仍然相关,并且仍然有效。为未来的读者发布此内容。
  • 如何将特定部分更改为覆盖,以具有不同的幅度?例如,我们如何在叠加层中将音量保持在 20%,但在 3 秒到 10 秒之间增加到 100%?
【解决方案2】:

我过去的做法就是使用subprocess。并致电sox

例如subprocess.call(["sox", "in.1.mp3", "in.2.mp3", "out.mp3"])

【讨论】:

    【解决方案3】:

    您可以查看python audiotools 项目中的一些代码。它是使用通用 python 包的命令行实用程序的集合。 audiotools (trackcat) 包含一个实用程序,它可以 con*cat*enate 两个或多个音轨;另一个 (tracksplit) 可以分割音轨(使用 .cue 文件)。这些以及许多其他包含的实用程序可以处理各种编码的音频文件,包括 mp3。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2015-10-12
      • 2013-05-22
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多