MFCC特征提取学习笔记

MFCC特征提取学习笔记


做毕设的过程中接触到了语音识别,对MFCC特征提取的步骤有一些粗浅的理解,如有理解错误的地方,请前辈们指出。

  1. 预加重
    由于人在发声的过程中存在唇端辐射,会造成语音的高频信号比中频和低频信号弱。预加重的目的就是突出语音信号中高频部分的能量。预加重通过一个高通滤波器实现: H(z)=1μz1H(z) = 1 - \mu z^{-1} μ\mu称作预加重系数,可以取0.9~1之间的值。
    高通滤波器可以使高于某一值的信号通过,而使低于临界值的信号被削弱或者阻隔,所以它最终的效果不仅突出了语音信号的高频部分,还提升了语音信号的信噪比。预加重前后的波形图中振幅得到突出的部分就是语音信号的高频部分,同时语音的背景噪声也得到了削弱。
    MFCC特征提取学习笔记
  2. 分帧
    分帧是为了利用语音信号的短时平稳性,即假设语音信号在足够短的时间内是平稳的。这里的图是取帧长25毫秒,帧移10毫秒进行分帧的结果图。帧长是指每一帧的长度,帧移是相邻帧起始点的间隔。这里帧与帧之间的重叠为15毫秒,超过了帧长的一半。

MFCC特征提取学习笔记
3. 加窗
由于下一步是快速傅里叶变换,而快速傅里叶变换要求信号具有周期性。分帧得到的信号首尾不连续,所以通过汉明窗(汉明窗可以使窗边界处信号平滑衰减)使信号首尾连续,可以被视作一个周期性的信号。由于信号首尾衰减意味着信息的丢失,分帧时帧与帧之间的重叠超过帧长的一半是为了弥补这一部分的信息损失。
汉明窗函数:ω(x)={0.540.46cos(2πnN1)0nN11others\omega(x) = \begin{cases} 0.54-0.46 \cos(\frac{2\pi n}{N-1})&0\leq n \leq N-1\\1&\text{others}\end{cases}
MFCC特征提取学习笔记
4. 快速傅里叶变换
快速傅里叶变换是将语音信号由时域转化为频域:Si(k)=n=1Nsi(n)ω(n)ej2πknN,0kKS_i(k) = \sum_{n=1}^N s_i(n)\omega(n) e^{\frac{-j2\pi kn}{N}},0\le k \le K 快速傅里叶变换后得到的是语音信号由哪些频率、多大振幅的正弦波构成。下图中右边的图像横轴代表0Hz到257Hz的正弦波,纵轴为振幅。
MFCC特征提取学习笔记
5. Mel滤波
Mel滤波是为了模拟人耳的收声效果,人耳对于低频的声音敏感,对于高频的声音辨别能力弱一些,所以需要滤波器在低频处密集在高频处稀疏。Mel滤波器组通常由20~40个三角带通滤波器构成。三角带通滤波器:Hm(k)={0k<f(m1)kf(m1)f(m)f(m1)f(m1)k<f(m)1k=f(m)f(m+1)kf(m+1)f(m)f(m)<kf(m+1)0k>f(m+1)H_m(k) = \begin{cases} 0&k<f(m-1)\\ \frac{k-f(m-1)}{f(m)-f(m-1)}&f(m-1)\le k<f(m)\\1&k=f(m)\\ \frac{f(m+1)-k}{f(m+1)-f(m)}&f(m)<k \le f(m+1)\\0&k>f(m+1)\end{cases}其中f(m)f(m)表示第mm个滤波器的中心频率。
普通频率转化为Mel频率:mel(f)=2595×log10(1+f700)mel(f) =2595\times \log_{10 }(1+\frac{f}{700}) 当三角带通滤波器中心频率在Mel频率上取等差数列时,其在普通频率上满足“在低频处密集,在高频处稀疏”。
MFCC特征提取学习笔记
6. 离散余弦变换
离散余弦变换后就可以得到MFCC系数:C(n)=m=0N1s(m)cosπn(m0.5)M,n=1,2,...,LC(n) = \sum_{m=0}^{N-1}s(m)\cos\frac{\pi n(m-0.5)}{M},n=1,2,...,L其中,MM是三角带通滤波器个数,NN为对数能量(对Mel滤波的结果取对数就得到对数能量)点数,s(M)s(M)是对数能量,LL是MFCC系数阶数。

参考:http://practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/