MFCC提取
提取MFCC的过程
预处理包括:预加重,分帧加窗等操作。
预加重:
- 平衡频谱,因为高频通常与较低频率相比具有较小的幅度
- 避免在傅里叶变换操作过程中出现数值问题
- 改善信号-噪声比
- 消除发声过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所抑制的高频部分,也为了突出高频的共振峰,
分帧:
- 在大多数情况下,语音信号是非平稳的,对整个信号进行傅里叶变换是没有意义的,因此我们会随着时间的推移丢失信号的频率轮廓。
- 语音信号是短时平稳信号,因此我们在短时帧上进行傅里叶变换,通过连接相邻帧来获得信号频率轮廓的良好近似。
- 一般帧长frame_size = 0.025,也就是8khz信号的帧长度为0.025*8000=200个采样点。帧移通常为frame_stride=0.01,(80个采样点)。为了避免相邻两帧变化过大,因此会让两个相邻帧之间有一段重叠。
梅尔频率倒谱系数MFCC
在得到f-bank的基础上,进行离散余弦变换(DCT)即可得到MFCC。通常,对于自动语音识别,保留所得到的的倒谱系数2-13,其余部分被丢弃。丢弃其它系数的原因是他们代表了滤波器组系数的快速变化,并且这些精细的细节对自动语音识别没有贡献。
mfcc = dct(filter_banks, type=2, axis=1, norm='ortho')[:, 1 : (num_ceps + 1)] # 保持在2-13,num_ceps=12