loudnessMeter
符合标准的响度测量
描述
的loudnessMeter
系统对象™根据EBU R 128和ITU-R BS.1770-4标准计算音频信号的响度、响度范围和真实峰值。
执行响度测量:
创建
loudnessMeter
对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见什么是系统对象?
创建
描述
loudMtr = loudnessMeter
创建一个System对象,loudMtr
,在每个输入通道上独立执行响度测量。
大声表(
设置每个属性名称,值
)的名字
到指定的价值
.未指定的属性有默认值。
例子:loudMtr = loudnessMeter('ChannelWeights',[1.2, 0.8],'SampleRate',12000)
创建一个System对象,loudMtr
,信道权重为1.2和0.8,采样率为12 kHz。
属性
除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放
功能解锁它们。
如果属性为可调,您可以随时更改其值。
有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计.
ChannelWeights
- - - - - -线性加权应用于每个输入通道
[1,1,1,1.41, 1.41]
(默认)|非负行向量
应用于每个输入通道的线性加权,指定为非负值的行向量。行向量中的元素数量必须等于或大于输入通道的数量。向量中的多余值将被忽略。
缺省信道权值遵循ITU-R BS.1170-4标准。若要使用默认信道权重,请按以下顺序将输入信号信道指定为矩阵:[左,右,中心,左环绕,右环绕]。
作为最佳实践,指定ChannelWeights
属性的顺序:[左,右,中心,左环绕,右环绕]。
可调:是的
数据类型:单
|双
UseRelativeScale
- - - - - -使用相对刻度测量响度
假
(默认)|真正的
使用相对刻度进行响度测量,指定为逻辑标量。
假
—响度测量是绝对的,并以响度单位满量程(LUFS)返回。真正的
响度测量是相对于TargetLoudness
值并以响度单位(LU)返回。
可调:没有
数据类型:逻辑
TargetLoudness
- - - - - -相对尺度的目标响度
-23年
(默认)|真正的标量
LUFS中相对尺度的目标响度级别,指定为实标量。
例如,如果TargetLoudness
为-23 LUFS,则-23 LUFS的响度值报告为0 LU。
可调:是的
依赖关系
若要启用此属性,请设置UseRelativeScale
来真正的
.
数据类型:单
|双
SampleRate
- - - - - -输入采样率(Hz)
44100
(默认)|积极的标量
输入采样率(以Hz为单位),指定为正标量。
可调:是的
数据类型:单
|双
使用
描述
输入参数
audioIn
- - - - - -音频输入响度计
矩阵
音频输入到响度计,指定为一个矩阵。矩阵的列被视为独立的音频通道。
请注意
如果使用默认值ChannelWeights
的loudnessMeter
,作为最佳实践,请按以下顺序指定输入通道:[左,右,中,左环绕,右环绕]。
数据类型:单
|双
输出参数
短暂的
瞬时响度(LUFS)
列向量
瞬时响度,以响度单位相对于满量程(LUFS),作为列向量返回,列向量的行数与audioIn
.
默认情况下,响度测量以LUFS形式返回。如果你设置UseRelativeScale
财产真正的
,响度测量以响度单位(LU)返回。
数据类型:单
|双
短期的
-短期响度
列向量
相对于满量程(LUFS)的响度单位的短期响度,作为具有相同行数的列向量返回audioIn
.
默认情况下,响度测量以LUFS形式返回。如果你设置UseRelativeScale
财产真正的
,响度测量以响度单位(LU)返回。
数据类型:单
|双
集成
-综合响度(LUFS)
列向量
相对于满量程(LUFS)的以响度单位表示的综合响度,作为具有相同行数的列向量返回audioIn
.
默认情况下,响度测量以LUFS形式返回。如果你设置UseRelativeScale
财产真正的
,响度测量以响度单位(LU)返回。
数据类型:单
|双
范围
-响度范围(LU)
列向量
以响度单位(LU)表示的响度范围,作为具有相同行数的列向量返回audioIn
.
数据类型:单
|双
峰
-真峰响度(dB-TP)
标量
dB-TP中的真峰值响度,作为具有相同行数的列向量返回audioIn
.
数据类型:单
|双
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj
,使用这种语法:
发行版(obj)
例子
音频信号的响度
创建一个dsp。AudioFileReader
系统对象™读入音频文件。创建一个loudnesMeter
系统对象。音频文件的采样率作为音频文件的采样率loudnessMeter
.
fileReader = dsp。AudioFileReader (“RockDrums-44p1-stereo-11secs.mp3”);大声表(“SampleRate”, fileReader.SampleRate);
在音频流循环中读入音频文件。使用响度计来确定音频信号的瞬时、短期和综合响度。缓存响度测量值以供分析。
瞬间= [];shortTerm = [];Integrated = [];而~isDone(fileReader) x = fileReader();[m,s,i] = loudMtr(x);瞬间=[瞬间的;m];shortTerm = [shortTerm;s];集成=[集成;i];结束发行版(fileReader)
绘制音频信号的瞬时、短期和综合响度。
T = linspace(0,11,长度(瞬间));情节(t,[短暂的、短期的、集成])标题(“响度测量”)传说(“瞬间”,“短期”,“集成”)包含(的时间(秒)) ylabel (“LUFS”)
绘制音频流的瞬时响度和响度范围
创建一个音频文件阅读器和一个音频设备写入器。
fileReader = dsp。AudioFileReader (“FunkyDrums-44p1-stereo-25secs.mp3”,...“SamplesPerFrame”, 1024);fs = fileReader.SampleRate;deviceWriter = audioDeviceWriter(“SampleRate”fs);
创建一个时间范围来可视化您的音频流循环。
timeScope = timeScope (“NumInputPorts”,2,...“SampleRate”fs,...“TimeSpanOverrunAction”,“滚动”,...“LayoutDimensions”(2, 1),...“TimeSpanSource”,“属性”,“时间间隔”5,...“BufferLength”5 * fs);范围的顶部子图timeScope。Title =“短暂的响度”;timeScope。YLabel =“LUFS”;timeScope。YLimits = [- 40,0];范围的底部子图timeScope。ActiveDisplay = 2;timeScope。Title =“响度范围”;timeScope。YLabel =“陆”;timeScope。YLimits = [- 1,2];
创建一个响度计。使用输入文件的采样率作为响度计的采样率。调用可视化
打开音量计的“ebu模式”可视化。
大声表(“SampleRate”fs);可视化(loudMtr)
在音频流循环中:
读一读音频文件。
计算瞬时响度和响度范围。
在你的时间范围内想象瞬间的响度和响度范围。
播放音频信号。
“ebu模式”响度计可视化在打开时自动更新。作为最佳实践,一旦循环完成,就释放文件读取器和设备写入器。
而~isDone(fileReader) audioIn = fileReader();[瞬时响度,~,~,LRA] = loudMtr(audioIn);timeScope (momentaryLoudness LRA);deviceWriter (audioIn);结束发布(fileReader)发布(deviceWriter)
响度测量的相对刻度
创建一个音频文件阅读器来读取音频文件。创建一个音频设备写入器,将音频文件写入音频设备。使用文件读取器的采样率作为设备写入器的采样率。
fileReader = dsp。AudioFileReader (“Counting-16-44p1-mono-15secs.wav”,...“SamplesPerFrame”, 1024);fs = fileReader.SampleRate;deviceWriter = audioDeviceWriter(“SampleRate”fs);
创建一个响度计,目标响度设置为默认值-23年
LUFS。打开“ebu模式”响度计可视化。
大声表(“UseRelativeScale”,真正的);可视化(loudMtr)
创建一个时间范围来可视化您的音频信号及其测量的相对瞬间和短期响度。
Scope = timescope(...“NumInputPorts”3,...“SampleRate”fs,...“TimeSpanOverrunAction”,“滚动”,...“TimeSpanSource”,“属性”,“时间间隔”5,...“BufferLength”5 * fs,...“标题”,音频信号,瞬时响度和短期响度,...“ChannelNames”, {音频信号的,“短暂的响度”,“短期响度”},...“YLimits”(-16年,16),...“YLabel”,‘振幅/ LU’,...“ShowLegend”,真正的);
在音频流循环中,聆听并可视化音频信号。
而~isDone(fileReader) x = fileReader();[瞬时,短期]= loudMtr(x);范围(x,瞬时,短期)deviceWriter (x);结束发布(deviceWriter)发布(fileReader)
算法
的loudnessMeter
系统对象计算音频信号的瞬时响度、短期响度、综合响度、响度范围(LRA)和真峰值。您可以指定用于响度测量的任意数量的通道和非默认通道权重。的loudnessMeter
对一般情况下的算法进行了描述n具有默认通道权重的通道。
响度测量
输入通道,x,通过k加权weightingFilter
.k加权滤波器塑造频谱,以反映感知的响度。
k加权信道,y,分为0.4秒的片段,其中0.3秒重叠。如果还没有收集到所需数量的样本,则
loudnessMeter
系统对象返回瞬时和综合响度的最后计算值。如果收集了足够多的样本,则计算k加权信道的每段的幂(均方):国会议员我是瞬间的力量吗我段。
w是样本中的段长度。
瞬间的喧嚣,毫升,为每个段的LUFS计算:
Gc是通道加权吗c.
毫升瞬间的响动被你还了吗
loudnessMeter
系统对象。它也用于内部计算综合响度(步骤3-6)。的集成响度测量考虑自你的响度计的最后重置音频信号。为了计算综合响度,瞬时功率通过浇注系统。栅极系统在低声音期间暂停测量,比如在电影中沉默的一段时间。
瞬时功率段使用相应的瞬时响度段计算进行门控:
国会议员j缓存,直到
loudnessMeter
重置。瞬时功率子集,国会议员j,通过相对门槛门。
相对阈值Γ的计算如下:
lc信道的平均瞬时功率是多少c:
瞬时功率子集,国会议员j,是门控使用相对阈值Γ:
在每次调用您的
loudnessMeter
对象。的缓存值国会议员j根据Γ的更新值再次进行门控。瞬时功率段平均如下:
综合响度在LUFS中通过传递平均瞬时功率,P,透过“计算响度”系统:
k加权信道,y,每段3秒,重叠2.9秒。如果还没有收集到所需数量的样本,则
loudnessMeter
对象返回短期响度和响度范围的最后计算值。如果收集了足够多的样本,则计算每个k加权通道的幂(均方):sP我是短期的动力吗我信道的段。
w是样本中的段长度。
短期的响度,sL,为每个段的LUFS计算:
Gc是通道加权吗c.
sL短期的响度是否得到你的回报
loudnessMeter
系统对象。它也用于内部计算响度范围(步骤3-5)。短期响度使用绝对阈值进行门控:
sLj缓存,直到
loudnessMeter
重置。短期响度子集,sLj通过相对的门槛门。
门控短期响度被转换回线性,然后取平均值:
相对阈值,K,计算为:
短期响度子集,sLj,使用相对阈值进行门控:
相对阈值,K,在每次呼叫您的
loudnessMeter
对象。的缓存值sLj是否再次门控取决于的更新值K.短期响度子集,sLk,已排序。响度范围计算在分布的第10和第95百分位数之间,并以响度单位(LU)返回。
True-Peak
的true-peak测量只考虑呼叫响度计的当前输入帧。
信号被过度采样到至少192千赫。为了优化处理,输入采样率决定了精确的过采样。输入采样率低于750hz不被考虑。
输入采样率(kHz) Upsample因素 [0.75, 1.5) 256 [1.5, 3) 128 (3、6) 64 (6、12) 32 [12、24) 16 [24、48) 8 [48, 96) 4 (96192) 2 (192年,∞) 不是必需的 过采样信号,一个,通过半多相长度为12,阻带衰减为80 dB的低通滤波器。滤波器设计采用
designMultirateFIR
.滤波后的信号,b,已校正并转换为dB TP规模:
真峰确定为转换后信号的最大值,c.
参考文献
[1]国际电信联盟;无线电通信部门。测量音频节目响度和真峰值音频水平的算法。ITU-R BS.1770-4。2015.
[2]欧洲广播联盟。声音信号的音量正常化和允许的最大电平。Ebu r 128。2014.
[3]欧洲广播联盟。响度计量:“EBU模式”计量补充EBU R 128响度归一化。EBU R 128技术3341。2014.
[4]欧洲广播联盟。响度范围:EBU r128响度归一化的补充措施。EBU R 128技术3342。2016.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
版本历史
在R2016b中引入
Abrir比如
Tiene una versión modificada de este ejemplo。¿Desea abrir este ejemplo con sus modificaciones?
MATLAB突击队
Ha hecho clic en unenlace que对应一个este commando de MATLAB:
弹射突击队introduciéndolo en la ventana de commandos de MATLAB。Los navegadores web no permission comandos de MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。