主要内容

acousticLoudness

声信号的响度

描述

例子

响度= acousticLoudness (audioIn,fs)返回响度索恩斯根据ISO 532 - 1(茨威格)。

例子

响度= acousticLoudness (audioIn,fs,calibrationFactor)指定一个默认的麦克风校准系数用于计算响度。

例子

响度= acousticLoudness (SPLIn)计算使用one-third-octave-band响度声压水平(SPL)。

例子

响度= acousticLoudness (___,名称,值)使用一个或多个指定选项名称,值对参数。

例子:响度= acousticLoudness (audioIn fs,“方法”,“ISO 532 - 2”)返回响度根据ISO 532 - 2 (Moore-Glasberg)。

例子

(响度,specificLoudness)= acousticLoudness (___)还返回特定的响度。

例子

(响度,specificLoudness,全氯乙烯)= acousticLoudness (___“TimeVarying”,真的)也回报百分比响度。

(响度,specificLoudness,全氯乙烯)= acousticLoudness (___,“TimeVarying”,真的,百分位数的,p)指定要返回默认的百分位数。

例子

acousticLoudness (___)没有输出参数的具体情节响度和响度文本显示。如果TimeVarying真正的响度和特定的响度都绘制,后者在3 d。

例子

全部折叠

测量ISO 532 - 1固定声波测井响度。假设被校准的记录水平1 kHz语气寄存器SPL计为100分贝。

[audioIn, fs] = audioread (“WashingMachine-16-44p1-stereo-10secs.wav”);响度= acousticLoudness (audioIn fs)
响度=1×228.2688 - 27.7643

创建两个固定信号等效功率:粉红噪声信号和白噪声信号。

fs = 48 e3;大调的= 5;pnoise = 2 * pinknoise(大调的* fs);wnoise =兰德(大调的* fs, 1) - 0.5;wnoise = wnoise * sqrt (var (pnoise) / var (wnoise));

调用acousticLoudness使用默认的ISO 532 - 1(茨威格)方法和输出参数的响度粉红噪声的阴谋。调用acousticLoudness再一次,这一次与输出参数,得到具体的响度。

图acousticLoudness (pnoise fs)

图包含一个坐标轴对象。坐标轴对象与标题S p e c我f c空白L o u d n e S S空白的空白(i S o空白5 3 2 - 1)包含2线类型的对象,文本。

[~,pSpecificLoudness] = acousticLoudness (pnoise fs);

情节的响度白噪声信号,然后得到特定的响度值。

图acousticLoudness (wnoise fs)

图包含一个坐标轴对象。坐标轴对象与标题S p e c我f c空白L o u d n e S S空白的空白(i S o空白5 3 2 - 1)包含2线类型的对象,文本。

[~,wSpecificLoudness] = acousticLoudness (wnoise fs);

调用acousticSharpness功能比较的清晰度粉红噪声和白噪声。

