主要内容

splMeter

测量音频信号的声压级

描述

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

  • 频率加权的声级

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

  • 等效连续的声级

  • 最高声级

  • 最大声级

实施声压级计量:

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

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

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倍频程的, SPL计返回每八度或分数八度频带的一组测量值。

可调:没有

数据类型:字符|字符串

滤波器组的频率范围,以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

可调:是的

数据类型:字符|字符串

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

可调:是的

数据类型:|

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

可调:没有

数据类型:|

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

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

可调:没有

数据类型:|

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

可调:没有

数据类型:|

使用

描述

例子

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

输入参数

全部展开

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

数据类型:|

输出参数

全部展开

dB中的时间加权声级,返回为列向量、矩阵或类型相同的3d数组audioIn

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

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

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

    • l——中的行数audioIn

    • B——八度频带数

    • C中的列数audioIn

数据类型:|

dB中的等效连续声级,返回为列向量、矩阵或与audioIn

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

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

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

    • l——中的行数audioIn

    • B——八度频带数

    • C中的列数audioIn

数据类型:|

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

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

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

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

    • l——中的行数audioIn

    • B——八度频带数

    • C中的列数audioIn

数据类型:|

dB中的最大时间加权声级,返回为列向量、矩阵或类型相同的3d数组audioIn

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

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

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

    • l——中的行数audioIn

    • B——八度频带数

    • C中的列数audioIn

数据类型:|

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

使用splMeter系统对象™用于测量流音频信号的a加权声压级。为报告指定两秒的时间间隔和快速时间加权。可视化声压级测量使用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. 调用声压表返回以分贝为单位的时间加权、等效连续、峰值和最大时间加权声级。

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

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

~isDone(source) x = source();球员(x);[Lt,Leq, speak,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 = 0 (size(centerfrequency));~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年。

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

美国国家标准协会。ANSI S1.4:声级表规范。1983。

扩展功能

版本历史

在R2018a中介绍