主要内容

acousticFluctuation

声信号的感知波动强度

描述

例子

波动= acousticFluctuation (audioInfs根据Zwicker等人在vacil中返回波动强度。[1]ISO 532-1时变响度[2]

例子

波动= acousticFluctuation (audioInfscalibrationFactor指定用于计算响度的非默认麦克风校准因子。

例子

波动= acousticFluctuation (specificLoudnessIn使用时变的特定响度计算波动。

例子

波动= acousticFluctuation (___名称,值使用一个或多个指定选项名称,值对参数。

例子:波动= acousticFluctuation (audioIn、fs“SoundField”,“扩散”)假设一个弥漫性声场返回波动。

波动specificFluctuation) = acousticFluctuation (___也回报特定的波动强度。

波动specificFluctuation在你) = acousticFluctuation (___也返回主导调制频率。

例子

acousticFluctuation (___如果没有输出参数,绘制波动强度和特定的波动强度,并以文本形式显示调制频率。如果输入是立体声,则三维图显示两个通道的和。

例子

全部折叠

基于Zwicker等人的声学波动测量[2]ISO 532 - 1[1].假设记录电平经过校准,使1 kHz的音调在声压级计上注册为100 dB。

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

如图所示进行一个实验。

创建一个audioDeviceReader对象从麦克风和一个audioDeviceWriter我反对给你的发言人写信。

fs = 48 e3;deviceReader = audioDeviceReader (fs,“SamplesPerFrame”, 2048);deviceWriter = audioDeviceWriter (fs);

创建一个audioOscillator对象产生1 kHz的正弦信号。

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

创建一个dsp。AsyncBuffer对象以缓冲从麦克风获取的数据。

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

用5秒钟,通过扬声器播放正弦信号,用麦克风录音。当音频流时,注意您的声压计报告的响度。一旦完成,读取缓冲区对象的内容。

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

要计算麦克风的校准系数,请使用calibrateMicrophone函数。

calibrationFactor = calibrateMicrophone (micRecording (fs + 1:,:), deviceReader.SampleRate, SPLreading);

您现在可以使用您确定的校准因子来测量通过同一麦克风录音链获得的任何声音的波动。

再次进行实验,这次,在4hz下添加100%的振幅调制。要产生调制信号,请使用audioOscillator并指定振幅为0.5和直流偏置为0.5在0和1之间振荡。

mod = audioOscillator (“正弦”4“SampleRate”fs,...“振幅”, 0.5,“DCOffset”, 0.5,“SamplesPerFrame”, 2048);大调的= 5;浅黄色= dsp.AsyncBuffer(大调的* fs);numFrames =大调的* (fs / osc.SamplesPerFrame);ii = 1:numFrames audioOut = osc().*mod();deviceWriter (audioOut);audioIn = deviceReader ();写(浅黄色,audioIn);结束micRecording =阅读(浅黄色);

调用acousticFluctuation具有麦克风记录、采样率和校准因子。来自acousticFluctuation使用532-1规定的真实声学响度测量。显示5秒内的平均波动强度。

波动= acousticFluctuation (micRecording deviceReader.SampleRate calibrationFactor);流('平均波动= %d (vacil)',意味着(波动(501:最终,:)))
平均波动= 1.413824e+00 (vacil)
acousticFluctuation (micRecording deviceReader.SampleRate calibrationFactor)

读入音频文件。

[audioIn, fs] = audioread (“Engine-16-44p1-stereo-20sec.wav”);

调用acousticLoudness来计算具体的响度。

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

调用acousticSharpness没有任何输出来绘制声音清晰度。

acousticSharpness (specificLoudness“TimeVarying”,真正的)

图中包含一个轴对象。标题为“时变锐度”(din45692)的轴对象包含2个类型线对象。这些对象表示通道1和通道2。

调用acousticFluctuation没有任何输出来绘制声音波动。

acousticFluctuation (specificLoudness)

图中包含2个轴对象和另一个subplottext类型的对象。轴对象1与标题f M o d blank =空白{空白2 4。8、空格2、空格4、空格8 8 blank} blank H z包含2个line类型的对象。这些对象表示通道1和通道2。axis对象2包含一个类型为surface的对象。

在0.25 Hz的调制频率下,产生中心频率为1500hz,频率偏差约为700hz的纯音。

fs = 48 e3;你=0.25;大调的=20.;numSamples = f大调的*;t = (0: numSamples-1) / fs;语气=罪(2 *π* t *作用)';fc =1500;excursionRatio =0.47;游览= 2 *π* (fc * excursionRatio / fs);audioIn =调节(语气,fc、fs、“调频”,游览);

听前5秒的音频并绘制声谱图。

声音(audioIn (1:5 * fs), fs)谱图(audioIn (1:5 * fs),损害(512年“周期”fs), 256年,1024年,“桠溪”

图中包含一个轴对象。axis对象包含一个image类型的对象。

调用acousticFluctuation没有输出参数来绘制声波动强度。

acousticFluctuation (audioIn fs);

图中包含2个轴对象和另一个subplottext类型的对象。轴对象1与标题f M o d空白=空白0。空白的H z包含一个类型为line的对象。axis对象2包含一个类型为surface的对象。

acousticFluctuation命令功能指定一个已知的波动频率。如果您不指定一个已知的波动频率,该功能将自动检测波动。

创建一个dsp。AudioFileReader对象以逐帧读取音频信号。创建一个audioOscillator对象来创建调制波。将调制波应用于音频文件。

fileReader = dsp。AudioFileReader (“Engine-16-44p1-stereo-20sec.wav”);你=10.8;振幅=0.15;osc = audioOscillator (的正弦作用,...“DCOffset”, 0.5,...“振幅”振幅,...“SampleRate”, fileReader。SampleRate,...“SamplesPerFrame”, fileReader.SamplesPerFrame);testSignal = [];~isDone(fileReader) x = fileReader();testSignal = [testSignal; osc()。* fileReader ()];结束

听两秒钟的测试信号并绘制其波形。

samplesToView = 1:2 * fileReader.SampleRate;声音(testSignal (samplesToView:), fileReader.SampleRate);情节(samplesToView / fileReader.SampleRate testSignal (samplesToView,:))包含(“时间(s)”

图中包含一个轴对象。轴对象包含两个类型为line的对象。

画出声波波动图。检测到的调制频率以文本形式显示。

acousticFluctuation (testSignal fileReader.SampleRate);

图中包含2个轴对象和另一个subplottext类型的对象。轴对象1与标题f M o d blank =空白{空白1 0。8 0,空白10 0。包含2个类型为line的对象。这些对象表示通道1和通道2。axis对象2包含一个类型为surface的对象。

指定已知的调制频率,然后再次绘制声波波动图。

acousticFluctuation (testSignal fileReader。SampleRate,“ModulationFrequency”,在你)

图中包含2个轴对象和另一个subplottext类型的对象。轴对象1与标题f M o d blank =空白{空白1 0。8 0,空白10 0。包含2个类型为line的对象。这些对象表示通道1和通道2。axis对象2包含一个类型为surface的对象。

输入参数

全部折叠

音频输入,指定为列向量(单声道)或两列矩阵(立体声)。

提示

要测量给定任何调制频率的波动强度,建议的最小信号持续时间为10秒。

数据类型:|

采样率(Hz),指定为正标量。新录音的推荐采样率为48 kHz。

请注意

最小可接受的采样率是8千赫。

数据类型:|

传声器校准因子,指定为正标量。默认的校准因子对应于1 kHz正弦波,声压级为100 dB (SPL)。要计算特定于您的系统的校准因子,请使用calibrateMicrophone函数。

数据类型:|

在声/吠中特定的响度,指定为aT由- - - - - - - 240C数组,地点:

  • T是每2毫秒一个时变信号。

  • 240是特定响度域内Bark bins的数量。树皮箱0.1:0.1:24

  • C为通道的数量。

你可以使用acousticLoudness函数使用以下语法计算时变的特定响度:

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

数据类型:|

名称-值参数

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:acousticFluctuation (fs, audioIn ModulationFrequency, 50)

已知的调制频率(Hz),指定其中之一“自动检测”或者是值在范围内的标量或二元素向量[0.1,100].如果ModulationFrequency被设置为“自动检测”,则函数将搜索范围限制在0.2 ~ 64 Hz之间。如果输入是单声道,则调制频率必须指定为标量。如果输入是立体声的,则调制频率可以指定为标量或二元矢量。

数据类型:||字符|字符串

录音的声场,指定为“免费”“扩散”

数据类型:字符|字符串

dB计算时的参考压力,单位为帕斯卡,指定为正标量。默认值为20微帕斯卡,为空气的通用值。

数据类型:|

输出参数

全部折叠

波动性强在vacil,返为aK-乘1列向量K独立通道的- × 2矩阵。K对应于时间维度。

数据类型:|

具体波动强度在vacil/Bark,返回为aK- × 47矩阵K-by-47-by-2数组。的第一个维度specificFluctationK,对应于时间维度,并与的第一个维度相匹配波动.第二个维度specificFluctation, 47,对应于Bark尺度上的波段,中心从0.5到23.5,包括在内,以0.5的增量。第三维度specificFluctation对应于通道的数量,并匹配的第二个维度波动

数据类型:|

以Hz为单位的主导调制频率,对于单声道输入返回为标量,对于立体声输入返回为1 × 2向量。

数据类型:|

算法

声波动强度是对振幅或频率慢调制的感知测量。声响度算法描述在[1]并在acousticLoudness函数。声波动的计算描述在[2].关于声波动的算法概述如下。

f l u c t u 一个 t o n 0.008 z 0 24 Δ l d z f 国防部 4 + 4 f 国防部

在哪里f国防部是否检测到或知道调制频率和Δl为感知的调制深度。如果呼叫时未指定调制频率acousticFluctuation,它是通过拾取声音响度的频域表示的峰值来自动检测的。感知的调制深度,Δl,是通过校正后的特定响度频带通过围绕它的½倍频程滤波器来计算的f国防部,然后用低通滤波器来确定包络线。

参考文献

[1] ISO 532 - 1:2017 (E)。声学。响度计算方法。第1部分:兹威克法国际标准化组织

Zwicker, Eberhard和H. Fastl。心理声学:事实与模型.第二次更新,施普林格,1999。

扩展功能

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

介绍了R2020b