pSharpness = acousticSharpness (pSpecificLoudness);wSharpness = acousticSharpness (wSpecificLoudness);流(粉红噪声的锐度= % 0.2 f acum \ n 'pSharpness)
粉红噪声锐度= 2.00 acum
流(白噪声的锐度= % 0.2 f acum \ n 'wSharpness)
白噪声锐度= 2.62 acum

读入一个音频文件。

[audioIn, fs] = audioread (“JetAirplane-16-11p025-mono-16secs.wav”);

画出时变声音响度依照ISO 532 - 1和百分位数。听音频信号。

acousticLoudness (audioIn fs,“SoundField”,“扩散”,“TimeVarying”,真正的)

图包含2轴subplottext类型的对象和另一个对象。坐标轴对象1包含一个类型的对象。坐标轴对象2包含一个类型的对象的表面。

声音(audioIn fs)

调用acousticLoudness的输入和百分位数。打印Nmax它们被百分位数。的Nmax百分位是最大响度报道。的它们被百分位是下面的音量响度报道的95%。

[~,~,perc] = acousticLoudness (audioIn fs,“SoundField”,“扩散”,“TimeVarying”,真正的);流(“马克斯响度= % 0.2 f索恩斯\ n '全氯乙烯(1))
马克斯响度= 89.48索恩斯
流(“它们响度= % 0.2 f索恩斯\ n '全氯乙烯(2))
它们被响度= 81.77索恩斯

读入一个音频文件。

[audioIn, fs] = audioread (“Turbine-16-44p1-mono-22secs.wav”);

调用acousticLoudness没有输出参数绘制具体的响度。假设一个校正因子为0.15,一个参考21 micropascals的压力。确定校正因子特定于您的音频系统,使用calibrateMicrophone函数。

calibrationFactor = 0.15;refPressure = 21 e-6;calibrationFactor acousticLoudness (audioIn fs,“PressureReference”refPressure)

图包含一个坐标轴对象。坐标轴对象与标题S p e c我f c空白L o u d n e S S空白的空白(i S o空白5 3 2 - 1)包含2线类型的对象,文本。

acousticLoudness使您能够指定一个中间表示,声压水平,而不是一个时域输入。这使您能够重用中间SPL计算。另一个优势是,如果你的身体SPL计不报告响度根据ISO 532 - 1或ISO 531 - 2中,您可以使用期限1/3-octave兼容标准响度计算报告。

计算声压水平从音频信号,首先创建一个splMeter对象。调用splMeter对象与音频输入。

spl = splMeter (“SampleRate”fs,“带宽”,“1/3倍频程”,“CalibrationFactor”calibrationFactor,“PressureReference”refPressure,“FrequencyWeighting”,“Z-weighting”,“OctaveFilterOrder”6);splMeasurement = spl (audioIn);

计算平均SPL面,跳过第一个0.2秒。只有保持乐队从25 Hz至12.5千赫(第一28乐队)。

SPLIn =意味着(splMeasurement(装天花板(0.2 * fs):最后,一28));

使用SPL输入,调用acousticLoudness没有输出参数绘制具体的响度。

acousticLoudness (SPLIn)

图包含一个坐标轴对象。坐标轴对象与标题S p e c我f c空白L o u d n e S S空白的空白(i S o空白5 3 2 - 1)包含2线类型的对象,文本。

建立一个实验显示的图。

创建一个audioDeviceReader从麦克风和读取一个对象audioDeviceWriter对象编写你的扬声器。

fs = 48 e3;deviceReader = audioDeviceReader (fs);deviceWriter = audioDeviceWriter (fs);

创建一个audioOscillator对象来生成一个1 kHz正弦信号。

osc = audioOscillator (“正弦”1 e3,“SampleRate”fs);

创建一个dsp.AsyncBuffer对象从麦克风获得缓冲数据。

大调的= 5;浅黄色= dsp.AsyncBuffer(大调的* fs);

五秒钟,正弦信号通过你的扬声器和记录使用您的麦克风。音频流的同时,注意报道的响度SPL计。一旦完成,读取缓冲区的内容对象。

numFrames =大调的* (fs / osc.SamplesPerFrame);2 = 1:numFrames audioOut = osc ();deviceWriter (audioOut);audioIn = deviceReader ();写(浅黄色,audioIn);结束SPLreading = 60.4;micRecording =阅读(浅黄色);

计算校正因子的麦克风,使用calibrateMicrophone函数。

calibrationFactor = calibrateMicrophone (micRecording deviceReader.SampleRate SPLreading);

调用acousticLoudness与麦克风录音,采样率和校正因子。响度的报告acousticLoudness是真正的声音响度测量按照532 - 1。

响度= acousticLoudness (micRecording deviceReader.SampleRate calibrationFactor)
响度= 14.7902

你现在可以使用校准系数确定测量任何声音的响度是通过相同的麦克风录音链。

读入一个音频信号。

[audioIn, fs] = audioread (“TrainWhistle-16-44p1-mono-9secs.wav”);

ISO 532 - 1

确定时变特定响度根据默认的方法(ISO 532 - 1)。

[~,specificLoudness] = acousticLoudness (audioIn fs,“TimeVarying”,真正的);

ISO 532 - 1报告特定响度树皮,树皮垃圾箱在哪里0.1:0.1:24。把树皮垃圾箱赫兹,然后画出具体的响度赫兹跨越时间。

barkBins = 0.1:0.1:24;hzBins = bark2hz (barkBins);t = 0:2e-3:2e-3 *(大小(specificLoudness, 1) 1);冲浪(t, hzBins总和(specificLoudness 3)”。“EdgeColor”,的插值函数甘氨胆酸)组(,“YScale”,“日志”)视图(90[0])轴包含(“时间(s)”)ylabel (的频率(赫兹))colorbar标题(“具体的响度(索恩斯/树皮)”)

图包含一个坐标轴对象。坐标轴对象与标题具体响度(索恩斯/树皮)包含一个类型的对象的表面。

ISO 532 - 2

确定固定具体的响度根据Moore-Glasberg方法(ISO 532 - 2)。

[~,specificLoudness] = acousticLoudness (audioIn fs,“方法”,《ISO 532 - 2》);

ISO 532 - 2报告特定的响度ERB规模,ERB垃圾箱在哪里1.8:0.1:38.9。ERB规模的单位有时被称为凸轮。将ERB垃圾箱赫兹,然后画出具体的响度。

erbBins = 1.8:0.1:38.9;hzBins = erb2hz (erbBins);semilogx (hzBins specificLoudness)包含(的频率(赫兹))ylabel (“响度(索恩斯)”)标题(“具体的响度”网格)

图包含一个坐标轴对象。坐标轴对象与标题具体响度包含一个类型的对象。

读入一个音频文件。

[x, fs] = audioread (“WashingMachine-16-44p1-stereo-10secs.wav”);

ISO 532 - 2允许您指定一个定制耳机响应计算响度时。创建一个30-by-2矩阵的第一列是频率和第二列是耳机的偏离平坦响应。

tdh = [0, 80, 100, 200, 500, 574, 660, 758, 871, 1000, 1149, 1320, 1516, 1741, 2000,2297,2639,3031,3482,4000,4500,5000,5743,6598,7579,8706,10000,12000,16000,20000;-50年,-15.3,-13.8,-8.1,-0.5,0.4,0.8,0.9,0.5,0.1,-0.8,-1.5,-2.3,-3.2,-3.9,-4.2,-4.3,-4.3,-3.9,-3.2,-2.3,-1.1,-0.3,2,-5.4,,-12.1,-15.2,-30,-50]。';

计算响度使用ISO 532 - 2。指定SoundField作为耳机和耳机响应矩阵您刚刚创建。

acousticLoudness (x, fs,“方法”,《ISO 532 - 2》,“SoundField”,“耳机”,“EarphoneResponse”tdh)

图包含一个坐标轴对象。坐标轴对象与标题S p e c我f c空白L o u d n e S S空白的空白(i S o空白5 3 2 - 2)包含2线类型的对象,文本。

创建一个dsp.AudioFileReader对象读取音频信号帧。指定一个帧50毫秒时间。这将是你计算静止的响度帧持续时间。

fileReader = dsp.AudioFileReader (“Engine-16-44p1-stereo-20sec.wav”);frameDur = 0.05;fileReader。SamplesPerFrame =圆(fileReader.SampleRate * frameDur);

创建一个audioDeviceWriter对象编写音频默认输出设备。

deviceWriter = audioDeviceWriter (“SampleRate”,fileReader.SampleRate);

创建一个timescope随着时间的推移对象显示静止的响度。

范围= timescope (“SampleRate”1 / frameDur,“YLabel”,“响度(索恩斯)”,“ShowGrid”,真的,“PlotType”,“楼梯”,“TimeSpanSource”,“属性”,“时间间隔”,20岁,“AxesScaling”,“汽车”,“ShowLegend”,真正的);

在一个循环:

  1. 从音频文件读取一帧。

  2. 计算帧的静止的响度。

  3. 通过你的声音输出设备。

  4. 写的响度范围。

~结束(fileReader) audioIn = fileReader ();响度= acousticLoudness (audioIn fileReader.SampleRate);deviceWriter (audioIn);范围(响度)结束发行版(fileReader)发布(deviceWriter)发布(范围)

输入参数

全部折叠

音频输入,指定为一个列向量(mono)或矩阵的两列(立体声)。

数据类型:|

采样率在赫兹,指定为一个积极的标量。推荐的新唱片是48千赫采样率。

请注意

最低可接受的抽样率是8 kHz。

数据类型:|

麦克风校准系数,指定为一个积极的标量。默认的校准系数对应于一个全面1 kHz正弦波100分贝声压级的(SPL)。计算校正因子特定于您的系统使用calibrateMicrophone函数。

数据类型:|

在分贝声压级(SPL),指定为1-by-28-by -C数组或一个1-by-29-by -C数组,根据方法:

  • 如果方法被设置为“ISO 532 - 1”,指定SPLIn作为一个1-by-28-by -C数组,28日对应one-third-octave乐队25 Hz之间和12.5 kHz,和C通道的数量。

  • 如果方法被设置为《ISO 532 - 2》,指定SPLIn作为一个1-by-29-by -C数组,29日对应one-third-octave乐队25 Hz - 16赫兹,和C通道的数量。

对于这两种方法,SPL输入应该与平面测量频率加权(Z-weighting)。

数据类型:|

名称-值参数

指定可选的逗号分隔条名称,值参数。的名字参数名称和吗价值相应的价值。的名字必须出现在引号。您可以指定几个名称和值对参数在任何顺序Name1, Value1,…,的家

例子:acousticLoudness (audioIn fs,“方法”,“ISO 532 - 2”)

响度计算方法,指定为“ISO 532 - 1”[1]《ISO 532 - 2》[2]

请注意

只有在ISO 532 - 1的方法,为每个通道独立输出报告,和平稳信号处理后丢弃到第0.2秒在内部1/3-octave过滤器的输出信号。

数据类型:字符|字符串

输入是时变的,指定为真正的

依赖关系

设置TimeVarying真正的,你必须设置方法“ISO 532 - 1”

数据类型:逻辑

指定的音频录制、声场特征向量或标量字符串。可能的值SoundField依赖于方法:

  • “ISO 532 - 1”- - -“免费”,“扩散”

  • 《ISO 532 - 2》- - -“免费”,“扩散”,的耳膜,“耳机”

数据类型:字符|字符串

耳机的反应,作为一个指定2矩阵包含frequency-amplitude描述耳机的偏离对平坦的响应。中指定的形式是一个ISO 11904 - 1:2002耳机修正文件。指定赫兹的频率在增加订单。指定振幅偏差在分贝。中间值由线性插值计算。给定范围的值设置为最近的frequency-amplitude一对。默认值对应于一个平坦的响应。

依赖关系

指定EarphoneResponse,你必须设置SoundField“耳机”

数据类型:|

参考压力dB计算在帕斯卡,指定为一个积极的标量。默认值,20 micropascals,是空气的共同价值。

依赖关系

PressureReference只是用于时域输入信号。

数据类型:|

百分位数计算百分比响度,指定为一个矢量值的区间[0,100]。默认值,05,对应于N马克斯N5百分位数,分别[1]

百分位响度指的是达到或超过的响度X%的测量时间间隔,X是指定的百分比。

数据类型:|

时间分辨率的输出,指定为一个特征向量或标量字符串。在女士的时间间隔是2“标准”分辨率,或者0.5毫秒“高”决议。默认值是“标准”(符合ISO 532 - 1)。

数据类型:字符|字符串

输出参数

全部折叠

sones响度,作为一个返回K1列向量或K2独立渠道的矩阵。如果TimeVarying被设置为,K等于1。如果TimeVarying被设置为真正的,然后响度计算每2 ms。如果方法被设置为《ISO 532 - 2》,然后响度是用双耳计算模型和总是作为一个返回吗K1列向量。

特定的响度,作为一个返回K由- - - - - - - 240C数组或一个K由- - - - - - - 372C数组中。特定的响度的第一个维度,K的第一个维度相匹配响度。特定的响度的第三个维度,C比赛的第二个维度响度。第二个维度具体的响度取决于方法用来计算响度:

  • 如果方法被设置为“ISO 532 - 1”在树皮sones /报告,然后具体响度规模从0.1到24日,包容,在0.1的增量。

  • 如果方法被设置为《ISO 532 - 2》,那么具体的响度是报道索恩斯/ Cam范围从1.8到38.9),包容,在0.1的增量。

sones百分位响度,作为一个返回p1的向量或p2矩阵。的行数,p,等于的数量百分位数

百分位响度指的是达到或超过的响度X%的测量时间间隔,X是指定的百分比。

依赖关系

百分位数输出论证是有效的前提TimeVarying被设置为真正的。如果TimeVarying被设置为,全氯乙烯输出是空的。

算法

全部折叠

声音的响度和响度级感知属性。由于人与人之间的差异,测量的响度和响度级应考虑统计估计。ISO 532系列指定程序估计响度和响度级被特定的听力条件下给予人类的正常听力的人。

ISO 532 - 1和ISO 532 - 2为响度计算指定两种不同的方法,但让用户选择适当的方法对于一个给定的情况。

ISO 532 - 1:2017 (E) -茨威格的方法

ISO 532 - 1:2017 (E)描述的方法计算声静止和时变信号的响度。

平稳信号

这种方法是基于DIN 45631:1991。方法B算法不同于ISO 532:1975,通过指定对低频率的修正。

音频通过以下阶段:校准水平,转换1/3-Octave SPL,低频降低重要性和功率总和,核心响度水平校正和转换,转换为树皮垃圾箱,传播频率校正,最后集成在特定的响度。

图和提供一个高度概括的步骤序列的方法。有关详细信息,请参见[1]

  1. 根据时域信号电平调整CalibrationFactor。以下步骤算法的假设一个真正的信号电平。

  2. 信号转换为1/3倍频程使用SPL表示小数倍频带过滤。滤波器组由28 25 Hz至12.5千赫之间的过滤器。这个阶段的输出是在dB和标准化的参考压力。

  3. 低频率的1/3倍频程带根据固定权重表功能被弱化。一些低频的乐队组合起来形成一个乐队共有20至关重要的。

  4. 关键乐队的水平修正滤波器带宽和临界乐队水平阈值的安静,然后转化为核心的响度。

  5. 核心响度是映射到树皮垃圾箱。

  6. 频率传播计算用表级和频率相关的斜坡上。

  7. 响度计算积分的具体的响度,考虑到frequency-spreading斜坡。

时变信号

这种方法是基于DIN 45631 / A1:2010,旨在正确模拟duration-dependent简称响度感知冲动的行为。时变的方法听起来是一个泛化的茨威格固定信号的方法。如果广义版本适用于静止的声音,它给相同的响度值作为固定的non-generalized形式的信号。

音频通过以下阶段:校准水平,转换1/3-Octave SPL,过滤的SPL变异,低频降低重要性和功率总和,水平校正和转换核心响度,建模的非线性时间衰变,树皮垃圾箱,频率传播修正,时间加权,最后集成在特定的响度。

图和提供一个高度概括的步骤序列的方法。有关详细信息,请参见[1]

  1. 根据时域信号电平调整CalibrationFactor。以下步骤算法的假设一个真正的信号电平。

  2. 信号转换为1/3倍频程使用SPL表示小数倍频带过滤。滤波器组由28 25 Hz至12.5千赫之间的过滤器。这个阶段的输出是在dB和标准化的参考压力。

  3. SPL乐队一起平滑时间根据band-dependent过滤器。

  4. 低频率的1/3倍频程带根据固定权重表功能被弱化。一些低频的乐队组合起来形成一个乐队共有20至关重要的。

  5. 关键乐队的水平修正滤波器带宽和临界乐队水平阈值的安静,然后转化为核心的响度。

  6. 非线性模拟使用diode-capacitor-resistor网络时间衰变。这个模型陡峭的知觉短信号相比,长信号后下降。

  7. 核心响度是映射到树皮垃圾箱。

  8. 频率传播计算用表级和频率相关的斜坡上。

  9. 时间权重应用于模拟的duration-dependence响度感知。

  10. 响度计算积分的具体的响度,考虑到frequency-spreading斜坡。

ISO 532 - 2:2017 (E) - Moore-Glasberg方法

ISO 532 - 2:2017 (E)描述了一个双耳的声音响度计算模型平稳信号。ISO 523 - 2中的方法不同于那些在ISO 532:1975:它提高了在低频率范围和双耳响度计算每只耳朵模型允许不同的声音。ISO 532 - 2提供了一个很好的匹配的等响度级ISO 226:2003中定义的轮廓,和听力的阈值在ISO 389 - 7:2005中定义。

音频通过水平校准,然后应用于以下阶段每个通道的双耳模型:模型的鼓膜,中耳的模型,然后耳蜗的典范。激发然后映射到特定的响度。最后,渠道结合使用双耳抑制模型,具体的响度是集成的输出音量。

图和提供一个高度概括的步骤序列的方法。有关详细信息,请参见[2]

  1. 根据时域信号电平调整CalibrationFactor。以下步骤算法的假设一个真正的信号电平。

  2. 信号转换为光谱表征。光谱表征转换根据固定过滤器代表声音的传输通过鼓膜(耳膜)。光谱是根据参考压强。

  3. 信号转换使用内耳的典范。传递函数是由一个固定的过滤器中指定的标准。过滤器的选择取决于指定的声场。

  4. 信号转换声谱的基膜的一种激励模式。转换完成使用ERB上的一系列rounded-exponential过滤器传播规模。

  5. 激励模式转换为特定的响度。

  6. 具体响度通过二进制抑制的模型,一个信号在一只耳朵抑制信号的响度诱发另一耳朵。这个阶段的输出是具体响度索恩斯/ ERB。

  7. 特定的响度是集成在ERB规模给索恩斯响度。

引用

[1]ISO 532 - 1:2017 (E)。“音响——响度的工程计算方法——第1部分:茨威格方法。”国际标准化组织

[2]ISO 532 - 2:2017 (E)。“音响——响度的工程计算方法——第2部分:Moore-Glasberg方法。国际标准化组织

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

介绍了R2020a