kaldi解码流程

1.解码之前工作
首先训练好模型,用到4个文件:
final.mdl(训练得到的声学模型文件)
final.mat(用来特征转换)
HCLG.fst(fst文件)
words.txt(字典文件)
此外还要提供带解码音频文件或路径.scp文件:
wav.scp(音频路径.scp文件)
2.流程图
在这里插入图片描述
2.使用compute-mfcc-feats提取特征,有时也会加上基音周期,用compute-kaldi-pitch-feats提取,生成对应的特征文件feat.ark;
3.使用copy-feats来拷贝特征文件,并创建特征的scp文件,生成feat.scp feat.ark
4.使用compute-cmvn-stats计算CMVN归一化,得到cmvn.scp cmvn.ark;
5.使用apply-smvn得到applycmvn.ark文件;
6.使用splice-feats继续变换特征,拼接相邻帧的特征;
7.使用transform-feats来进行特征转换,为了解码调用;
8.最后通过得到的transform.ark进行解码的操作,得到解码后的lattice文件。
3.具体流程指令
1.首先列出具体文件,这里我就按照自己的文件给出了,如果用别的,改相应文件就行了
wav.scp(里面是保存了wav的绝对路径)
final.mdl(训练模型得到的模型文件)
final.mat(用来特征转换)
HCLG.fst(fst文件,用于解码)
2.使用compute-mfcc-feats生成对应的特征文件feats.ark:

compute-mfcc-feats --use-energy=false scp:wav.scp ark:feats.ark

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

copy-feats ark:feats.ark ark,scp:feat.ark,feat.scp

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

compute-cmvn-stats scp:feat.scp ark,scp:cmvn.ark,cmvn.scp

5.使用apply-cmvn,得到了applycmvn.ark文件

apply-cmvn scp:cmvn.scp scp:feat.scp ark:applycmvn.ark

6.使用splice-feats来继续变换特征

splice-feats --left-context=3 --right-context=3 ark:applycmvn.ark ark:splice.ark

7.使用transform来进行特征转换,为了解码调用

transform-feats final.mat ark:splice.ark ark:transform.ark

8.最后通过得到的transform.ark进行解码的操作,得到一个晶格文件

nnet-latgen-faster [options] <nnet-in> <fst-in|fsts-rspecifier> <features-rspecifier> <lattice-wspecifier>

猜你喜欢

转载自blog.csdn.net/qq_14962179/article/details/85993481
今日推荐