主要内容

spectralRolloffPoint

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

描述

例子

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)

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

读取一个音频文件,然后计算mel谱图使用melSpectrogram函数。计算mel谱图随时间变化的偏移点。

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

绘制光谱滚动点与帧数的关系。

spectralRolloffPoint(年代,cf)

图中包含一个axes对象。axis对象包含一个类型为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))

图中包含一个axes对象。axis对象包含一个类型为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 (“滚落点(Hz)”

图中包含一个axes对象。axis对象包含一个类型为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 (“滚落点(Hz)”

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

输入参数

全部折叠

输入信号,指定为矢量、矩阵或3-D数组。函数如何解释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之间的标量,互斥。

数据类型:|

请注意

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

窗口应用于时域,指定为实向量。向量中的元素个数必须在[1,大小(x, 1)].向量中的元素数量也必须大于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

  • b1而且b2是带边,在箱子里,在上面计算光谱扩展。

  • κ是总能量的百分比包含之间b1而且.你可以设置κ使用阈值

参考文献

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

扩展功能

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

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

版本历史

在R2019a中引入