Compress/expand 来自 Linux server/terminal 中的 Mp3 文件的声音?

Compress/expand sound from Mp3 files in Linux server/terminal?

在我的 Ubuntu 服务器上的 python 脚本中,我需要使用声音压缩器处理许多传入的 mp3 音频文件。例如。一种减少最安静和最响亮音量之间差异的工具。

这可能吗?我相信我不需要为此编写程序。

如果是,我应该使用什么实用程序以及如何配置它?

FFmpeg has a filter for compressing or expanding the audio’s dynamic range called compand. You can exec it from within your Python script. Check the documentation 用法示例。

随机示例(对于带有耳语和爆炸部分的音频):

ffmpeg -i input.mp3 -af "compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0" output.mp3

意思是: 攻击 0,衰减 1,点 -90/900,-70/-70,-30/-9。 0/-3,软拐点 6,增益 0,音量 0,延迟 0

要安装它,您可以 sudo apt-get install ffmpeg 或从源代码编译它以获得最新功能。

如果您只是在寻找 "a tool that reduces difference between the most quiet and most loud sound levels",那么听起来您在寻找 dynamic range compression, though I'd suggest you also investigate ReplayGain,它决定了音轨的最佳响度级别(而不是制作柔和的部分)声音更大,响亮的部分更柔和)。对于大多数用途,ReplayGain 是更可取的,但如果您有听力问题或只是想最大限度地提高人们理解声音片段的能力(而不是 享受 它),则范围压缩更有意义。

有两种方法可以完成其中任一任务:永久和通过元数据:

永久

这涉及对音频进行解压缩、修改和重新编码。 您将失去音频质量,因为 MP3 是 lossy,但如果您在完全相同的软件版本和完全相同的配置下使用完全相同的编码器,这将是一个小问题。事实上,您必须重新编码也会使这个过程显着变慢。

通过元数据

有一些软件可以评估您的音乐库并将 ReplayGain 测量值粘贴到您媒体的元数据中(对于 MP3,这将作为 ID3 标签)。理解这种格式的播放器可以在您播放音频样本时调整音量。这是非破坏性的,你不会失去任何东西。它也更快,因为您不需要将音频压缩回 MP3。

有很多 implementations 可供选择,至少对于 ReplayGain。