MFCC参数提取步骤
——>预加重
——>分帧
——>对每一帧加窗
——>对每一帧补零
——>各帧信号的FFT变换及其功率谱
——>梅尔滤波(通过40个滤波器)
——>取对数
——>DCT变换
——>归一化
1.预加重
如果数据在低频的强度大于高频,就会不利于处理,因此需要通过一个传递函数为s[n]-a*s[n]的高通滤波器。滤去数据中的低频成分,使高频特性更加突现。
2.分帧
分帧就是将N个采样点集合成一个观测单位。我们设定每帧涵盖的时间是25ms,因为采样率是16000,所以得到每帧的样本点个数是400。
另外,为了避免相邻两帧的变化过大,因此会让两相邻帧之间有一段重叠区域。我们设定的重叠区域是15ms,所以就是每隔10ms取一帧。
3.对每一帧加窗
分帧后马上进行FFT,由于转换时会将帧内信号当作周期信号处理,所以在帧的两个端点处会发生突变,转换出来的频谱与原信号频谱差别很大。所以要对每一帧加窗,使帧内信号作FFT时的两个端点处不会发生突变。
我们采用的窗是汉明窗:(M为帧长,即400)
4.对每一帧补零
我们要对每一帧信号进行FFT,而FFT要求输入数据长度一定是2^K,现在一帧为400个采样点,所以补零至最接近的512位。
5.各帧信号的FFT变换及其功率谱
对分帧加窗后的各帧信号进行512点的FFT变换得到各帧的频谱。并对语音信号的频谱取模平方得到语音信号的功率谱。
6.梅尔滤波(通过40个滤波器)
40个三角滤波器在MEL谱上均匀分布,每两个滤波器间有50%的重叠部分。
所以要先把实际频率转换成梅尔频率,实际频率最小为0Hz,最大为16000 / 2 = 8000Hz
转换成梅尔频率后,我们要实现的是40个滤波器,所以计算这40个滤波器的梅尔频率分布,然后把梅尔频率转换成实际频率