Kaldi DNN的特征提取和解码的连接操作

通过读脚本,我们知道了对应的特征提取和dnn的解码过程,得到一个lat(晶格文件),最后通过晶格文件进行分析,得到解码的结果,通过几次尝试,我这里通过wav文件得到了解码的文件,接下来将详细说明:


首先是创建独立的文件夹,专门用来测试,里面保存5个文件,分别是:

1. t2ss.wav(原始的wav文件)   

2. wav.scp(里面是保存了wav的绝对路径) 

3. final.mdl  (训练模型得到的模型文件)  

4. final.mat  (用来特征转换)  

5. HCLG.fst  (fst文件)


具体过程:


1.首先列出具体文件,这里我就按照自己的文件给出了,如果用别的,改相应文件就行了

      2. 使用compute-mfcc-feats生成对应的特征文件feats.ark

      

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


      4.因为是复制了特征文件,所以我这里删除了其中一个feats.ark


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


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


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


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


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


 上面的命令我是分开写的,如果熟悉的话,可以简写,把每一步的输出当成下一步的输入


例如:

nnet-latgen-faster  exp/nnet5a_clean_100_gpu/final.mdlexp/tri4b/graph_tgsmall/HCLG.fst "ark,s,cs:apply-cmvn --utt2spk=ark:data/dev_other/split20/14/utt2spk scp:data/dev_other/split20/14/cmvn.scpscp:data/dev_other/split20/14/feats.scp ark:- | splice-feats --left-context=3--right-context=3 ark:- ark:- | transform-featsexp/nnet5a_clean_100_gpu/final.mat ark:- ark:- | transform-feats--utt2spk=ark:data/dev_other/split20/14/utt2spk ark:exp/tri4b/decode_tgsmall_dev_other/trans.14ark:- ark:- |" "ark:|gzip -c >exp/nnet5a_clean_100_gpu/decode_tgsmall_dev_other/lat.14.gz"


这只是一个粗略的过程,具体详细内容(数据结构)还是要配合代码看,推荐多通过gdb调试每个exe文件,多看多练才能了解更多!


你可能感兴趣的:(语音识别)