计算MFCC特征

这里我们介绍如何使用命令行工具compute-mfcc-feats计算MFCC参数。该程序需要两个命令行参数:rspecifier是用来读.wav数据(以发音为索引)和wspecifier是用来写特征(以发音为索引);参见 The Table concept和Specifying Table formats: wspecifiers and rspecifiers获取更多关于这些术语的解释。典型的用法是,将数据写入一个大的“archive”文件,也写到一个“scp”文件以便随机存取;参见Writing an archive and a script file simultaneously解释。程序没有添加增量功能(如需添加,参见add-deltas)。它接收选项-channel来选择通道(如–channel=0, –channel=1),该选项在读取立体声数据时很有用。 计算MFCC特征由Mfcc类型的对象完成,它有Compute()函数可以根据波形计算特征。 完整的MFCC计算如下所示:

  • 计算出一个文件中帧的数目(通常帧长25ms帧移10ms)。
  • 对每一帧:
    • 提取数据,可选做dithering(注:直译为抖动,在这里可以理解为类似归一化的预处理),预加重和去除直流偏移,还可以和加窗函数相乘(此处支持多种选项,如汉明窗)
    • 计算该点能量(假如用对数能量则没有C0)
    • 做FFT(译注:快速傅里叶变换)并计算功率谱
    • 计算每个梅尔滤波器的能量;如23个部分重叠的三角滤波器,其中心在梅尔频域等间距
    • 计算对数能量并作余弦变换,根据要求保留系数(如13个)
    • 选做倒谱变换;它仅仅是比例变换,确保系数在合理范围。

上下截止频率根据三角滤波器界定,由选项–low-freq和–high-freq控制,通常分别设置为0Hz和奈奎斯特频率附近,如对16kHz采样的语音设置为–low-freq=20 和 –high-freq=7800。 Kaldi的特征和HTK的特征在很多方面不同,但是几乎所有这些不同归结于有不同的默认值。用选项–htk-compat=true并正确设置参数,能得到同HTK非常接近的特征。一个可能重要的选项是我们不支持能量最大归一化。这是因为我们希望能把无状态方式应用到归一化方法,且希望从原理上计算一帧帧特征仍能给出相同结果。但是程序compute-mfcc-feats里有–subtract-mean选项来提取特征的均值。对每个语音做此操作;每个说话人可以有不同的方式来提取特征均值。(如在脚本里搜“cmvn”,表示倒谱均值和方差归一化)。

results matching ""

    No results matching ""