主要内容

响度正常化依照欧洲R 128标准

这个例子展示了如何使用工具从音频工具箱™来衡量响度,响度范围,和true-peak价值。它还显示了如何规范化音频,以满足欧洲R 128标准遵从性。

介绍

体积正常化是传统上由看着峰值信号测量。然而,这种方法的缺点是过分压缩音频传递一个信号电平阈值,但仍然可以听到非常响亮。结果是响度战争,录音往往比以前更跨流派和不一致的。

现代战争解决响度测量响度感知结合一个true-peak水平测量。国际标准和ITU BS.1770-4一样,如R 128,电视/ 85开发标准化响度测量基于音频信号的力量。许多国家已经通过立法对响度遵守广播标准水平。

在本例中,您衡量响度和补充参数离线(文件)和生活(流)音频信号。你也看到方法规范化音频是符合目标的水平。

如R 128标准

音频工具使您能够衡量响度和相关参数根据欧洲R 128标准。本标准定义了下列措施的响度:

  • 短暂的响度:使用滑动窗口长度400 ms。

  • 短期响度:使用滑动窗口长度3 s。

  • 集成响度:从开始到结束总响度。

  • 响度范围:量化响度变化在一个宏观的时间表。

  • True-peak价值:样本插值信号水平达到顶峰。

这些参数的详细描述,请参考文档如R 128标准。

离线响度测量和标准化

的情况你已经录制音频样本,您可以使用integratedLoudness函数来衡量响度。它返回集成的响度,LUFS单位,和响度范围,在单位的,完整的音频文件。

[x, fs] = audioread (“rockguitar - 16 - 44 - p1 -立体声- 72 secs.wav”);(响度,LRA) = integratedLoudness (x, fs);流(之前的响度正常化:%。1 f LUFS \ n '响度)
LUFS响度正常化前:-8.2

如R 128定义了目标响度级是-23 LUFS。音频文件的响度明显高于这个水平。可以使用一个简单的水平减少操作规范化响度。

目标= -23;gaindB =目标——响度;获得= 10 ^ (gaindB / 20);xn = x。*所得;audiowrite (“RockGuitar_normalized.wav”、xn fs)

新的音频文件的响度是在目标水平。

[x, fs] = audioread (“RockGuitar_normalized.wav”);响度= integratedLoudness (x, fs);流(归一化后的响度:%。1 f LUFS \ n '响度)
LUFS正常化后响度:-23.0

住响度测量和规范化

流式音频,如R 128定义的和短期的响度。您可以使用loudnessMeter系统对象测量瞬时响度,短期的响度,集成的响度,响度范围,true-peak现场音频信号的价值。

首先,你的声卡的音频信号和测量其响度使用loudnessMeter。的可视化的方法loudnessMeter打开一个用户界面(UI)显示所有loudness-related测量模拟的进展。

读者= dsp.AudioFileReader (“rockguitar - 16 - 44 - p1 -立体声- 72 secs.wav”,“SamplesPerFrame”,1024);fs = reader.SampleRate;inputLoudness = loudnessMeter (“SampleRate”fs);球员= audioDeviceWriter (“SampleRate”fs);runningMax = dsp.MovingMaximum (“SpecifyWindowLength”、假);可视化(inputLoudness)~结束(读者)audioIn =读者();[响度,~,~,~,tp) = inputLoudness (audioIn);maxTP = runningMax (tp);球员(audioIn);结束

图响度计包含对象类型的uicontrol, uipanel。

流(“马克斯true-peak价值之前正常化:%。1 f dBTP \ n 'maxTP(结束)
马克斯true-peak值正常化前:-0.3 dBTP
发布(读者)发布(球员)

正如你所看到的UI,音频流的响度明显高于-23年LUFS阈值。-0.3 dBTP最大true-peak水平也高于指定的阈值1 dBTP如R 128。规范现场音频流的响度比规范文件的响度棘手。一种方法帮助响度值接近目标阈值是使用自动增益控制(AGC)。在以下代码中,您使用audioexample.AGC系统对象规范化的力量-23分贝的音频信号。AGC估计音频信号的功率通过观察前面的400 ms,这是用来计算瞬时响度窗口大小。有两个响度米在这个例子中,一个用于输入从AGC AGC,另一个用于输出。两响度米可能发射的ui在屏幕上相同的位置,所以你必须移动到一边,开始比较前后的响度测量AGC。

outputLoudness = loudnessMeter (“SampleRate”fs);gainController = audioexample.AGC (“DesiredOutputPower”,-23,“AveragingLength”,0.4 * fs,“MaxPowerGain”,20);重置(inputLoudness)从之前%重用相同的响度计重置(runningMax)可视化(inputLoudness)可视化(outputLoudness)~结束(读者)audioIn =读者();loudnessBeforeNorm = inputLoudness (audioIn);[audioOut,获得]= gainController (audioIn);[loudnessAfterNorm, ~, ~, ~, tp) = outputLoudness (audioOut);maxTP = runningMax (tp);球员(audioOut);结束

图响度计包含对象类型的uicontrol, uipanel。

图响度计包含对象类型的uicontrol, uipanel。

流(归一化后的马克斯true-peak价值:%。1 f dBTP \ n 'maxTP(结束)
正常化后马克斯true-peak值:8.3 dBTP
发布(读者)发布(球员)

使用自动增益控制不仅带来了声音的响度-23 LUFS接近的目标,但它也得到了最大true-peak值低于允许1 dBTP。在某些情况下,最大true-peak值仍然高于1 dBTP虽然响度达到或者低于-23 LUFS。对于这样的场景,您可以通过音频通过限幅器