主要内容

spectralSlope

音频信号和听觉频谱图的频谱斜率

描述

例子

斜坡=光谱坡度(xf返回信号的频谱斜率,x随着时间的推移。函数如何解释x取决于物体的形状f

例子

斜坡=光谱坡度(xf名称、值使用一个或多个指定选项名称、值配对参数。

例子

全部崩溃

读入音频文件,使用默认参数计算斜率,然后绘制结果。

[audioIn,fs]=音频读取(“Counting-16-44p1-mono-15secs.wav”);斜率= spectralSlope (audioIn, fs);t = linspace(0,大小(audioIn 1) / fs,大小(斜率,1));情节(t,斜率)包含(‘时间’)伊拉贝尔(“坡”

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

读入一个音频文件,然后计算mel声谱图使用melSpectrogram函数。计算mel谱图随时间的斜率。策划的结果。

[audioIn,fs]=音频读取(“Counting-16-44p1-mono-15secs.wav”);(年代,cf, t) = melSpectrogram (audioIn fs);斜率= spectralSlope(年代,cf);情节(t,斜率)包含(‘时间’)伊拉贝尔(“坡”

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

读入音频文件。

[audioIn,fs]=音频读取(“Counting-16-44p1-mono-15secs.wav”);

计算震级谱随时间的斜率。计算重叠25 ms的50 ms汉明窗数据的斜率。使用62.5 Hz至fs/2为斜率计算。策划的结果。

斜率= spectralSlope (audioIn fs,...“窗口”汉明(圆(0.05 * fs)),...“OverlapLength”,圆形(0.025*fs),...“范围”,[62.5,fs/2]);t=linspace(0,大小(audioIn,1)/fs,大小(斜率,1));plot(t,斜率)xlabel(‘时间’)伊拉贝尔(“坡”

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

创建一个dsp。AudioFileReader对象以逐帧读取音频数据。创建信号接收器记录光谱斜率计算。

fileReader=dsp.AudioFileReader(“Counting-16-44p1-mono-15secs.wav”);记录器= dsp.SignalSink;

在音频流循环中:

  1. 读入一帧音频数据。

  2. 计算音频帧的谱斜率。

  3. 对光谱斜率进行测井,以便以后绘图。

要仅计算给定输入帧的光谱斜率,请指定与输入具有相同采样数的窗口,并将重叠长度设置为零。绘制记录的数据。

赢得=汉明(fileReader.SamplesPerFrame);虽然~isDone(fileReader) audioIn = fileReader();斜率= spectralSlope (audioIn fileReader。SampleRate,...“窗口”...“OverlapLength”, 0);记录器(坡)结束plot(logger.Buffer)ylabel(“坡”

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

使用异步缓冲器如果

  • 音频流循环的输入每帧有一个可变的采样。

  • 音频流循环的输入与分析窗口的每帧采样数不一致spectralSlope

  • 要计算重叠数据的光谱斜率。

创建一个异步缓冲器对象,重置记录器,然后释放文件读取器。

浅黄色= dsp.AsyncBuffer;重置(logger)释放(fileReader)

指定光谱斜率是为50毫秒帧计算的,帧重叠为25毫秒。

fs=fileReader.SampleRate;samplesPerFrame=round(fs*0.05);samplesOverlap=round(fs*0.025);samplesPerHop=samplesPerFrame-samplesOverlap;win=hamming(samplesPerFrame);虽然~isDone(fileReader) audioIn = fileReader();写(浅黄色,audioIn);虽然buff.numReadSamples>=samplesPerHop audioBuffered=读取(buff,samplesPerFrame,samplesOverlap);斜率=频谱斜率(audioBuffered,fs,...“窗口”...“OverlapLength”, 0);记录器(坡)结束结束发行版(fileReader)

绘制记录的数据。

plot(logger.Buffer)ylabel(“坡”

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

输入参数

全部崩溃

输入信号,指定为向量、矩阵或三维数组。函数如何解释x取决于物体的形状f

数据类型:|双重的

采样率或频率向量,单位为Hz,分别指定为标量或向量。函数如何解释x取决于物体的形状f

  • 如果f是一个标量,x被解释为时域信号,并且f被解释为采样率。在这种情况下,x一定是实向量或实矩阵。如果x指定为一个矩阵,列被解释为单独的通道。

  • 如果f是一个矢量,x被解释为频域信号,并且f被解释为频率,以Hz表示,对应于x.在这种情况下,x一定是真的l-借--借-N数组,l是给定频率下的光谱值的数量f是单个光谱的数目,和N为通道的数量。

  • 的行数xl,必须等于的元素数f

数据类型:|双重的

名称-值参数

指定可选的逗号分隔的对名称、值论据。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值

例子:“窗口”,汉明(256)

请注意

下列名称-值对参数适用于x是时域信号。如果x是频域信号,则忽略名称-值对参数。

应用于时域的窗口,指定为逗号分隔对,由“窗口”一个实向量。向量中的元素个数必须在范围[1,大小(x,1)]。向量中的元素数也必须大于重叠长度

数据类型:|双重的

相邻窗口之间重叠的样本数,指定为逗号分隔对,由“OverlapLength”和一个范围为[0,大小(窗口,1)).

数据类型:|双重的

用于计算窗口化输入样本DFT的容器数,指定为逗号分隔对,包括“FFTLength”和正标量整数。如果未指定,FFTLength默认值为中的元素数窗口

数据类型:|双重的

以Hz为单位的频率范围,指定为逗号分隔对,由“范围”以及在[0]范围内增加实值的两元素行向量,f/ 2)。

数据类型:|双重的

频谱类型,指定为逗号分隔对,由“光谱类型”“权力”“震级”

  • “权力”–计算单侧功率谱的谱斜率。

  • “震级”–为单侧幅度谱计算谱斜率。

数据类型:烧焦|字符串

输出参数

全部崩溃

以Hz为单位的光谱斜率,以标量、向量或矩阵的形式返回。每一行的斜坡对应于光谱窗口的光谱斜率x.每一列的斜坡对应一个独立的通道。

算法

光谱斜率的计算如中所述[1]

斜坡 k b 1 b 2 f k μ f 年代 k μ 年代 k b 1 b 2 f k μ f 2

在哪里

  • fk频率Hz是否对应bink

  • μf为平均频率。

  • 年代k光谱值在bin处吗k

  • μ年代为平均谱值。

  • b1b2是波段边缘,在箱子里,在上面计算光谱斜率。

工具书类

[1] 亚历山大·勒奇。音频内容分析在信号处理和音乐信息学中的应用简介.中国科学(d辑):地球科学(英文版),2012。

扩展功能

C/C++代码生成
使用Matlab®编码器生成C和C++代码™.

GPU数组
通过使用并行计算工具箱在图形处理单元(GPU)上运行来加速代码™.

介绍了R2019a