語音識別——kaldi HMM-GMM全部訓練腳本分解

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