MFCC特征提取学习笔记
做毕设的过程中接触到了语音识别,对MFCC特征提取的步骤有一些粗浅的理解,如有理解错误的地方,请前辈们指出。
- 预加重
由于人在发声的过程中存在唇端辐射,会造成语音的高频信号比中频和低频信号弱。预加重的目的就是突出语音信号中高频部分的能量。预加重通过一个高通滤波器实现: H ( z ) = 1 − μ z − 1 H(z) = 1 - \mu z^{-1} H(z)=1−μz−1 μ \mu μ称作预加重系数,可以取0.9~1之间的值。
高通滤波器可以使高于某一值的信号通过,而使低于临界值的信号被削弱或者阻隔,所以它最终的效果不仅突出了语音信号的高频部分,还提升了语音信号的信噪比。预加重前后的波形图中振幅得到突出的部分就是语音信号的高频部分,同时语音的背景噪声也得到了削弱。
- 分帧
分帧是为了利用语音信号的短时平稳性,即假设语音信号在足够短的时间内是平稳的。这里的图是取帧长25毫秒,帧移10毫秒进行分帧的结果图。帧长是指每一帧的长度,帧移是相邻帧起始点的间隔。这里帧与帧之间的重叠为15毫秒,超过了帧长的一半。
3. 加窗
由于下一步是快速傅里叶变换,而快速傅里叶变换要求信号具有周期性。分帧得到的信号首尾不连续,所以通过汉明窗(汉明窗可以使窗边界处信号平滑衰减)使信号首尾连续,可以被视作一个周期性的信号。由于信号首尾衰减意味着信息的丢失,分帧时帧与帧之间的重叠超过帧长的一半是为了弥补这一部分的信息损失。
汉明窗函数: ω ( x ) = { 0.54 − 0.46 cos ( 2 π n N − 1 ) 0 ≤ n ≤ N − 1 1 others \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} ω(x)={
0.54−0.46cos(N−12πn)10≤n≤N−1others