主要内容

splMeter

测量音频信号的声压级

描述

splMeter系统对象™计算声压级测量。对象返回以下的测量值:

  • 频率加权声级

  • 快速或缓慢的时间加权声音级别

  • 等效连续的声级

  • 最高声级

  • 最大声级

实施声压级计量:

  1. 创建splMeter对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

SPL = splMeter创建一个System对象,SPL,执行声压级测量。

SPL = splMeter(名称,值设置每个属性的名字到指定的价值.未指定的属性有默认值。

例子:SPL = splMeter('FrequencyWeighting','C-weighting','SampleRate',12000)创建一个System对象,SPL,它执行c加权,工作频率为12千赫。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

分析频带的宽度,指定为“完整的乐队”1倍频程的“2/3倍频程”,或1/3倍频程的.如果带宽指定为“完整的乐队”,声压级计返回整个频带的一组测量值。如果带宽指定为1倍频程的“2/3倍频程”,或1/3倍频程的时,声压级计返回每八度或分八度频带的一组测量值。

可调:没有

数据类型:字符|字符串

滤波器组的频率范围,以Hz为单位,指定为单调递增正值的两元素行向量。频带居中上方SampleRate/2被排除。

可调:没有

依赖关系

若要启用此属性,请设置带宽1倍频程的“2/3倍频程”,或1/3倍频程的

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

倍频筛选器的顺序,指定为偶数。

可调:没有

依赖关系

若要启用此属性,请设置带宽1倍频程的“2/3倍频程”,或1/3倍频程的

数据类型:|

应用于输入的频率加权,指定为“权重”“C-weighting”,或“Z-weighting”,其中z加权对应无加权。设计并实现了频率加权weightingFilter系统对象。

可调:没有

数据类型:字符|字符串

时间加权,以秒为单位,用于计算时间加权声级和最大时间加权声级,指定为“快”“慢”.的TimeWeighting属性用于指定低通滤波器的系数。

  • “快”- - - 1/8

  • “慢”- 1

可调:是的

数据类型:字符|字符串

dB计算的参考压力,单位为Pa,指定为正标量。

可调:是的

数据类型:|

报告等效连续、峰值和最大时间加权声音级别的时间间隔(以秒为单位),指定为正标量整数。

可调:没有

数据类型:|

标量(单输入)或矢量(多通道输入)校准因子乘以输入。

若要使用参考音调设置校准因子,请使用校准

可调:没有

数据类型:|

输入采样率(以Hz为单位),指定为正标量。

可调:没有

数据类型:|

使用

描述

例子

LtLeqLpeakLmax= spl (audioIn返回时间加权(Lt)当前输入帧的声级,audioIn.该对象还返回等价的连续(Leq),峰值(Lpeak)和最大时间加权(Lmax)声级表的输入声级。

输入参数

全部展开

声压级仪表的音频输入,指定为列向量或矩阵。矩阵的列被视为独立的音频通道。

数据类型:|

输出参数

全部展开

以dB为单位的时间加权声音级别,返回为列向量、矩阵或相同类型的3-D数组audioIn

输出的大小和解释取决于带宽属性设置为:

  • “完整的乐队”(默认)LtLeqLpeak,Lmax作为列向量或相同大小的矩阵返回audioIn

  • 1倍频程的“2/3倍频程”,或1/3倍频程的- - -LtLeqLpeak,Lmax返回为l——- - - - - -B——- - - - - -C数组。

    • l——入行数audioIn

    • B——八度频带数

    • C——in的列数audioIn

数据类型:|

以dB为单位的等效连续声级,返回为列向量、矩阵或相同类型的3d数组audioIn

输出的大小和解释取决于带宽属性设置为:

  • “完整的乐队”(默认)LtLeqLpeak,Lmax作为列向量或相同大小的矩阵返回audioIn

  • 1倍频程的“2/3倍频程”,或1/3倍频程的- - -LtLeqLpeak,Lmax返回为l——- - - - - -B——- - - - - -C数组。

    • l——入行数audioIn

    • B——八度频带数

    • C——in的列数audioIn

数据类型:|

峰值声级,以dB为单位,返回为列向量、矩阵或相同类型的3-D数组audioIn

输出的大小和解释取决于带宽属性设置为:

  • “完整的乐队”(默认)LtLeqLpeak,Lmax作为列向量或相同大小的矩阵返回audioIn

  • 1倍频程的“2/3倍频程”,或1/3倍频程的- - -LtLeqLpeak,Lmax返回为l——- - - - - -B——- - - - - -C数组。

    • l——入行数audioIn

    • B——八度频带数

    • C——in的列数audioIn

数据类型:|

最大时间加权声音级别,以dB为单位,返回为列向量、矩阵或相同类型的3-D数组audioIn

输出的大小和解释取决于带宽属性设置为:

  • “完整的乐队”(默认)LtLeqLpeak,Lmax作为列向量或相同大小的矩阵返回audioIn

  • 1倍频程的“2/3倍频程”,或1/3倍频程的- - -LtLeqLpeak,Lmax返回为l——- - - - - -B——- - - - - -C数组。

    • l——入行数audioIn

    • B——八度频带数

    • C——in的列数audioIn

数据类型:|

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

校准 使用已知电平的校准音调校准仪表
getCenterFrequencies 滤波器中心频率
一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

使用splMeter系统对象™用于测量流音频信号的a加权声压级。为报告指定两秒的时间间隔和快速时间加权。可视化SPL测量使用timescope对象。

创建一个dsp。AudioFileReader对象逐帧读取音频文件。创建一个audioDeviceWriter对象监听音频信号。创建一个timescope对象来可视化声压级测量。创建一个splMeter测量音频文件的声压级。使用默认的校准因子1。

Source = dsp。AudioFileReader (“Ambiance-16-44p1-mono-12secs.wav”);fs = source.SampleRate;播放器= audioDeviceWriter(“SampleRate”fs);Scope = timescope(“SampleRate”fs,...“TimeSpanOverrunAction”“滚动”...“TimeSpanSource”“属性”“时间间隔”3,“ShowGrid”,真的,...“YLimits”(110),“AxesScaling”“汽车”...“ShowLegend”,真的,“BufferLength”4 * 3 * fs,...“ChannelNames”...“Lt_AF”“Leq_A”“Lpeak_A”“Lmax_AF”},...“名字”“声压级计”);SPL = splMeter(“TimeWeighting”“快”...“FrequencyWeighting”“权重”...“SampleRate”fs,...“TimeInterval”2);

在音频流循环中:

  1. 读取音频信号帧。

  2. 将音频信号播放到输出设备。

  3. 调用声压级表返回时间加权、等效连续、峰值和最大时间加权声级(以dB为单位)。

  4. 使用范围显示声音级别。

作为最佳实践,一旦完成就释放对象。

~isDone(source) x = source();球员(x);[Lt,Leq,Lpeak,Lmax] = SPL(x);范围(Lt, Leq、Lpeak Lmax])结束发布(源)发布(播放器)发布(SPL)发布(范围)

