语音的Mfcc特征学习与理解

语音的Mfcc特征学习与理解
近来研究语音情感识别,在识别过程中提取用到了mfcc特征。就对其细致地研究了一下,在这过程中参看了别人的Blog.由于本人水平有限,难免出现错误,望大家批评指教。
1. 概念介绍
Mel频率导谱系数(Mel Frequency Cepstrum Coefficient,MFCC)的分析是基于人的听觉机理,即根据人的听觉实验结果来分析语音的频谱,期望能获得好的语音的特性。
关于感知频率与实际频率的对应关系的表达式分别如下:

Fmel=1127*log(1+f/700); 及f=700.0*(exp(Fmel/1127-1));

2 . MFCC特征的具体的实现过程
由于语音信号的特殊性,一般情况下在分帧处理之前都需要对语音信号进行一些预处理(常见的如,加窗,预加重,分帧等处理),以获得短时的平稳信号。

2.1 针对提取出来的一帧语音信号对其进行快速傅里叶变化,得到其对应的频域的数据。这里对得到的fft的数据进行一下简单的介绍:
a. 假设我们事先知道样本音频的采样率为fs(通常音频常用的采用率有8000,16000,22500,44100等)。
b. 由于fft的数据中正负频率的对称性,我们只采取正频率进行研究处理。分帧时,假设每一帧有N个数据点,则这对应的频率应该为[0 :N/2]*fs/N,频率点的数量应该为(N/2+1)个,只考虑正频率部分,及0频率。其中X(i)=fft(x(i)),表示第i帧的FFT的数据。

2.2 针对得到的一帧fft的数据,就算它的幅度谱,即能量E=[X(i)]*[X(i)]。

2.3 计算通过Mel滤波器的能量
关于Mel滤波器的设计应该是一个关键的步骤,针对不同的信号(如有些信号的低频成分较大,而有的却是中频较大)。所以针对不同的信号,我们在设置Mel域的滤波器的起始频率是一个至关重要的问题。由于实际频率最大的值已经确定了(由采样定理,fs/2),则对应的Mel域的最大的频率也已经确定了。,由于可以人为的设置滤波器的个数,所以不同问题设置的滤波器的个数可能不确定。由于在Mel域中这些滤波器是等带宽的,所以在确定了Mel域的频率范围(最大与最小频率值)及滤波器的个数,我们就可以确定每一个mel滤波器的频率范围。
Mel滤波器为带通的三角形滤波器,并且第一个的带通滤波器的中心频率为第二个带通滤波器的左起点,第一个带通滤波器的右端点为第二个带通滤波器的中心点频率。具体图形参看http://blog.csdn.net/xiaoding133/article/details/8106672。
将2.2得到的幅度谱与Mel的频率响应进行相乘并相加。
2.4 DCT倒谱的计算
将2.1中得到的X(i)取对数在进行逆fft变换,在对其进行DCT变化即可得到mfcc的特征了。

3 . 给出一个网址提取mfcc特征的website
http://www.ee.columbia.edu/~dpwe/resources/matlab/rastamat/mfcc.hetml
4 . 总结
由于本人这是第一次写Blog,所以有所多的工具及如何复制图片以及代码什么的还不是非常懂,写的东西难免难于理解,望见谅,之后还会继续一些机器学习方面的学习,望同道中人多多指导。

你可能感兴趣的:(语音信号处理,MFCC-特征分析)