前期的博客中,已经贴出了MFCC算法的C++代码实现。本篇文章,主要讲解该算法的数学原理。
声音是因为物体振动而产生的声波,是可以被人或动物的听觉器官所感知的波动现象。声音有多种特性,比如音色、音调、响度、频率。人耳是能够通过这些特征区分出声音的种类,那么如何让机器去区别不同种类的声音呢?研究者通常采用梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, 简称:MFCC)作为声学特征,让机器学会辨别声音。
梅尔(Mel)频率是由研究人员跟据人耳听觉机理提出,它与赫兹(Hz)频率成非线性对应关系。MFCC则利用两者之间的非线性关系,计算得到Hz频谱特征。当前MFCC已经广泛应用于语音数据特征提取和降低运算维度。由于Hz频率与Mel频率之间存在非线性的对应关系,使得当频率提高时,MFCC的计算精度随之下降。通常情况下,在应用时仅使用低频MFCC,而舍弃中频和高频MFCC。
MFCC的计算包括预加重,分帧,加窗,快速傅里叶变换,梅尔滤波器组(梅尔频率转换),离散余弦变换(Discrete Cosine Transform,简称:DCT),动态特征等过程。其中最重要的步骤是快速傅里叶变换和梅尔滤波器组,它们对数据进行了主要的降维操作。下面,介绍一下MFCC算法的具体实现过程:

1)预加重。预加重是为了突出语音信号的高频特性,使信号的频谱变得平坦,并保持在低频到高频的整个频带中可以使用同样的信噪比求频谱。同时,预加重还可以消除发声过程中声带和嘴唇之间的效应,用以补偿发音系统对语音信号抑制的高频部分,也为了突出高频的共振峰。一般通过下面计算式实现预加重,代表声音流中的第m个采样点:

本文深入解析了MFCC算法的数学原理,介绍了声音信号处理的重要步骤,包括预加重、分帧、加窗、快速傅里叶变换、梅尔滤波器组、离散余弦变换及动态特征提取,阐述了MFCC在语音识别领域的应用。
最低0.47元/天 解锁文章
2681






