对视频声音,音频进行音量标准化和响度均化,归一化的标准,原理以及具体操作

为什么要做音频(音量)标准化( Audio normalization)

当我们在网上寻找音频时,由于制作标准等其他方面影响,会发现下载到的音频声音有的大有的小,比如音乐,这就会导致我们在听的时候需要根据不同的文件调整不同的音量大小,要不然可能在切换到下一首时音量能直接把你震晕
或者查找我们在网上寻找音频素材,在使用时素材声音忽大忽小会严重影响成品质量。
因此需要对视频中的音频进行标准化,避免声音忽大忽小。

Audio normalization 是什么?

目前音频标准化主要分为两种做法Peak (level) normalization(峰值标准化)Loudness normalization(响度标准化),我们一一了解。

Peak (level) normalization(峰值标准化)

峰值标准化,顾名思义,就是将音频最大(Peak)的地方,调整到特定大小,然后其他音频做相对应的增/减调整。
在这里插入图片描述

就比如上图中的左侧,将各个音频做相对调整,将所有音频文件的最大音量拉到0 db。这种方法的优点是简单,只需要找到最大音量并根据最大音量进行处理就决定了整体的音量调整,当然最终处理出的的结果好坏会根据最大音量而受到影响。比如下图,下图是一段经过Peak (level) normalization(峰值标准化)调整过的音频频谱图,左边为原始音频,右侧为处理后的结果。
在这里插入图片描述
由于原始音频(左侧)在接近结尾处会出现一声及其响亮的枪声,所以由于这突如其来的枪响,导致经过Peak (level) normalization后(右侧),调整幅度不大,音频前部分的声音听起来声音仍旧很小。

Loudness normalization(响度标准化)

响度标准化需要先计算出整体声音的平均音量,再将根据平均音量得到期望的音量差值作为调整依据。
在这里插入图片描述
上图右边的范例,就是将各个音频的音量统一调整到平均音量(绿色区域上界)-24db上。
这种方式计算比较复杂,并且音量较大的地方有在调整后,可能由于音量爆表而被裁剪。所以最终处理后的音频各个音量间的对比会产生变化。
就拿之前说的那个音频来做比较,下图是之前枪声那个音频经过Loudness normalization(响度标准化)调整过的音频频谱图,可以看到音频前部分的的声音明显变大了,同时原来对话跟枪声的强烈对比也被削弱了。
在这里插入图片描述
由于Loudness normalization更符合调整出预期的结果,因此,在有线电视/广播领域里主要用的也是Loudness normalization。目前在欧美所涉的产业标准有:

如何进行音频(音量)标准化?

这里介绍通过 ffmpeg 来进行音频标准化处理。

Peak (level) normalization

使用 ffmpeg 对音频进行Peak (level) normalization时需要进行两次处理,第一次获取当前音频的具体数值,第二次使用获取到的具体数值作为参数用 ffmpeg 对音频进行修正。

1. 获取音频数值

$ ffmpeg -i video.avi -af "volumedetect" -vn -sn -dn -f null /dev/null
...
[Parsed_volumedetect_0 @ 0000021d600c6e40] mean_volume: -16.0 dB
[Parsed_volumedetect_0 @ 0000021d600c6e40] max_volume: -5.0 dB
[Parsed_volumedetect_0 @ 0000021d600c6e40] histogram_8db: 5
[Parsed_volumedetect_0 @ 0000021d600c6e40] histogram_9db: 38
[Parsed_volumedetect_0 @ 0000021d600c6e40] histogram_10db: 137
[Parsed_volumedetect_0 @ 0000021d600c6e40] histogram_11db: 684

...
  • 在Windows上需要将/dev/null替换为NUL
  • 参数 -vn-sn,-dn 用来指定 ffmpeg 在执行过程中忽略非音频流。这样可以加快执行速度。

我们需要的就是上面打印的最大音量:

[Parsed_volumedetect_0 @ 0000021d600c6e40] max_volume: -5.0 dB

可以看到,video.avi 文件的最大音量为-5.0 dB,如果我们想要将音量调整到0 dB,就可以对文件应用5 dB的增益。

2. 对音频进行修正

纯音频文件
$ ffmpeg -i input.wav -af "volume=5dB" output.wav 
AVI格式
$ ffmpeg -i video.avi -af "volume=5dB" -c:v copy -c:a libmp3lame -q:a 2 output.avi

Loudness normalization

使用 ffmpeg 对音频进行 Loudness normalization使用的时EBU R.128标准,同时也需要进行两次处理,分别获取当前音频的具体数值,以及使用获取到的具体数值作为参数用 ffmpeg 对音频进行修正。

1. 获取音频数值

$ ffmpeg -i input.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null -
...
{
        "input_i" : "-23.54",
        "input_tp" : "-7.96",
        "input_lra" : "0.00",
        "input_thresh" : "-34.17",
        "output_i" : "-23.09",
        "output_tp" : "-7.51",
        "output_lra" : "0.00",
        "output_thresh" : "-33.72",
        "normalization_type" : "linear",
        "target_offset" : "7.09"
}

