转发:有关 MFCC 梅尔倒谱参数的资料。
内容:1. Mfcc 梅尔倒谱参数参数知识
2. mfcc 的 matlab 代码
1.在语音辨识(Speech Recognition)和语者辨识(Speaker Recognition)方面,最常用到
的语音特征就是「梅尔倒频谱系数」( Mel-scale Frequency Cepstral Coefficients ,简称
MFCC),此参数考虑到人耳对不同频率的感受程度,因此特别适合用在语音辨识。下面
简单的介绍一下求解 MFCC 的过程。
1.预强调(Pre-emphasis):将语音讯号 s(n) 通过一个高通滤波器。
H(z)=1-a*(z-1)
系数其中 a 介于 0.9 和 1.0 之间。若以时域的表达式来表示,预强调后的讯号 s2(n) 为
s2(n) = s(n) - a*s(n-1)
这个目的就是为了消除发声过程中声带和嘴唇的效应,来补偿语音信号受到发音系统所压
抑的高频部分。(另一种说法则是要突显在高频的共振峰。)
2. 音 框 化 ( Frame blocking ) : 先 将 N 个 取 样 点 集 合 成 一 个 观 测 单 位 , 称 为 音 框
(Frame),通常 N 的值是 256 或 512,涵盖的时间约为 20~30 ms 左右。为了避免相邻两
音框的变化过大,所以我们会让两相邻因框之间有一段重迭区域,此重迭区域包含了 M 个
取样点,通常 M 的值约是 N 的一半或 1/3。通常语音辨识所用的音讯的取样频率为 8 KHz
或 16 KHz , 以 8 KHz 来 说 , 若 音 框 长 度为 256 个 取 样 点 , 则 对 应的 时 间 长 度 是
256/8000*1000 = 32 ms。
3.汉明窗(Hamming window):将每一个音框( frame)乘上汉明窗,以增加音框左端和
右端的连续性(请见下一个步骤的说明)。假设音框化的讯号为 S(n), n = 0,…N-1。N 为
frame 的大小,那么乘上汉明窗后为 S'(n) = S(n)*W(n),此 W(n) 形式如下:
W(n, a) = (1 - a) - a *cos(2pn/(N-1)),0≦n≦N-1 ??
不同的 a 值会产生不同的汉明窗。一般我们都取 a = 0.46。
4.快速傅利叶转换(Fast Fourier Transform, or FFT):由于讯号在时域( Time domain)上
的变化通常很难看出讯号的特性,所以通常将它转换成频域(Frequency domain)上的能量
分布来观察,不同的能量分布,就能代表不同语音的特性。所以在乘上汉明窗后,每个音
框还必需再经过 FFT 以得到在频谱上的能量分布。
乘上汉明窗的主要目的,是要加强音框左端和右端的连续性,这是因为在进行 FFT 时,都
是假设一个音框内的讯号是代表一个周期性讯号,如果这个周期性不存在,FFT 会为了要
符合左右端不连续的变化,而产生一些不存在原讯号的能量分布,造成分析上的误差。当
然,如果我们在取音框时,能够使音框中的讯号就已经包含基本周期的整数倍,这时候的
音框左右端就会是连续的,那就可以不需要乘上汉明窗了。但是在实作上,由于基本周期
的计算会需要额外的时间,而且也容易算错,因此我们都用汉明窗来达到类似的效果。
5.三角带通滤波器(Triangular Bandpass Filters):将 能量频谱能量乘以一组 20 个三角带
通滤波器,求得每一个滤波器输出的对数能量(Log Energy),共 20 个。必须注意的是:
这 20 个三角带通滤波器在「梅尔频率」( Mel Frequency)上是平均分布的,而梅尔频率
和一般频率 f 的关系式如下:
mel(f)=2595*log10(1+f/700)
评论12