主要内容

响度标准化符合EBU R 128标准

这个示例展示了如何使用Audio Toolbox™中的工具来测量响度、响度范围和真峰值值。它还显示了如何规范化音频,以满足EBU R 128标准合规。

介绍

体积归一化传统上是通过观察峰值信号的测量来实现的。然而,这种方法有一个缺点,即过度压缩的音频可能会超过信号级阈值,但仍然非常大的听到。结果是响度战争在美国,唱片的声音往往比以前更大,而且在不同类型的音乐中也不一致。

现代解决噪音战争的方法是测量噪音响度感知与…结合true-peak水平测量。国际电联BS.1770-4、EBU R 128和ATSC A/85等国际标准已经开发出来,以标准化基于音频信号功率的响度测量。许多国家已经通过了符合广播音量标准的立法。

在本例中,您将测量离线(基于文件)和实时(流)音频信号的响度和补充参数。你还可以看到将音频标准化以符合目标关卡的方法。

EBU R 128标准

音频工具箱使您能够测量响度和相关参数根据EBU R 128标准。本标准定义了以下响度的测量方法:

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

  • 短期响度:使用长度为3秒的滑动窗口。

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

  • 响度范围:在宏观时间尺度上量化响度的变化。

  • True-peak价值:内插信号的峰值采样电平。

有关这些参数的更详细描述,请参阅EBU R 128标准的文档。

离线响度测量和标准化

对于已经有录制音频样本的情况,可以使用integratedLoudness功能测量响度。它返回完整音频文件的综合响度(以LUFS为单位)和响度范围(以LU为单位)。

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

EBU R 128将目标响度级别定义为-23 LUFS。音频文件的音量明显高于此级别。一个简单的水平降低操作可以用来规范化的响度。

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

新音频文件的响度处于目标级别。

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

实时响度测量和标准化

对于流音频,EBU R 128定义瞬时和短期响度。你可以使用loudnessMeter测量瞬时响度、短期响度、综合响度、响度范围和实时音频信号的真峰值的系统对象。

首先,将音频信号传输到声卡并使用loudnessMeter.的可视化的方法loudnessMeter打开一个用户界面(UI),在模拟过程中显示所有与音量相关的测量值。

读者= 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)~isDone(reader) audioIn = reader();[响度,~,~,~,tp) = inputLoudness (audioIn);maxTP = runningMax (tp);球员(audioIn);结束

Figure Loudness Meter包含类型为uicontrol, uipanel的对象。

流('正常化前的最大真峰值:%。1 f dBTP \ n 'maxTP(结束)
归一化前最大真峰值:-0.3 dBTP
发布(读者)发布(球员)

正如你在UI上看到的,音频流的音量明显高于-23 LUFS阈值。其最大真峰水平-0.3 dBTP也高于EBU R 128规定的-1 dBTP阈值。规范化实时音频流的响度比规范化文件的响度更棘手。一种帮助使响度值接近目标阈值的方法是使用自动增益控制器(AGC)。在以下代码中,使用audioexample。自动增益控制将音频信号的功率正常化到- 23db的系统对象。AGC通过查看之前的400毫秒来估计音频信号的功率,这是用来计算瞬时响度的窗口大小。本例中使用了两个响度计——一个用于AGC的输入,另一个用于AGC的输出。两个响度计的ui可能会在屏幕上的相同位置启动,所以你必须将其中一个移到一边,以比较AGC前后测量到的响度。

outputLoudness = loudnessMeter (“SampleRate”fs);gainController = audioexample。自动增益控制(“DesiredOutputPower”, -23,...“AveragingLength”, 0.4 * fs,“MaxPowerGain”, 20);重置(inputLoudness)%重复使用以前使用的相同的响度计重置(runningMax)可视化(inputLoudness)可视化(outputLoudness)~isDone(reader) audioIn = reader();loudnessBeforeNorm = inputLoudness (audioIn);[audioOut,增益]= gainController(audioIn);[loudnessAfterNorm, ~, ~, ~, tp) = outputLoudness (audioOut);maxTP = runningMax (tp);球员(audioOut);结束

Figure Loudness Meter包含类型为uicontrol, uipanel的对象。

Figure Loudness Meter包含类型为uicontrol, uipanel的对象。

流('归一化后的最大真峰值:%。1 f dBTP \ n 'maxTP(结束)
归一化后的最大真峰值:8.3 dBTP
发布(读者)发布(球员)

AGC的使用不仅使音频的响度接近-23 LUFS的目标,而且使音频的最大真峰值低于允许的-1 dBTP。在某些情况下,最大真峰值仍然高于-1 dBTP,尽管响度在-23 LUFS或以下。对于这种情况,您可以通过限幅器