train_mono.sh
單音素訓練腳本:
//初始化,[topo feats] -> [0.mdl tree]
gmm-init-mono
//生成訓練圖,[0.mdl text l.fst] -> [train.fst]
compile-train-graph
//對標簽進行初始化對齊[train.fst feats 0.mdl tree] -> [1.ali]
align-equal-compiled
//統計估計模型所需統計量,[feats 1.ali] -> [1.acc]
gmm-acc-stats-ali
//參數重估,估計新的模型 [1.acc] -> [1.mdl]
gmm-est
//迭代訓練
for i < iteration
//重新統計所需統計量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估計新的模型,[$i.acc] -> [$i.mdl]
gmm-est
//重新對齊,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//輸出最后的模型
final.mdl = $i.mdl
train_deltas.sh
三音素訓練腳本:
//特征處理 [feats] -> [feats]
apply-cmvn | add-deltas
//由生成的單音素模型的對齊結果對三音素參數統計,用於生成決策樹[final.ali feats] -> [treeacc]
acc-tree-stats
//三音素綁定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //該步驟完成決策樹三音素聚類
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl] -> [1.mdl]
gmm-init-model | gmm-mixup
//將單音素對其文件中的元素替換為決策樹的葉子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成訓練圖,[1.mdl text l.fst] -> [train.fst]
compile-train-graph
//迭代訓練
for i < iteration
//重新對齊,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//重新統計所需統計量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估計新的模型,[$i.acc] -> [$i.mdl]
gmm-est //該步驟增加混合高斯分量的數目
//輸出最后的模型
final.mdl = $i.mdl
train_lda_mllt.sh
lda-mllt訓練腳本,非說話人自適應,mllt的作用是減少協方差矩陣對角化的損失:
//生成先驗概率,統計計算lda所需統計量,[splice-feats final.ali] -> [lda.acc]
ali-to-post
weight-silence-post
acc-lda
//估計lda矩陣,[lda.acc] -> [lda.mat]
est-lda
//通過對轉換后的特征重新統計,用於生成決策樹[final.ali feats.*lda.mat] -> [treeacc]
acc-tree-stats
//三音素綁定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //該步驟完成決策樹三音素聚類
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl]
gmm-init-model
//將三音素決策樹的葉子替換為轉換后模型決策樹的葉子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成訓練圖,[1.mdl text l.fst] -> [train.fst]
compile-train-graph
//迭代訓練
for i < iteration
//重新對齊,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//同lda,估計mllt的矩陣
ali-to-post | weight-silence-post | gmm-acc-mllt
est-mllt
//對gmm模型進行變換,[mllt.mat mdl] -> [new.mdl]
gmm-transform-means
//組合變換矩陣,[lda.mat mllt.mat] -> [lda.mat]
compose-transforms
//重新統計所需統計量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估計新的模型,[$i.acc] -> [$i.mdl]
gmm-est //該步驟增加混合高斯分量的數目
//輸出最后的模型
final.mdl = $i.mdl
train_sat.sh
說話人自適應模型,fmllr訓練腳本:
//生成先驗概率,統計計算fmllr所需統計量,[splice-feats spk2utt] -> [trans]
ali-to-post
weight-silence-post
gmm-est-fmllr
//通過對轉換后的特征重新統計,用於生成決策樹[final.ali feats.*lda.mat] -> [treeacc]
acc-tree-stats
//三音素綁定,[treeacc] -> [tree]
cluster-phone
compile-questions
build-tree //該步驟完成決策樹三音素聚類
//三音素模型初始化,[treeacc tree topo] -> [1.occ 1.mdl]
gmm-init-model
//將三音素決策樹的葉子替換為轉換后模型決策樹的葉子,[final.mdl 1.mdl final.ali] -> [ali.new]
convert-ali
//生成訓練圖,[1.mdl text l.fst] -> [train.fst]
compile-train-graph
//迭代訓練
for i < iteration
//重新對齊,[train.fst $i.mdl] ->[$i+1.ali]
gmm-align-compiled
//同lda,估計fmllr的矩陣 -> [fmllr.trans]
ali-to-post | weight-silence-post | gmm-est-fmllr
//組合變換矩陣,[trans.mat fmllr.trans] -> [trans.mat]
compose-transforms
//重新統計所需統計量,[$i.ali] -> [$i.acc]
gmm-acc-stats-ali
//估計新的模型,[$i.acc] -> [$i.mdl]
gmm-est //該步驟增加混合高斯分量的數目
//輸出最后的模型
final.mdl = $i.mdl