splMeter使您能够监视八度和分数八度频带的声压级。在本例中,监视1/3-八度频带的等效连续声压级。

创建一个dsp。AudioFileReader对象逐帧读取音频文件。创建一个audioDeviceWriter对象,以便您可以收听音频信号。创建一个splMeter测量音频文件的八度声压级。使用默认的校准因子1。创建一个dsp。ArrayPlot对象来可视化每个八度频带的等效连续声压级。

Source = dsp。AudioFileReader (“JetAirplane-16-11p025-mono-16secs.wav”);fs = source.SampleRate;播放器= audioDeviceWriter(“SampleRate”fs);SPL = splMeter(...“带宽”1/3倍频程的...“SampleRate”fs);centerFrequencies = getCenterFrequencies(SPL);Scope = dsp。ArrayPlot (...“XDataMode”“自定义”...“CustomXData”centerFrequencies,...“包含”倍频带中心频率(Hz)...“YLabel”等效连续声级(dB)...“YLimits”(90),...“ShowGrid”,真的,...“名字”“声压级计”);

在音频流循环中:

  1. 读取音频信号帧。

  2. 将音频信号播放到输出设备。

  3. 调用声压级表返回等效连续声压级,单位为dB。

  4. 使用范围显示声音级别。仅当等效连续声压级发生变化时才更新范围。

作为最佳实践,一旦完成就释放对象。

LeqPrevious =零(大小(中心频率));~isDone(source) x = source();球员(x);[~,Leq] = SPL(x);i = 1:size(Leq,1)如果LeqPrevious ~= Leq(i,:) scope(Leq(i,:)) LeqPrevious = Leq(i,:);结束结束结束发布(源)发布(播放器)发布(SPL)发布(范围)

算法

全部展开

声压级的计算遵循[1].您可以指定属性值以符合标准[2]而且[3]

参考文献

[1]哈里斯,西里尔M。声学测量和噪声控制手册.美国物理学会,1998年,第3版。

[2]国际电工委员会。电声学。声级计。第1部分:规范IEC 61672 - 1:2013。

美国国家标准协会。声级计规范。1983。

扩展功能

版本历史

在R2018a中引入