kaldi中文语音识别_基于thchs30(7)

本文详细介绍了Kaldi中MFCC特征的计算过程,包括预加重、FFT、梅尔滤波器、离散余弦变换等步骤,并探讨了Kaldi与HTK特征的不同。此外,还讨论了CMVN(倒谱均值和方差归一化)的作用和实现,以及如何使用compute-cmvn-stats和apply-cmvn进行统计和应用。
摘要由CSDN通过智能技术生成

接上回,mfcc特征咱们暂时看完了,总结一下,此处引用别人的分析:

特征提取

MFCC

compute-mfcc-feats.cc

Create MFCC feature files.
Usage:  compute-mfcc-feats [options...] <wav-rspecifier> <feats-wspecifier>

其中参数rspecifier用于读取.wav文件,wspecifier用于写入得到的MFCC特征。典型应用中,特征将被写入到一个大的”archive”文件,同时会写入一个”scp”文件用于随机存取。该程序并未提取delta特征(add-delats.cc). 
其–channel参数用于选择立体声情况(–channel=0, –channel=1).

compute-mfcc-feats --config=conf/mfcc.conf \
   scp:exp/make_mfcc/train/wav1.scp    \
   ark:/data/mfcc/raw_mfcc_train.1.ark;
  • 第一个参数”scp:…”用于读取exp/make_mfcc/train/wav1.scp指定的文件。第二个参数”ark:…”指示计算得到的特征写入归档文件/data/mfcc/raw_mfcc_train.1.ark。归档文件里的每一句是N(frames)× N(mfcc)的特征矩阵。 
    MFCC特征的计算是在对象MFCC中的compute方法完成的,计算过程如下: 
    1.遍历每一帧(通常25ms一帧,10ms滑动) 
    2.对每一帧 
    a.提取数据,添加可选扰动,预加重和去直流,加窗 
    b.计算该点的能量(使用对数能量,而非C0) 
    c.做FFT并计算功率谱 
    d.计算每个梅尔频点的能量,共计23个重叠的三角频点,中心频率根据梅尔频域均匀分布。 
    e.计算对数能量,做离散余弦变换,保留指定的系数个数 
    f.倒谱系数加权,确保系数处于合理的范围。

    三角梅尔频点的上下限由–low-freq和–high-freq决定,通常被分别设置成接近0和奈奎斯特频率。如对于16KHz语音–low-freq=20, –high-freq=7800。 
    可以使用copy-feats.cc将特征转换成其它格式。

关于梅尔倒谱系数(MFCC)我们之前讲过,在Kaldi里它本身设置了合理的默认值,同时保留了一部分用户最有可能想调整的选项,如梅尔滤波器的个数,最大和最小截止频率等等.它通常需要读取wav文件或.pcm文件,假如数据源不是wav文件,我们就得使用工具来转化,Kaldi中有的sph2pipe工具能满足一般的情况.

命令工具 compute-mfcc-feats用来计算MFCC特征,若直接运行不带参数的话就会给出一个参数列表.改程序需要两个参数,rspecifier是用来读.wav数据, wspecifier是用来写特征的(就是r 和w啦).典型的用法是,将数据写入一个大的”archive”文件,也写到一个”scp”文件以便随机读取.

MFCC的计算由Mfcc类型的对象完成,它有Compute()函数可以根据波形计算特征.一个完整的MFCC计算如下:

  • 1) 计算出一个文件中帧的数目(通常帧长25ms,帧移10ms)

  • 2) 对每一帧提取数据,可选做Dithering,预加重和去除直流偏移,还可以和加窗函数想成(此处支持多种选项,如Hanmming 窗).

  • 3)计算该点能量(假如用对数能量则没有C0C0).

  • 4) 做快速傅里叶变换(FFT)并计算功率谱.

  • 5)计算每个梅尔滤波器的能量,如23个部分重叠的三角滤波器,其中心在梅尔频域等间距.

  • 6) 计算对数能量病作宇轩变换,根据要求保留系数(如13个).

  • 7) 选做倒谱变;它仅仅是比例变换,确保系数在合理范围内.

上下截止频率根据三角滤波器界定,由选项–low-freq和–high-freq控制,通常分别设置为0Hz和奈奎斯特频率附近,如对16kHz采样的语音设置为–low-freq=20 和 –high-freq=7800。

Kaldi的特征和HTK的特征在很多方面不同,但是几乎所有这些不同归结于有不同的默认值。用选项–htk-compat=true并正确设置参数,能得到同HTK非常接近的特征。一个可能重要的选项是我们不支持能量最大归一化。这是因为Kaldi希望能把无状态方式应用到归一化方法,且希望从原理上计算一帧帧特征仍能给出相同结果。但是程序compute-mfcc-feats里有–subtract-mean选项来提取特征的均值。对每个语音做此操作;每个说话人可以有不同的方式来提取特征均值。(如compute_cmvn_stat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值