【问题标题】:Compress/expand sound from Mp3 files in Linux server/terminal? [closed]在 Linux 服务器/终端中压缩/扩展 Mp3 文件中的声音? [关闭]
【发布时间】:2015-09-22 16:42:11
【问题描述】:

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

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

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

【问题讨论】:

  • @Cyrus 我明白了,但你为什么这么建议?
  • 要求推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题是题外话。 也许有人愿意帮助你赏金。
  • 我认为您应该看到askubuntu.com/questions/246242/… - 一些答案应该为您提供有关安装什么以及如何执行命令行工具(使用哪些参数)的线索。
  • @wojciii 压缩和标准化是有区别的。压缩是一个动态过程,会严重影响输出音频。它用于广播电台、录音室等。归一化是将峰值固定在 0 dB (sound.stackexchange.com/questions/22797/…) 的过程。规范化对我来说并不是真正需要的,但我需要压缩并获得录音才能更好地听到我的服务器上的任何内容。 aergistal 答案似乎正确,将检查它。
  • 有趣的是为什么人们不赞成这个问题。我今天对与 SO 投票相关的 meta 问题有一些负面投票,现在认为我应该离开 SO 并且永远不要重新登录,因为我觉得这对我来说真的不合适接受这种奇怪的投票行为,这对任何人来说都毫无意义,但对网站的定位、相关性和搜索很重要。伤心,我没那么傻,被别人的反对票感动了,我真的不在乎声誉,但这不仅仅是我的问题,很多人都受到这种错误排名系统的约束。

标签: bash ubuntu python-3.x audio mp3


【解决方案1】:

FFmpeg 有一个用于压缩或扩展音频动态范围的过滤器,称为compand。您可以在 Python 脚本中执行它。使用示例查看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 或从源代码编译以获取最新功能。

【讨论】:

    【解决方案2】:

    如果您只是在寻找“一种可以减少最安静和最大声级之间差异的工具”,那么听起来您正在寻找dynamic range compression,尽管我建议您也调查一下ReplayGain ,它决定了音轨的最佳响度级别(而不是使柔和的部分更响亮,而响亮的部分更柔和)。在大多数情况下,ReplayGain 更可取,但如果您有听力问题或只是想最大限度地提高人们理解声音片段的能力(而不是享受它),范围压缩更有意义。

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

    永久

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

    通过元数据

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

     

    有很多 implementations 可供选择,至少 ReplayGain 是这样。

    【讨论】:

    • 你明白最初的问题是关于linux和python吗?
    • 是的。我还看到列出了bash,这意味着您并不是专门寻找python 库。如果您点击我的最后一个链接,您会找到rgain,这是一个 python RG 工具,可以完全满足您的需求。
    • @rgain 目前您的答案看起来像是一个带有维基百科链接的长理论,实际上甚至不是一个实现(在该部分中没有任何脚本的链接)。我找到了这个项目bitbucket.org/fk/rgain(不是直接),但 aergistal 的答案看起来仍然比你的好。此外,bobulous.org.uk/misc/Replay-Gain-in-Linux.html 链接更有用。
    • 其他答案会重新编码 MP3,因此会降低质量。我把所有的“理论”放在我的答案中,以解决利弊。同样,我不得不解释 ReplayGain 与范围压缩。从您的 cmets 看来,您需要范围压缩。如果您还希望它具有破坏性,ffmpeg 是更好的选择之一。虽然请注意ffmpeg 有自己的 MP3 编码器(iirc)不如LAME,所以你可能会损失比你想要的更多的质量(输出为 .wav 然后使用 LAME 来最大限度地减少质量损失,或者尝试更高的比特率)。
    • @AdamKatz 你错了,ffmpeg 根本没有原生 mp3 编码器,它使用 libmp3lame aka LAME。来源:trac.ffmpeg.org/wiki/Encode/MP3.
    猜你喜欢
    • 2011-04-30
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2018-10-24
    相关资源
    最近更新 更多