课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
15分钟

1.2.4 详细实现过程

分帧

把信号分成20-40ms的帧,通常会分成25ms的。如果语音信号的采样频率是16kHz的,那么一帧就有16000*25/1000=400个样本点。通常我们会让相邻的帧有重叠的部分,我们会每次移动10ms(而不是25ms),这就意味着相邻的帧重叠的样本为(25-10)/1000*16000=240个。这样,第一帧是前400个样本点,第二帧是第160个到560个样本点。如果最后一帧不够400个样本点,我们一般在后面补0。

后面的步骤是应用到每一帧上的,从每一帧抽取12个特征。先介绍一些数学记号:s(n)表示时域信号;si(n)是第i帧的数据,其中n的范围是1-400;当我们介绍DFT的时候,Si(k)表示的是第i帧的第k个复系数;Pi(k)是第i帧的功率谱。

对每帧信号进行DFT

S_i(k)=\sum_{n=1}^{N}s_i(n)h(n)e^{-j2\pi kn/N} 1 \le k \le N

其中h(n)是一个N点的窗函数(比如Hamming窗),K是DFT的长度。有了Si(k)我们就可以估计功率谱:

P_i(k)=\frac{1}{N}|S_i(k)|^2

上式得到的是周期图的功率谱估计。通常我们会进行512点的DFT并且保留前257个系数。

计算美尔滤波器组

这是一组大约20-40(通常26)个三角滤波器组,它会对上一步得到的周期图的功率谱估计进行滤波。我们的滤波器组由26个(滤波器)长度为257的向量组成,每个滤波器的257个值中大部分都是0,只有对于需要采集的频率范围才是非零。输入的257点的信号会通过26个滤波器,我们会计算通过每个滤波器的信号的能量。

计算过程如下图所示,最后我们会保留这26个滤波器的能量。图(a)是26个滤波器;图(b)是滤波后的信号;图(c)是其中的第8个滤波器,它只让某一频率范围的信号通过;图(d)通过它的信号的能量;图(e)是第20个滤波器;图(f)是通过它的信号的能量。

图:美尔滤波器组和加窗后的功率谱

能量取log

这一步非常简单,对26个能量取log。

DCT

对这26个点的信号进行DCT,得到26个倒谱系数(Cepstral Coefficents),最后我们保留2-13这12个数字,这12个数字就叫MFCC特征。对功率谱再做DCT的目的就是为了提取信号的包络。