主要内容

幽灵性荨麻疹

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

描述

实例

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

实例

峰度= spectralKurtosis (x,F,名称、值)指定使用一个或多个选项的选项名称、值对参数。

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

例子

全部折叠

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

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

图中包含一个坐标轴。轴包含一个线型对象。

读入音频文件,然后使用光谱图作用计算mel谱图随时间的峰度。绘制结果。

[audioIn, fs] = audioread (“计数-16-44p1-mono-15秒波形”);[s,cf,t]=频谱图(音频输入,fs);峭度=频谱性荨麻疹(s,cf);曲线图(t,峭度)xlabel(“时间(s)”) ylabel (“峰度”)

图中包含一个坐标轴。轴包含一个线型对象。

读入音频文件。

[audioIn, fs] = audioread (“计数-16-44p1-mono-15秒波形”);

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

峰度= spectralKurtosis (audioIn fs,...“窗口”,汉明(圆形(0.05*fs)),...“重叠长度”,圆形(0.025*fs),...“范围”,[62.5,fs/2]);t=linspace(0,大小(audioIn,1)/fs,大小(峰度,1));plot(t,峰度)xlabel(“时间(s)”) ylabel (“峰度”)

图中包含一个坐标轴。轴包含一个线型对象。

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

fileReader=dsp.AudioFileReader(“计数-16-44p1-mono-15秒波形”);记录器=dsp.SignalSink;

在音频流循环中:

  1. 读入一帧音频数据。

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

  3. 记录光谱峰度,以便以后绘制。

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

win=hamming(fileReader.sampleperframe);~isDone(fileReader) audioIn = fileReader();峰度= spectralKurtosis (audioIn fileReader。SampleRate,...“窗口”,赢了,...“重叠长度”, 0);记录器(峰态)终止情节(logger.Buffer) ylabel (“峰度”)

图中包含一个坐标轴。轴包含一个线型对象。

使用异步缓冲器如果

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

  • 输入到你的音频流循环有一个不一致的采样每帧与分析窗口幽灵性荨麻疹

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

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

buff=dsp.AsyncBuffer;重置(记录器)释放(文件读取器)

指定为重叠25 ms的50 ms帧计算光谱峰度。

fs = fileReader.SampleRate;samplesPerFrame =圆(fs * 0.05);samplesOverlap =圆(fs * 0.025);samplesPerHop = samplesPerFrame - samplesOverlap;赢得=汉明(samplesPerFrame);~isDone(fileReader)audioIn=fileReader();写入(buff,audioIn);迷。NumUnreadSamples >= samplesPerHop audioBuffered = read(buff,samplesPerFrame,samplesOverlap); kurtosis = spectralKurtosis(audioBuffered,fs,...“窗口”,赢了,...“重叠长度”, 0);记录器(峰态)终止终止发布(文件阅读器)

绘制记录的数据。

情节(logger.Buffer) ylabel (“峰度”)

图中包含一个坐标轴。轴包含一个线型对象。

输入参数

全部折叠

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

数据类型:仅有一个的|

以Hz为单位的采样率或频率矢量,分别指定为标量或矢量。函数如何解释x取决于形状F:

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

  • 如果F是一个向量,x被解释为频域信号,并且F被解释为频率,单位为Hz,对应于x.在这种情况下,x一定是真的L——- - - - - -M——- - - - - -N数组,在哪里L在给定频率的谱值的数目是多少F,M是个别光谱的数量,和N是通道数。

  • 表的行数x,L,必须等于F

数据类型:仅有一个的|

名称-值对的观点

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

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

笔记

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

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

数据类型:仅有一个的|

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

数据类型:仅有一个的|

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

数据类型:仅有一个的|

频率范围(以Hz为单位),指定为逗号分隔对,包括“范围”一个两元素的行向量在[0,F/2].

数据类型:仅有一个的|

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

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

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

数据类型:字符|一串

输出参数

全部折叠

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

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

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

算法

谱峰度的计算方法如[1]:

峰度 = K = B 1. B 2. ( F K μ 1. ) 4. s K ( μ 2. ) 4. K = B 1. B 2. s K

哪里

  • FK是对应于bin的频率,单位为HzK

  • sK是bin处的光谱值K

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

  • μ1.谱的质心,是由描述的光谱熵作用

  • μ2.是频谱扩展,按照以下公式计算:spectralSpread作用

参考文献

[1]彼得斯,G。“在CUIDADO项目中,用于声音描述(相似性和分类)的大量音频功能集。”技术报告;法国巴黎,2004年。

扩展能力

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

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

在R2019a中引入