有时,在脚本或应用程序中,我们需要执行音频处理任务。例如:

加载和保存不同类型的音频文件。

在片段中拆分或附加音频。

混合来自两个不同音频文件的音频。

更改音频电平或声像设置。

更改音频电平或声像设置。

应用简单的效果,如滤镜。

生成音频音调。

安装
加载和播放音频

的主要类是 AudioSegment。 AudioSegment 充当加载、操作和保存音频的容器。

要创建我们的第一个音频脚本,我们需要一个测试音频文件,它可以是任何支持的格式,例如 WAV、MP3 或 AIFF。出于本教程的目的,我们将使用 urllib.request 下载文件作为脚本的一部分。

结果是这样的:

基本音频操作
现在我们已经加载了一些音频,我们可以进行各种形式的操作:

请注意,在最后一行代码中,我们如何链接fade_in() 和fade_out() 操作。这是因为每个操作都会返回一个 AudioSegment 实例。

分层音频
除了操作单个音频段之外,我们还可以将不同的段与不同的电平和声像设置进行分层和混合。

请注意,在最后一行中,我们使用 Python 的“切片”运算符按长度毫秒对节拍进行切片。

这是因为我们的 beat AudioSegment 是 loop2 的两倍。按长度切片意味着我们将节拍的前半部分与循环 2 混合。

结果是这样的:

另一种方法是向overlay() 提供loop=True 参数。这会根据需要自动循环较短的片段以与较长的片段对齐。

应用效果
在下一个示例中,我们将通过对音频应用平移、过滤和反转效果来将所有内容整合在一起。

在 pan() 方法的参数中,我们提供了一个介于 -1 和 1 之间的值,其中 -1 是左边,1 是右边,0 是中心。

结果是这样的:

最后一步,我们可以将新的音频循环保存到一个新文件中。这可以是任何支持的音频格式:

合成音调
除了加载和处理音频文件,还可以合成新的音调。

这些可以是任何频率的正弦波、方波或锯齿波。它还可以产生白噪声。音调可以转换为 AudioSegment 并像常规音频文件一样组合。

在下面的示例中,我们将使用 Sine 类为谐波系列的前 15 个间隔生成正弦音调。

请注意我们如何使用 += 运算符将每个 200 毫秒的正弦音附加到空段的末尾。

结果是这样的:

本文完整代码

详情参阅 - 亚图跨际