天天看点

MFCC特征提取过程中,各步骤的概念详解

1.为什么用mfcc特征:

在梅尔轴上,听觉是等距离的、等差的,但听觉轴上不是。听觉音高是梅尔,一个是响度,一个是音高,一起用时是最好的听觉特征,MFCC只用了响度。有一个假设是mfcc特征的均值(mean)和标准差(std)都是一样的。

2.为何预加重:

声门气流波,每倍频音下降12分贝。这是我们声带的特征。经过咽腔,口腔进行共振,最后通过嘴唇发出。在唇齿之间进行唇呛辐射时,每倍频音增加6分贝。抵消之后是:每倍频音下降6分贝。即:

  • 100hz时是0db  
  • 200hz是-6db
  • 400hz是-12db

因此我们采用预加重,对高频提升一下,尽量让整个频谱平坦一点。

3.预加重:

在预加重公式中,传输函数如下:

MFCC特征提取过程中,各步骤的概念详解

假设我们采集到的样本点是sp= 1,2,3,1,2,3,1,2,3。 其中,a一般取0.95-0.97之间的值,z-1就是上一个时刻,z-2就是上上个时刻,这里的“1”不是数值1,而是要代进去sp样本点的值。要会用传输函数。

4.分帧:

语音识别、语音处理时,通常每秒取40帧。对于16k采样率的语音,指每秒钟取16k个点,就是16000点。人耳是0.1秒才能感觉到语音。

每10ms处理一次,就是每跳过160点处理1帧,即每帧距离是160个点,帧的长度就是第0点开始取。第一帧开始处理,就是第0点开始取,第1次从0点开始取,第二次从160点开始取,第三次从320点开始取……每次取400个点开始分析,即第0-第399点。

因为我们要对它做傅里叶变换。傅里叶变换要求我们做频谱分析时,信号必须是平稳信号,即他的统计信号处处不变。分析窗口取多少?25ms。那么为什么取25ms?在25ms内人的口腔被认为是固定不动的。这就是平稳的。超过25ms就变异了。为什么256或512?因为我们做快速傅里叶变换时,需要2的整数倍个0。加000000000…… 112个0。然后快速傅里叶变换结束后,分帧结束,后面进行加窗汉明窗。FFT(快速傅里叶变换)的点,得出的点取一半,只有一半的点是有用的,8k采样率只取一半,4k的点是有用的,其他的都是低频段。这个地方在每次提特征的时候设置采样率时都要注意一下: --sample-frequency=8000 就是采样率取8000。

5.加窗:

为什么要加窗?加窗会导致什么?

加上任何窗函数都会对它的频谱产生扭曲,因为它会泄露频谱,泄露的频谱主要都集中在它真正的频率附近,旁边的频谱不会受到影响。

在这里需要复习一个高数的知识点:第一类间断点和第二类间断点。不再详细提及,直接查资料就行。

两个概念:共振峰、谐波。在图上要知道哪个地方是共振峰,哪个地方是谐波。上一篇博客有提到(按时间排序)。怎么画出来呢?取实部的模,实部的平方+虚部的开平方,把它的模取对数。或者用 db。

6.离散余弦变换DCT:

前面的数值非常大,后面的数值越来越小,几乎为0。后面的就可以抛弃掉。图片压缩原理就是DCT:后面的抛弃后,就得到压缩图片。使用DCT它有两个好处,第一个好处:后面的几乎为0可以丢掉;第二个好处:加的梅尔窗有重叠,去除参数之间的相关性,提高识别效率。

继续阅读