kaldi源碼分析(一)--kaldi腳本

數據準備

發音詞典 L.fst

將之前的詞典轉換爲L.fst 以及 topo文件

utils/prepare_lang.sh --position-dependent-phones false lang/dict “<UNK>” lang/local lang/lang


提取特徵

腳本 使用
steps/make_mfcc.sh 根據wav.scp提取特徵
steps/compute_cmvn_stats.sh 根據feats.scp計算cmn

聲學模型訓練

腳本 作用
steps/train_mono.sh 單音素訓練 ,一共進行40次迭代,每兩次迭代進行一次對齊操作
steps/train_deltas.sh 以單音素模型爲輸入訓練上下文相關的三音素模型
steps/train_lda_mllt.sh 用來進行線性判別分析和最大似然線性轉換
steps/train_sat.sh 用來訓練發音人自適應,基於特徵空間最大似然線性迴歸
steps/nnets nnet3神經網絡
腳本 作用
utils/format_lm.sh 上述的語言工具基於第三方工具,爲ARPA-format,腳本的作業是將其轉換爲fst,方便與之前的字典fst(L.fst)結合,發揮fst的優勢。 腳本最後會檢測G.fst中是否存在沒有單詞的空迴環,如果存在會報錯,因爲這會導致後續HLG determinization的出現錯誤。腳本utils/format_lm.sh解決把ARPA格式的語言模型轉換成OpenFST格式類型。
utils/fix_data_dir.sh 該腳本會修復排序錯誤,並會移除那些被指明需要特徵數據或標註,但是卻找不到被需要的數據的那些發音

語言模型訓練

解碼

解碼的過程需要對模型進行構圖,也就是生成HCLG的過程,模型的構圖是按照G L C H 的構圖方式進行的,其中

G.fst 表示語言模型

FSA grammar,通過n-gram語言模型得到,將字對應詞組

L_disambig.fst The Phonetic Dictionary with Disambiguation Symbols FST

構成一個FST,將發音單元轉化爲字

C.fst: The Context FST

把triphone 轉化成monophone,即在第2步驟中擴展了context,即擴展爲triphone,最終輸出是CLG.fst

H.fst: The HMM FST

把HMM的state映射到triphone ,即把pdf-id映射到triphone,也就是擴展了HMM,即輸入時pdf-id,輸出是發音單元

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章