2. 对音频进行修正

$ ffmpeg -y -i input.wav -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-23.54:measured_TP=-7.96:measured_LRA=0.00:measured_thresh=-34.17:offset=7.09:print_format=summary -ar 16k out.wav

需要注意的是loudnorm过滤器使用(重叠的)3秒音频窗口来计算源中的短期响度,从而调整目标位置以符合目标参数。所以当文件时常不足3秒时,可能输出结果会出现较大偏差,这时候可以将文件多重复几次直到足够3秒,执行标准化之后在裁剪为原来的长度。

参数说明

响度范围(Loudness Range,LRA)

响度范围,用来描述音频的响度反差,即音频短时响度电平的离散度,或者说最常出现的那85%的响度的分布范围,它决定着是否根据目标受众对音频的动态范围进行压缩.

响度范围的大小与节目类型有关.流行音乐、广告等节目通常都进行了良好的压缩、激励甚至削波处理,响度范围小(一般为2~5 LU),能量集中,听起来很破甚至非常吵闹,压迫感强烈;新闻、访谈节目的响度范围比较适中,听感较为舒适(6~10 LU);而电影、电视剧、戏曲、交响乐等节目出于艺术表现,响度范围较大(10 LU以上),声音比较闷,经压限处理之后才能在电视上良好地重放.

响度范围的测量方法分为如下4步:

(1)将节目音频切割成相互重叠(至少2秒相互重叠)的短时响度块;

(2)以响度为横轴,出现的概率密度为纵轴,绘制出节目的响度-概率分布图;

(3)去掉低于-70 LUFS(静音)及绝对选通总体响度下方20LU(底声)的横轴部分;

(4)剩余响度累积分布函数的10%至95%两点之间所对应的横轴宽度,即为响度范围.

响度范围需要与听音环境相匹配.听音环境的动态范围受限于居室的本底噪声、听觉的痛阈及最大还音功率.典型居室的本底噪声在45~55dBA,而电视的典型收听音量为60~75dBA,因此电视所能重现的动态范围,或者说响度范围容限(DRT)很窄,只有20dB左右.轻薄便携的液晶电视甚至更差,因为留给扬声器的空间很小,功率做不大,并且为了降低功耗,常常使用底噪较大的D类功放.

响度范围过大的负面效应多见于电影和电视剧,观众常常会感觉到节目沉闷,因为它们是为大荧幕制作的,影剧院通常都具有良好的装修和一流的音响,而电视不能还原那么大的动态范围,此时就需要进行响度范围转换,对较弱的片断进行提升,对少数过响的音效进行限制.这可利用一个低门限值(小于-40dBFS)低压缩比(1:1.2~1:1.5)且带有补偿增益(make-up gain)的压缩器实现,提升听觉体验.而对于广告这类能量集中的节目来说,可直接平移节目的响度电平,有时甚至应当以短时响度的最大值作为广告响度的依据,进行响度惩罚,超得越多,降得越多.笔者认为,对于标清语言类电视节目,在不造成明显失真的前提下,LRA控制在6~12会比较舒适,既不会太闷,也不会太吵.

响度范围过大的另一个原因是节目制作不规范,节目内嵌多段整体响度不同的素材,类似于台阶.这种节目的LRA和整体响度并不真正反映节目的类型和响度的重心,并且起伏很大,难以校正.多代引用这类节目素材时会引起响度参差的累积,造成高阶响度问题,必须在制作阶段就予以解决.

一个节目的LRA如果和流派不相符,那么这个节目的制作就可能存在问题,例如上文提到的响度参差(会使响度范围变大),以及电平不匹配引起的削波(会使响度范围变小).

真实峰值(True Peak)

在说真峰值之前,先用通俗的话来说说峰值是什么,峰值就是波形振幅的波峰值(波形有波谷和波峰之分),说白了就是波形瞬态的最大电平值。那为什么要在峰值之前加个“真”字呢?原因是这样的,以前有一种峰值测量方法,只有当峰值的持续时间超过一定的时间时(通常是几毫秒),才会计算出比较准确的峰值,这种测量算法被称为模拟准峰值(QPPM)。模拟准峰值(QPPM)的瞬态响应受上升时间的限制 ,无法显示短于上升时间的峰值。
EBU给出了一种新的算法,无论它的持续时间有多短,都能正确的测量出其波形的真实峰值水平,故此,称其为真峰值。它是用来检测信号有没有过载的,一旦信号过载就会被削波造成信号失真,正因如此,EBU给出建议为真峰值不要超过-1dBTP,目的就是防止信号产生过载削波,其单位为dBTP(dB True Peak真实峰值),对应的值是dBFS值。

需要补充的是EBU R.128是针对电视台和广播建立的标准,由于电视台和广播传播的特殊性,受传输、发射设备的限制,所以需要设定最大允许真实峰值电平,EBU R.128推荐的制作域的最大允许真实峰值电平为-1dBTP。但具体设定播出的最大峰值电平标准时,应当全面了解传输设备特别是模拟传输设备的峰值储备及增益情况。

  • 23
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值