我正在寻找一种方法来规范我拥有的许多 MP3 文件的声音。有些声音很低,而另一些声音较大,所以我必须根据歌曲调高或调低音量。有什么方法可以对所有文件执行此操作。我特别想通过终端执行此操作,但 GUI 方式也可以接受。
答案1
看看@mp3gain,对我来说它比normalize-audio更好
mp3gain -r *.mp3
另一个有用的版本可能是 -c,它可以防止询问您是否要对许多文件进行更改:
mp3gain -c -r *.mp3
正如手册页中所述:
mp3增益 不像许多标准化器那样只进行峰值标准化。相反,它会进行一些统计分析来确定文件在人耳中实际听起来有多大。此外,mp3gain 所做的更改完全无损。更改不会造成任何质量损失,因为程序会直接调整 mp3 文件,而无需解码和重新编码。
笔记:那个包裹是已删除在 ubuntu 15.04 上故意这样做。
Debian 建议使用该python-rgain
软件包作为替代品(其优点是“replaygain”支持多种文件格式,即 Ogg Vorbis、Flac、WavPack 和 MP3。此外,它还允许您查看任何这些文件类型中的现有重放增益信息)。安装后,运行replaygain
。
要从终端安装 python-rgain,请运行以下命令
sudo apt-get install python-rgain
最近注意到二进制文件是replaygain
或者,.deb
从以下位置获取 14.04(最新版本)的文件这里. 照常安装。之后,您需要运行sudo apt-get -f install
以纠正一些依赖关系问题。
答案2
大胆
借助 Audacity,我们可以轻松地批处理文件以将转换或效果应用于列表中的多个文件。为此,我们首先必须定义一个“链”包含我们想要应用的效果。
这是通过“文件-->编辑链...”。在现在打开的窗口中按添加左下角的按钮插入一个新链(给它一个合理的名称):
然后选择要插入到链中的效果及其参数(这里显示默认值和标准化效果)。
重要的:我们总是需要添加效果“导出 MP3”(或任何其他导出格式)将结果转换保存到磁盘。
完成后离开此窗口好的打开“文件-->应用链...”. 选择我们刚刚创建的链,然后加载所需的所有文件“应用于文件...”。可以从打开的文件选择器中选择多个文件。
处理后的文件将保存在新的子目录中“已清理”在原来的路径上。
索克斯
从版本 > 14.3 开始,我们可以使用 sox 过滤器--norm
在命令行上规范音频或进行批处理:
sox --norm infile outfile
使用 libsox-fmt-all 将 MP3 支持添加到 Sox:
sudo apt install sox libsox-fmt-all
答案3
我会使用这个项目规格化,这是一个用于规范化音频文件的命令行工具。看起来正是您所需要的。可以进行批处理,并且不需要重新采样为中间格式。
它在软件包存储库中作为 normalize-audio, sudo apt-get install normalize-audio
。这是 Debian 上游维护的版本,因此它应该是 LTS 或更新版本,并且具有 mp3 兼容性(已测试)。有一个很好的手册页man normalize-audio
来探索选项,但命令默认值似乎运行良好。对于批处理(跨多个文件标准化音量),normalize-audio -b *.mp3
或指定单个文件名而不是使用通配符。
答案4
为了这个目的,我愿意发表一下我的看法。我正在寻找完全相同的东西(仅适用于 ogg 文件),并在 Crunchbang 论坛上发起了一个主题。您可以在此处查看:规范化音频找不到 mp3 解码器
基本上我的解决方案是帖子 #8 中的脚本。它适用于 mp3、flac 和 ogg 输入文件,可能还适用于其他文件,但绝对不适用于 wav。
只需创建一个文件(随意命名,我将其命名为 db_adjust_mp3),chmod +x,然后将其粘贴到 ~/bin 文件夹中。它还会填充任何缺失的编解码器数据。示例:
原始文件:16._This_Protector.mp3: Audio file with ID3 version 2.3.0, contains:
对阵
规范化文件:16._This_Protector.mp3: Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 192 kbps, 44.1 kHz, JntStereo
我已经修改了脚本以在此处使用 normalize-mp3,因此您可以根据需要使用它:
#!/bin/bash
find "$1" -iname "*.""$2" > $HOME/file_list
cat $HOME/file_list | while read line; do
# echo "$line"
orig_gain="$(normalize-mp3 -n "$line" | cut -d 'd' -f1)"
larger=$(echo "$orig_gain"'>'-12 | bc)
if [[ larger ]]
then
gain_difference=$(echo "$orig_gain"*-1-12 | bc)
else
gain_difference=$(echo "$orig_gain"-12 | bc)
fi
echo "Gain Difference will be: $gain_difference""db"
normalize-ogg --mp3 --bitrate "$3" -g "$gain_difference""db" -v "$line"
done
此脚本计算当前 db 级别与 -12db 之间的差值,然后应用增益调整,将增益精确地设置为 -12db,我发现这对我来说效果最好。它也是递归的,这使得它非常适合处理整个音乐集或许多子文件夹中的文件。如果您希望设置不同的 db 级别,只需将数字“12”的两个实例更改为您想要使用的任何 db 级别。正如我在 Crunchbang 帖子中发布的那样,用法如下:
normalize-mp3 <directory> <file extenstion(with no leading dot)> <bitrate>
但是,当我将音乐库保存为 mp3 格式时,我也使用过 mp3gain,就像 Philippe 建议的那样。它的简单性非常好,我真的很喜欢它。然而,normalize-audio 的问题在于它确实对文件进行了解码和重新编码,因此声音会有所下降。但除非您是音响发烧友并且您的 mp3 是以高比特率编码的,否则您不会注意到太大的差异。
不过,我注意到 mp3gain 的一点是,无论我尝试了什么选项,我都无法让我的收藏中的所有内容都处于完全相同的 db 级别,而这正是我想要的,这样我就不必从一个音轨调整到另一个音轨的音量。这个脚本就是这么做的。抱歉说了这么多。希望这对你有帮助。