MFCC(Mel Frequency Cepstral Coefficients,梅尔频率倒谱系数) 是一种有用的波形表示方法,它强调了信号中与语音单元检测相关的方面。
MFCC 是一个 39 维的特征向量,包含:

12 个倒谱系数1 个能量系数
12 个一阶差分倒谱系数1 个一阶差分能量系数
12 个二阶差分倒谱系数1 个二阶差分能量系数

下面概述了这些特征是如何计算的;对更多细节感兴趣的读者可以参考信号处理课程。

倒谱:逆离散傅里叶变换

MFCC 系数基于倒谱(cepstrum)
倒谱的一种理解方式是它提供了一种将声源滤波器分离的有效方法。
回顾第 14.4.6 节,当具有特定基频的声门源波形通过声道时生成语音波形,由于声道形状的不同过滤特性,产生了不同的语音。
然而,许多声门的特征(如其基频、声门脉冲的具体细节等)对于区分不同语音并不重要。
相反,对于语音识别最有用的信息是滤波器,即声道的确切位置。
如果我们知道声道的形状,就能知道正在发出的是哪个语音。 这表明,对于语音识别有用的特征应该能够解卷积(分离)声源和滤波器,并只显示声道滤波器。
事实证明,倒谱就是实现这一目标的方法之一。

图 14.30 来自 Taylor (2009) 的幅度谱(a)、对数幅度谱(b)和倒谱(c),已获得许可。 两个频谱上叠加了一个平滑的频谱包络以帮助可视化频谱。

为了简化讨论,我们考虑输入为对数幅度谱并忽略梅尔缩放。
倒谱可以被看作是频谱的对数的频谱。 这听起来可能令人困惑,我们从简单部分开始:频谱的对数
也就是说,倒谱始于标准幅度频谱,如 Taylor (2009) 中所示元音的频谱(图 14.30(a))。 然后取对数,即将幅度频谱中的每个振幅值替换为其对数值,如图 14.30(b) 所示。

下一步是将对数频谱可视化,就像它本身就是一个波形。 换句话说,考虑图 14.30(b) 中的对数频谱。 轴标签(x 轴上的频率)告诉我们这是频谱,假设移除这些轴标签,并想象我们只是在处理正常的语音信号,x 轴表示时间。 现在我们能说这个“伪信号”的频谱有什么特点呢?
注意到该波形中有一个高频重复成分:小波大约每 1000 单位沿 x 轴重复 8 次,频率约为 120 Hz。 这种高频成分是由信号的基频引起的,代表了频谱中信号每个谐波处的小峰值。
此外,“伪信号”中还有一些较低频率的成分;例如,包络或共振峰结构在这个窗口中有大约四个大峰值,对应更低的频率。

图14.30(c)展示了倒谱(cepstrum):即我们一直在描述的对数频谱的频谱。 倒谱一词(cepstrum)是将“spectrum”(频谱)一词的前四个字母反转而得来的。图中横轴以**采样点(samples)**为单位进行标注。 这是因为在对对数频谱再次进行频谱分析后,我们已离开了原始频谱所在的频率域,重新回到了时域。 事实上,倒谱的正确单位就是采样点。

观察该倒谱,我们可以看到在横轴约 120 处确实存在一个显著的峰值,它对应于基频 F0,代表了声门脉冲。 此外,在横轴较低数值处还存在其他若干成分,这些成分代表了声道滤波器(即舌头位置及其他发音器官的构型)。 因此,如果我们关注的是检测音素(phones),就可以只利用倒谱中较低的部分。 而如果我们关注的是检测基频(pitch),则可以使用倒谱中较高部分的值。

在提取MFCC(梅尔频率倒谱系数)时,我们通常只取前 12 个倒谱系数。 这12个系数仅包含有关声道滤波器的信息,并且已与声门激励源的信息清晰地分离开来。

倒谱系数还有一个极为有用的性质:不同倒谱系数之间的方差往往是不相关的。 这一点在原始频谱中并不成立——频谱中不同频带的系数通常是相互关联的。

对于学过信号处理的读者而言,倒谱更正式的定义是:信号DFT(离散傅里叶变换)幅度取对数后再进行逆DFT的结果。因此,对于一段加窗的语音帧 $ x[n] $,其倒谱可表示为:

$$ c[n] = \sum^{N-1}_{k=0} \log\left(\left|\sum^{N-1}_{n=0}x[n]e^{-j\frac{2\pi}{N}kn}\right|\right)e^{j\frac{2\pi}{N}kn} \tag{14.17} $$

能量(Energy)
在前述12个倒谱系数的基础上,我们再增加第13个特征:该帧的能量。 能量是音素检测的一个有用线索(例如,元音和擦音的能量通常高于塞音)。 一帧信号的能量定义为该帧内各样本功率在时间上的总和;因此,对于从时间采样点 $ t_1 $ 到 $ t_2 $ 的信号 $ x $,其能量为:

$$ \text{Energy} = \sum^{t_2}_{t=t_1} x^2[t] \tag{14.18} $$

差分特征(Delta features)
我们还会加入与倒谱特征随时间变化相关的特征。 语音信号中的变化,例如共振峰在过渡段的斜率,或从塞音闭合到爆破释放的转变,同样能为识别音素提供有用线索。 为此,我们为上述13个特征(12个倒谱系数加1个能量)分别添加一个**差分(delta)或称速度(velocity)特征,以及一个二阶差分(double delta)或称加速度(acceleration)**特征。 这13个差分特征分别表示相应倒谱/能量特征在相邻帧之间的变化量,而13个二阶差分特征则表示相应差分特征在帧间的变化量。 这些差分特征可以通过简单地用当前帧的值减去前一帧的值得到,但在实际应用中,通常采用拟合多项式并计算其一阶和二阶导数。