其它积累 · 2023年8月9日

kaldi解码及特征提取详解

  1. 注意事项
    首先要训练好模型,用到3个文件,分别是:
    final.mdl(训练模型得到的模型文件)
    final.mat(用来特征转换)
    HCLG.fst(fst文件)
    此外要提供待解码音频文件或路径.scp文件:
    wav.scp(音频路径.scp文件)
  1. 流程图:

       流程每一步意义如下:

  • 使用compute-mfcc-feats提取特征,生成对应的特征文件feats.ark;
  • 使用copy-feats来拷贝特征文件,并创建特征的scp文件,生成feat.scp feat.ark ;
  • 使用compute-cmvn-stats计算CMVN归一化,得到cmvn.scp cmvn.ark ;
  • 使用apply-cmvn得到了applycmvn.ark文件;
  • 使用splice-feats来继续变换特征 ,拼接相邻帧的特征;
  • 使用transform-feats来进行特征转换,为了解码调用 ;
  • 最后通过得到的transform.ark进行解码的操作,得到解码后的lattice文件 。
  1. 具体流程指令:
    首先列出具体文件,这里我就按照自己的文件给出了,如果用别的,改相应文件就行了
    wav.scp(里面是保存了wav的绝对路径)
    final.mdl(训练模型得到的模型文件)
    final.mat(用来特征转换)
    HCLG.fst(fst文件,用于解码)

 

  1. 使用compute-mfcc-feats生成对应的特征文件feats.ark:
    compute-mfcc-feats –use-energy=false scp:wav.scp ark:feats.ark

  2. 使用copy-feats来拷贝特征文件,并创建特征的scp文件,生成feat.scp feat.ark
    copy-feats ark:feats.ark ark,scp:feat.ark,feat.scp

  3. 使用compute-cmvn-stats计算CMVN归一化,得到cmvn.scp cmvn.ark
    compute-cmvn-stats scp:feat.scp ark,scp:cmvn.ark,cmvn.scp

  4. 使用apply-cmvn,得到了applycmvn.ark文件
    apply-cmvn scp:cmvn.scp scp:feat.scp ark:applycmvn.ark

  5. 使用splice-feats来继续变换特征
    splice-feats –left-context=3 –right-context=3 ark:applycmvn.ark ark:splice.ark

  6. 使用transform来进行特征转换,为了解码调用
    transform-feats final.mat ark:splice.ark ark:transform.ark

  7. 最后通过得到的transform.ark进行解码的操作,得到一个晶格文件
    nnet-latgen-faster [options]

 

打赏作者