15.6 MFCC:Mel 频率倒谱系数
MFCC(mel frequency cepstral coefficients,Mel 频率倒谱系数)是一种有用的波形表示,突出与语音单元检测相关的信号特征。MFCC 是一个 39 维特征向量,由以下部分组成:
| 12 个倒谱系数 | 1 个能量系数 |
| 12 个倒谱差分系数 | 1 个能量差分系数 |
| 12 个二阶倒谱差分系数 | 1 个二阶能量差分系数 |
下面概述这些特征的计算方式;对更多细节感兴趣的读者,可以学习信号处理课程。
倒谱:逆离散傅里叶变换¶
MFCC 系数建立在倒谱之上。可以把倒谱理解为一种分离声源和滤波器的有用方法。回忆 15.4.6 节,语音波形由特定基频的声门声源波形通过声道产生;声道的形状具有特定的滤波特性。但声门声源的许多性质(如基频、声门脉冲的细节等)对于区分不同音段并不重要。对音段检测最有用的信息是滤波器,即声道的确切位置。如果知道声道的形状,就知道发出了哪个音段。这说明有用的音段检测特征应能设法对声源和滤波器进行反卷积(分离),只呈现声道滤波器。事实证明,倒谱就是实现这一目的的一种方法。

(a)

(b)

(c)
图 15.30 来自 Taylor(2009)的幅度频谱(a)、对数幅度频谱(b)和倒谱(c),经许可使用。两个频谱上都叠加了平滑频谱包络,以便更直观地观察频谱。
为简单起见,考虑以对数幅度频谱作为输入,并忽略 mel 缩放。倒谱可以理解为频谱的对数的频谱。这听起来可能令人困惑,但先从容易的部分开始:频谱的对数。也就是说,倒谱以一个标准幅度频谱开始,例如 Taylor(2009)图 15.30(a)中的元音频谱。然后取对数,即把幅度频谱中的每个幅度值替换为其对数,如图 15.30(b)所示。
下一步,把对数频谱想象成波形本身。换句话说,考虑图 15.30(b)中的对数频谱。假设去掉说明它是频谱的坐标轴标签(X 轴是频率),把它当作一个普通语音信号,X 轴表示时间。现在可以对这个“伪信号”的频谱说些什么?注意,这个波中有一个高频重复成分:沿 X 轴每 1000 个单位大约重复 8 次的小波,频率约为 120 Hz。这个高频成分由信号的基频造成,表示信号每个谐波处频谱中的小峰。此外,这个“伪信号”中还有一些低频成分;例如,包络或共振峰结构在窗口中有大约四个大峰,因此对应低得多的频率。
图 15.30(c)展示了倒谱,即上面描述的对数频谱的频谱。这个倒谱(cepstrum 一词由 spectrum 的前四个字母反转形成)以样本为 X 轴显示。这是因为对对数频谱求频谱后,我们离开了频谱的频域,回到了时域。事实证明,倒谱的正确单位是样本。
观察这个倒谱,可以看到约 120 处确实有一个大峰,对应 F0 并表示声门脉冲。X 轴较低位置还有其他成分,它们表示声道滤波器(舌头及其他发音器官的位置)。因此,如果关注音段检测,可以只使用较低的倒谱值;如果关注音高检测,则可以使用较高的倒谱值。
对于 MFCC 提取,我们通常只取前 12 个倒谱值。这 12 个系数只表示声道滤波器的信息,与声源信息清晰分离。
倒谱系数还有一个非常有用的性质:不同系数的方差往往不相关。频谱并没有这一性质,因为不同频带上的频谱系数彼此相关。
对于学习过信号处理的读者,更正式地说,倒谱定义为信号 DFT 的幅度取对数后再进行逆 DFT。因此,对于加窗语音帧 :
能量 在上一节的 12 个倒谱系数之外,我们再加入第 13 个特征:帧能量。能量是音段检测的有用线索(例如,元音和咝音的能量比塞音大)。一帧中的能量是该帧样本功率在时间上的总和;因此,对于从时间样本 到 的窗口中的信号 ,能量为
差分特征 我们还加入与倒谱特征随时间变化相关的特征。语音信号的变化,例如共振峰过渡处的斜率,或从塞音闭塞到塞音爆破的变化,也能为音段身份提供有用线索。对于 13 个特征(12 个倒谱特征加能量),分别加入一个差分或速度特征,以及一个二阶差分或加速度特征。13 个差分特征中的每个特征表示对应倒谱/能量特征在帧之间的变化;13 个二阶差分特征中的每个特征表示对应差分特征在帧之间的变化。这些差分可以简单地通过用当前帧的值减去前一帧的值来计算,但实践中通常拟合一个多项式,并取其一阶和二阶导数。