kaldi解碼及特徵提取詳解

目錄


1. 注意事項

  • 首先要訓練好模型,用到3個文件,分別是:
    • final.mdl(訓練模型得到的模型文件)
    • final.mat(用來特徵轉換)
    • HCLG.fst(fst文件)
  • 此外要提供待解碼音頻文件或路徑.scp文件:
    • wav.scp(音頻路徑.scp文件)

2. 流程圖:

st=>start: 開始
op1=>operation: compute-mfcc-feats
op2=>operation: copy-feats
op3=>operation: compute-cmvn-stats
op4=>operation: apply-cmvn
op5=>operation: splice-feats
op6=>operation: transform-feats
op7=>operation: nnet-latgen-faster
st->op1->op2->op3->op4->op5->op6->op7

流程每一步意義如下:

  1. 使用compute-mfcc-feats提取特徵,生成對應的特徵文件feats.ark
  2. 使用copy-feats來拷貝特徵文件,並創建特徵的scp文件,生成feat.scp feat.ark ;
  3. 使用compute-cmvn-stats計算CMVN歸一化,得到cmvn.scp cmvn.ark ;
  4. 使用apply-cmvn得到了applycmvn.ark文件;
  5. 使用splice-feats來繼續變換特徵 ,拼接相鄰幀的特徵;
  6. 使用transform-feats來進行特徵轉換,爲了解碼調用 ;
  7. 最後通過得到的transform.ark進行解碼的操作,得到解碼後的lattice文件 。

3. 具體流程指令:

  1. 首先列出具體文件,這裏我就按照自己的文件給出了,如果用別的,改相應文件就行了
    1. wav.scp(裏面是保存了wav的絕對路徑)
    2. final.mdl(訓練模型得到的模型文件)
    3. final.mat(用來特徵轉換)
    4. 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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章