当前位置: 首页>>技术教程>>正文


如何规范化mp3文件中的声音

, ,

问题描述

我正在寻找一种方法来规范我的MP3文件中的声音。有些声音很低,而有些声音较大,所以我必须根据歌曲调高或调低音量。有什么方法可以为所有文件执行此操作。我特别想通过终端这样做,但也接受GUI方式。

最佳解决办法

Audacity

使用Audacity,我们可以轻松地将batch process文件应用于列表中的许多文件的转换或效果。为此,我们首先要定义一个包含我们想要应用的效果的”Chain”。

这是通过“文件 – >编辑链……”完成的。在现在打开的窗口中,按左下角的“添加”按钮插入一个新链(给它一个合理的名称):

sound,mp3,ubuntu

然后选择效果及其参数以插入链(此处显示默认值和标准化效果)。

Important: we always need to also add the effect “Export MP3” (or any other export format) for saving the resulting conversion to disk.

完成后,单击确定退出此窗口以打开“文件 – >应用链…”。选择我们刚创建的Chain,并使用“Apply to files …”加载所需的所有文件。可以从打开的文件选择器中选择多个文件。

sound,mp3,ubuntu

处理过的文件将保存在原始路径的新子目录”cleaned”中。


Sox

从版本> 14.3我们可以使用sox过滤器--norm在命令行上规范化音频或进行批处理:

sox --norm infile outfile

使用libsox-fmt-all将MP3支持添加到Sox。

sound,mp3,ubuntu

次佳解决办法

看看@ mp3gain对我来说甚至比normalize-audio更好

mp3gain -r *.mp3

另一个有用的版本可能是-c,它会阻止询问您是否要对许多文件进行更改:

mp3gain -c -r *.mp3

如手册页中所述:

mp3gain不仅像许多规范化器那样进行峰值归一化。相反,它会进行一些统计分析,以确定文件实际发出的声音对人耳的响亮程度。此外,mp3gain的变化是完全无损的。更改中没有质量丢失,因为程序直接调整mp3文件,无需解码和re-encoding。

注意:该软件包在ubuntu 15.04上专门用于removed

Debian建议将python-rgain软件包作为替代品(优点是’replaygain’支持多种文件格式,即Ogg Vorbis,Flac,WavPack和MP3。此外,它还允许您查看任何这些文件类型中的现有重播增益信息)。安装后,运行replaygain

要从终端安装python-rgain,请运行该命令

sudo apt-get install python-rgain

或者,从here获取14.04(最新)的.deb文件。像往常一样安装。之后,您需要运行sudo apt-get -f install来纠正一些依赖性问题。

第三种解决办法

我会使用这个项目Normalize,这是一个用于规范化音频文件的命令行工具。看起来正是您所需要的。可以进行批处理,也不需要重新采样到中间格式。

它在包装回购中作为normalize-audio,sudo apt-get install normalize-audio。这是Debian上游维护的一个版本,因此它应该是LTS或更新版本,并且具有mp3兼容性(经过测试)。有一个好的联机帮助页man normalize-audio来探索选项,但命令默认值似乎运行良好。对于批处理(规范化多个文件的卷),normalize-audio -b *.mp3或指定单个文件名而不是使用通配符。

第四种办法

为了它,我将投入2美分。我正在寻找完全相同的东西(仅适用于ogg文件)并在Crunchbang论坛上开始了一个主题。你可以在这里查看:Normalize-audio can’t find mp3 decoder

基本上我的解决方案是#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

这个脚本计算当前数据库级别和-12db之间的差异,然后应用增益调整将增益精确地放在-12db,这是我发现最适合我的。它也是递归的,这使得它非常适合在许多子文件夹中完成整个音乐集合或文件。如果要设置不同的数据库级别,只需将数字”12″的两个实例更改为您要使用的任何数据库级别。当我在我的Crunchbang线程中发布时,用法如下:

normalize-mp3 <directory> <file extenstion(with no leading dot)> <bitrate>

然而,当我以前用mp3格式保存我的音乐库时,我也习惯使用mp3gain,就像Philippe建议的那样。它简单易懂,我非常喜欢它。但是normalize-audio的问题在于它确实对文件进行了re-endcode解码,所以会有一些声音降级。但除非你是一个发烧友并且你的mp3以高比特率编码,否则你不应该注意到很大的差别。

我用mp3gain注意到的事情是,无论我尝试了什么选项,我都无法将我的收藏中的所有内容都设置为完全相同的数据库级别,这就是我想要的,这样我就不必将音量从一个音轨调整为下一个。这个脚本就是这样做的。很抱歉这么久了。希望这可以帮助。

第五种办法

replaygain

在Ubuntu 16.04上,我遇到了其他CLI替代方案的问题。然后我找到了replaygain

This package provides a Python package to calculate the Replay Gain values of audio files and normalize the volume of those files according to the values. Two basic scripts exploiting these capabilities are shipped as well.

Replay Gain is a proposed standard designed to solve the very problem of varying volumes across audio files.

安装:sudo apt install python-rgain

replaygain --force *.mp3
  • -f, --force重新计算重播即使文件已包含增益信息也会获得。

由于只计算/改变replaygain值,也更快:平均PC(Intel i7-6500U,8GB RAM):~20个文件/分钟。

Reference

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2892.html,未经允许,请勿转载。