數據準備
發音詞典 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,輸出是發音單元