主要内容

spectralKurtosis

音频信号和听觉谱图的谱峰度

描述

例子

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

例子

峰度= spectralKurtosis (xf名称,值使用一个或多个指定选项名称,值对参数。

峰度传播重心) = spectralKurtosis (___返回光谱扩展和光谱质心。

例子

全部折叠

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

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);峰度= spectralKurtosis (audioIn, fs);t = linspace(0,大小(audioIn 1) / fs,大小(峰度,1));情节(t,峰态)包含(“时间(s)”) ylabel (“峰度”

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

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

[audioIn, fs] = audioread (“Counting-16-44p1-mono-15secs.wav”);(年代,cf, t) = melSpectrogram (audioIn fs);峰度= spectralKurtosis(年代,cf);情节(t,峰态)包含(“时间(s)”) ylabel (“峰度”

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

读入音频文件。

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

计算功率谱随时间的峰度。计算重叠时间为25 ms的50 ms汉明窗数据的峰度。使用范围从62.5 Hz到fs/2为峰度计算。策划的结果。

峰度= spectralKurtosis (audioIn fs,...“窗口”汉明(圆(0.05 * fs)),...“OverlapLength”而圆(0.025 * fs),...“范围”, 62.5, f / 2);t = linspace(0,大小(audioIn 1) / fs,大小(峰度,1));情节(t,峰态)包含(“时间(s)”) ylabel (“峰度”

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

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

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

在音频流循环中:

  1. 读入一帧音频数据。

  2. 计算音频帧的谱峰度。

  3. 记录谱峰度,以便日后绘图。

要计算给定输入帧的谱峰度,指定一个与输入帧样本数相同的窗口,并将重叠长度设为零。绘制记录的数据。

赢得=汉明(fileReader.SamplesPerFrame);~isDone(fileReader) audioIn = fileReader();峰度= spectralKurtosis (audioIn fileReader。SampleRate,...“窗口”,赢了,...“OverlapLength”, 0);记录器(峰态)结束情节(logger.Buffer) ylabel (“峰度”

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

使用dsp。AsyncBuffer如果

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

  • 输入到你的音频流循环有一个不一致的采样每帧与分析窗口spectralKurtosis

  • 你想要计算重叠数据的谱峰度。

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

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

指定光谱峰度计算为50毫秒帧25毫秒重叠。

fs = fileReader.SampleRate;samplesPerFrame =圆(fs * 0.05);samplesOverlap =圆(fs * 0.025);samplesPerHop = samplesPerFrame - samplesOverlap;赢得=汉明(samplesPerFrame);~isDone(fileReader) audioIn = fileReader();写(浅黄色,audioIn);迷。NumUnreadSamples >= samplesPerHop audioBuffered = read(buff,samplesPerFrame,samplesOverlap); kurtosis = spectralKurtosis(audioBuffered,fs,...“窗口”,赢了,...“OverlapLength”, 0);记录器(峰态)结束结束发行版(fileReader)

绘制记录的数据。

情节(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

数据类型:|

名称-值参数

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

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

请注意

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

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

数据类型:|

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

数据类型:|

用于计算加窗输入样本DFT的箱数,指定为逗号分隔对,由“FFTLength”一个正的标量整数。如果未指定的,FFTLength属性中的元素数量默认为窗口

数据类型:|

以Hz为单位的频率范围,指定为逗号分隔对,由“范围”一个两元素的行向量在[0,f/ 2)。

数据类型:|

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

  • “权力”——计算单边功率谱的谱峰度。

  • “级”——谱峰度计算为单边幅值谱。

数据类型:字符|字符串

输出参数

全部折叠

谱峰度,以标量、矢量或矩阵返回。每一行的峰度对应于窗口的谱峰度x.每一列的峰度对应一个独立的通道。

光谱分布,以标量、矢量或矩阵的形式返回。每一行的传播对应于窗口的光谱扩展x.每一列的传播对应一个独立的通道。

以Hz表示的谱心,返回为标量、矢量或矩阵。每一行的重心对应于窗口的谱心x.每一列的重心对应一个独立的通道。

算法

光谱峰度的计算如中所述[1]

峰度 k b 1 b 2 f k μ 1 4 年代 k μ 2 4 k b 1 b 2 年代 k

在哪里

  • fk频率Hz是否对应bink

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

  • b1b2是带边,在箱子里,在上面计算光谱偏度。

  • μ1谱的质心,是由描述的spectralCentroid函数。

  • μ2谱扩散,是由描述的spectralSpread函数。

工具书类

[1] Peeters,G.“CUIDADO项目中用于声音描述(相似性和分类)的大量音频特征”,技术报告;IRCAM:巴黎,法国,2004年。

扩展功能

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

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

介绍了R2019a