一、MFCC计算总体流程
1.信号的预处理,包括预加重(Preemphasis),分帧(Frame Blocking),加窗(Windowing)。假设语音信号的采样频率fs=8KHz.由于语音信号在10-30ms认为是稳定的,则可设置帧长为80~240点。帧移可以设置为帧长的1/2.
预加重处理其实是一个高通滤波器,该高通滤波顺的传递函数为:
其中的取值为0.97,该高通滤波器作用是滤去低频,使语音信号的高频特性更加突现。
由于语音信号只在较短的时间内呈现平稳性(一般认为
10-30ms
),(项目中每帧是24ms,48K pcm每ms 48个采样点,24 * 48 = 1152)因此将语音信号划分为一个一个的短时段即一帧。同时为避免丢失语音信号的动态信息,相邻帧之间要有一段重叠区域,重叠区域一段为帧长的
1/2
或
1/3
。然后再将每帧乘上窗函数,以增加每帧左端和右端的连续性。
2.对每一帧进行FFT变换,求频谱,进而求得幅度谱。
对分帧加窗后的各帧信号进行FFT变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。
3.对幅度谱加Mel滤波器组(Mel滤波器组设计问题)。
4.对所有的滤波器输出做对数运算(Logarlithm),再进一步做离散余弦变换DCT可得MFCC。做对数运算是为了
调到分贝(dB)域(也是为了模拟人耳),DCT是为了压缩。只用20个coefficients表示,阔以重建mfcc(dB)。
图1:DCT压缩前的MFCC in dB
图2为DCT系数矩阵、DCT压缩后、DCT重建