主要内容

acousticFluctuation

波动强度的声波信号

描述

例子

波动= acousticFluctuation (audioIn,fs)回报波动强度vacil基于茨威格等。[1]和ISO 532 - 1时变响度[2]

例子

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

例子

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

例子

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

例子:波动= acousticFluctuation (audioIn、fs“SoundField”,“扩散”)回报波动假设扩散声场。

(波动,specificFluctuation)= acousticFluctuation (___)还返回特定的波动力量。

(波动,specificFluctuation,在你)= acousticFluctuation (___)还返回占主导地位的调制频率。

例子

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

例子

全部折叠

测量声波波动基于茨威格等[2]ISO 532 - 1[1]。假设被校准的记录水平1 kHz语气登记作为一个SPL计100分贝。

[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);

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

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

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

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

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

再次执行实验,这一次,添加100%的调幅4赫兹。要创建调制信号,使用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);2 = 1:numFrames audioOut = osc()。*国防部();deviceWriter (audioOut);audioIn = deviceReader ();写(浅黄色,audioIn);结束micRecording =阅读(浅黄色);

调用acousticFluctuation与麦克风录音,采样率和校正因子。从报告的波动acousticFluctuation使用真实的声音响度测量按照532 - 1。在5秒内显示的平均波动强度。

波动= acousticFluctuation (micRecording deviceReader.SampleRate calibrationFactor);流(的平均波动= % d (vacil) ',意味着(波动(501:最终,:)))
平均波动= 1.413824 e + 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”,真正的)

图包含一个坐标轴对象。坐标轴对象与标题时变清晰度(DIN 45692)包含2线类型的对象。这些对象代表通道,通道2。

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

acousticFluctuation (specificLoudness)

图包含2轴subplottext类型的对象和另一个对象。坐标轴对象1标题f M o d空白={空白空白2 4。8 8,空白2 4。8 8空白}空白H z包含2线类型的对象。这些对象代表通道,通道2。坐标轴对象2包含一个类型的对象的表面。

生成一个纯质的音调与1500赫兹中心频率和大约700赫兹频率偏差在0.25赫兹的调制频率。

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年,“桠溪”)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的形象。

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

acousticFluctuation (audioIn fs);

图包含2轴subplottext类型的对象和另一个对象。坐标轴对象1标题f M o d空白= 0。2 5空白H z包含一个类型的对象。坐标轴对象2包含一个类型的对象的表面。

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 = [];~结束(fileReader) x = fileReader ();testSignal = [testSignal; osc ()。* fileReader ()];结束

听两秒的测试信号波形和情节。

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

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。

绘制声波动。的检测频率调制显示文本。

acousticFluctuation (testSignal fileReader.SampleRate);

图包含2轴subplottext类型的对象和另一个对象。坐标轴对象1标题f M o d空白空白= {1 0。8 0,空白1 0。8 0空白}空白H z包含2线类型的对象。这些对象代表通道,通道2。坐标轴对象2包含一个类型的对象的表面。

指定已知的调制频率,然后画出声波波动了。

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

图包含2轴subplottext类型的对象和另一个对象。坐标轴对象1标题f M o d空白空白= {1 0。8 0,空白1 0。8 0空白}空白H z包含2线类型的对象。这些对象代表通道,通道2。坐标轴对象2包含一个类型的对象的表面。

输入参数

全部折叠

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

提示

测量给出任何波动强度的调制频率,推荐的最小信号持续时间是10秒。

数据类型:|

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

请注意

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

数据类型:|

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

数据类型:|

具体响度索恩斯/树皮,指定为一个T由- - - - - - - 240C数组,地点:

  • T每2女士是一个时变的信号。

  • 240是树皮垃圾箱的数量的域特定的响度。树皮箱子是0.1:0.1:24

  • C通道的数量。

您可以使用acousticLoudness函数计算时变特定响度使用这种语法:

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

数据类型:|

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

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

已知调制频率在赫兹,指定“自动检测”或作为一个标量或双元素向量和值的范围[0.1,100]。如果ModulationFrequency被设置为“自动检测”,那么函数限制搜索范围在0.2和64赫兹之间。如果输入是mono,调制频率必须指定为一个标量。如果输入是立体声,调制频率可以指定一个标量或双元素向量。

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

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

数据类型:字符|字符串

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

数据类型:|

输出参数

全部折叠

在vacil波动强度,作为一个返回K1列向量或K2独立渠道的矩阵。K对应于时间维度。

数据类型:|

特定的波动强度vacil /树皮,作为一个返回K在47矩阵或K-by-47-by-2数组。的第一个维度specificFluctation,K,对应于时间维度和匹配的第一个维度波动。第二维度specificFluctation47岁的对应于树皮规模的乐队,中心从0.5到23.5,包容,在0.5的增量。第三维度specificFluctation对应通道的数量和匹配的第二个维度波动

数据类型:|

在赫兹占主导地位的调制频率,作为一个标量返回为单声道输入或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,它是自动peak-picking的频域表示声音响度。感知到的调制深度,Δl,通过修正计算具体的响度乐队通过围绕½八度过滤器f国防部,紧随其后的是一个低通滤波器来确定信封。

引用

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

[2]茨威格,埃伯哈德和h . Fastl。心理声学:事实和模型。2日更新,施普林格,1999年。

扩展功能

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

版本历史

介绍了R2020b