主要内容

spectralRolloffPoint

音频信号和听觉谱图的谱滚点

自从R2019a

描述

例子

rolloffPoint= spectralRolloffPoint (xf返回信号的频谱滚降点,x,随着时间的推移。函数是如何解释的x取决于形状f

例子

rolloffPoint= spectralRolloffPoint (xf名称=值使用一个或多个名称-值参数指定选项。

例子

spectralRolloffPoint (___在没有输出参数的情况下绘制频谱滚降点。您可以从前面的任何语法中指定输入组合。

  • 如果输入在时域内,则频谱滚降点随时间绘制。

  • 如果输入在频域中,则根据帧数绘制频谱滚降点。

例子

全部折叠

读入音频文件。使用默认参数计算滚转点。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);rolloffPoint = spectralRolloffPoint(audioIn,fs);

绘制随时间变化的频谱滚降点。

spectralRolloffPoint (audioIn fs)

图包含一个轴对象。具有xlabel Time (s), ylabel Rolloff Point (Hz)的axes对象包含一个类型为line的对象。

读入音频文件,然后使用melSpectrogram函数。计算mel谱图随时间的滚落点。

[audioIn,fs] = audioread(“Counting-16-44p1-mono-15secs.wav”);[s,cf,t] = melSpectrogram(audioIn,fs);rolloffPoint = spectralRolloffPoint(s,cf);

根据帧数绘制频谱滚降点。

spectralRolloffPoint(年代,cf)

图包含一个轴对象。带有xlabel Frame, ylabel Rolloff Point (Hz)的axes对象包含一个类型为line的对象。

读入音频文件。

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

计算功率谱随时间的滚降点。计算重叠25毫秒的数据的50毫秒汉明窗口的滚落点。使用62.5 Hz到fs/2为滚落点计算。

rolloffPoint = spectralRolloffPoint(audioIn,fs,窗口=汉明(圆(0.05 * fs)),OverlapLength = (0.025 * fs),范围= [62.5,f / 2]);

绘制随时间变化的频谱滚降点。

spectralRolloffPoint (audioIn fs,窗口=汉明(圆(0.05 * fs)),OverlapLength = (0.025 * fs),范围= (62.5,f / 2))

图包含一个轴对象。具有xlabel Time (s), ylabel Rolloff Point (Hz)的axes对象包含一个类型为line的对象。

创建一个dsp。AudioFileReader对象以逐帧读取音频数据。创建一个dsp。SignalSink记录谱滚降点计算。

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

在音频流循环中:

  1. 读入一帧音频数据。

  2. 计算音频帧的频谱滚降点。

  3. 记录频谱滚降点,以便以后绘图。

为了只计算给定输入帧的频谱滚降点,指定一个与输入帧具有相同采样数的窗口,并将重叠长度设置为零。绘制记录的数据。

win = hamming(fileReader.SamplesPerFrame);~isDone(fileReader) audioIn = fileReader();rolloffPoint = spectralRolloffPoint(audioIn,fileReader。SampleRate,“窗口”,赢了,“OverlapLength”, 0);记录器(rolloffPoint)结束情节(logger.Buffer) ylabel (“滚动点(赫兹)”

图包含一个轴对象。带有ylabel滚动点(Hz)的坐标轴对象包含一个类型为line的对象。

使用dsp。AsyncBuffer如果

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

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

  • 您需要计算重叠数据的频谱滚降点。

创建一个dsp。AsyncBuffer对象,重置记录器,并释放文件读取器。

buff = 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);迷。NumUnreadSamples >= samplesPerHop audioBuffered = read(buff,samplesPerFrame,samplesOverlap); rolloffPoint = spectralRolloffPoint(audioBuffered,fs,“窗口”,赢了,“OverlapLength”, 0);记录器(rolloffPoint)结束结束发行版(fileReader)

绘制记录的数据。

情节(logger.Buffer) ylabel (“滚动点(赫兹)”

图包含一个轴对象。带有ylabel滚动点(Hz)的坐标轴对象包含一个类型为line的对象。

输入参数

全部折叠

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

数据类型:|

采样率或频率矢量,单位为Hz,分别用标量或矢量表示。函数是如何解释的x取决于形状f

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

  • 如果f是一个向量,x被解释为频域信号,然后f被解释为频率,单位为Hz,对应于x。在这种情况下,x一定是真的l——- - - - - -——- - - - - -N数组,l给定频率下的频谱值的个数是f是个别光谱的数目,和N是通道数。

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

数据类型:|

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字在报价。

例子:窗口=汉明(256)

滚转点的阈值,指定为0到1之间的标量,不互斥。

数据类型:|

请注意

下面的名称-值参数适用于ifx是一个时域信号。如果x是频域信号,名称-值参数将被忽略。

窗口应用于时域,指定为实向量。vector中的元素个数必须在[1,大小(x, 1)]。vector中元素的个数也必须大于OverlapLength

数据类型:|

相邻窗口之间重叠的样本数,指定为[0,大小(窗口, 1)).

数据类型:|

用于计算带窗输入样本的DFT的箱数,指定为正标量整数。如果未指定的,FFTLength的元素个数窗口

数据类型:|

以Hz为单位的频率范围,表示为在[0,f/ 2)。

数据类型:|

频谱类型,指定为“权力”“级”

  • “权力”—计算单侧功率谱的频谱滚降点。

  • “级”—计算单侧星等谱的谱滚点。

数据类型:字符|字符串

输出参数

全部折叠

以Hz为单位的频谱滚降点,作为标量、矢量或矩阵返回。每一行rolloffPoint对应于的窗口的频谱滚降点x。的每一列rolloffPoint对应于一个独立的通道。

算法

频谱滚降点的计算方法见[1]

rolloffPoint =

这样

k = b 1 年代 k = κ k = b 1 b 2 年代 k

在哪里

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

  • b1b2是带的边缘,在箱子中,在其上计算频谱扩展。

  • κ总能量的百分比是否包含在两者之间b1。你可以设置κ使用阈值

参考文献

[10] Scheirer, E.和M. Slaney,“鲁棒多特征语音/音乐鉴别器的构建和评价”,IEEE声学、语音和信号处理国际会议。1997年第2卷,第1221-1224页。

扩展功能

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

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

版本历史

在R2019a中引入