简介
MFCC是一种语音特征提取技术,它产生与20世纪80年代。MFCC为了从人发出的音频中去除噪音和情感的影响,提取特征值便于我们进行进一步的分析。
人的发声由很多部位共同影响的结果,如嘴形、牙齿等因素,这种形状可以决定声音的输出。如果我们可以精确的确定形状,那么我们就可以对发出的因素进行科学的表示。这篇文章将带你走进MFCC技术,解释它为什么能够很好的用于语音识别领域以及如何实现它。
首先我们来确定一下如何进行MFCC的步骤:
-----1.将音频分解为帧;
-----2.对于每一帧,计算周期功率谱;
-----3.将mel滤波器应用到功率谱中,计算每个滤波器的能量和;
-----4.计算能量的对数值;
-----5.对每个对数能量进行离散余弦变换(DCT);
-----6.保留DCT的2-13个系数,其余系数舍去;
现在我们来探讨一下每一步的细节以及为什么要这么做。
一个音频信号通常是不断变化的,为了简化,我们通常假设一个较短时间内音频信号不会有较大的变化(我们指统计上),所以我们把每一帧划分成20-40ms为宜,若该时间太短,则没有足够的信号来进行功率估计;方之,若太长,则每一帧信号变化太多。
下一步是计算每一帧的周期功率谱,这个源自人的耳锅,它随声音的大小而发生不同频率的振动。通过耳锅的不同位置上的振动,不同的神经元将会通知大脑现在听到的音频频率。我们的周期图同样为我们做出这种工作,确定帧中存在哪些频率。
周期图同样存在一些ASR(Automatic Speech Recognition)不需要的信息。实际上耳锅无法辨别两个空间上相近的频率。当频率变大时,这种影响更明显。因此,我们采取周期图块,并且将它们进行累加来得知在不同频率区域的能量是多少。这个是有我们的mel滤波器完成的,第一个滤波器非常狭窄,可以告诉我们频率为0Hz附近的能量是多少,当频率渐渐变高时,我们的滤波器也会越来越宽,我们只关心每一个点能量是多少。mel级别告诉我们如何去划分滤波器以及滤波器的宽度如何选择。
一旦我们有了滤波器的能量,我们对它取对数,这也是受人类听力启发的;通常我们无法听出线性级别的音量,通常若声音扩大两倍,我们需要放入8倍的