kaldi學習資料

Dan povey 主頁,有kaldi的詳細入門文檔,以及相關的論文
kaldi官網
kaldi—github

系統搭建過程及生成文件解釋:
http://blog.sina.com.cn/s/blog_444061c70101hx7l.html
單音素訓練:
https://blog.csdn.net/u010731824/article/details/69668765
https://blog.csdn.net/baidu_36137891/article/details/77849041
https://blog.csdn.net/fengzhou_/article/details/77996244
三音素訓練:
https://blog.csdn.net/u010731824/article/details/70161677
決策樹狀態綁定:
https://blog.csdn.net/u010731824/article/details/69668647

一些查看輸出文件命令(配置好PATH後,在s5demo下運行):

查看MFCC特徵參數,對應文本id

copy-feats ark:mfcc/raw_mfcc_train.1.ark ark,t:- | head

查看CMVN,對應說話人id

copy-matrix ark:exp/mono/cmvn.ark ark,t:-

查看決策樹:

copy-tree --binary=false exp/mono/tree - | less

畫出決策樹:

draw-tree data/lang/phones.txt exp/mono/tree | dot -Tps -Gsize=8,10.5 | ps2pdf - ~/tree.pdf

查看訓練圖:

fstcopy 'ark:gunzip -c exp/mono/graphs.fsts.gz|' ark,t:- 

構造訓練的fst網絡,從源碼級別分析,是每個句子構造一個phone level 的fst網絡。這裏採用預編譯的原因是,可以儘量減少佔用訓練時間。$data/text 中包含對每個句子的單詞級別(words level)或音素級別(phone level)的標註,L.fst是詞典的fst表示,作用是將一串的音素轉換成單詞。構造monophone解碼圖就是先將text中的每個句子,生成一個fst(類似於語言模型中的G.fst,只是相對比較簡單,只有一個句子),然後和L.fst進行composition 形成訓練用的音素級別(phone level)fst網絡(類似於LG.fst)。fsts.JOB.gz 中使用key-value 的方式保存每個句子和其對應的fst網絡,通過 key(句子索引)就能找到這個句子的fst網絡,value中保存的是句子中每兩個音素之間互聯的邊(Arc),例如句子轉換成音素後,標註爲:“a b c d e f”,那麼value中保存的其實是 a->b b->c c->d d->e e->f這些連接(kaldi會爲每種連接賦予一個唯一的id),後面進行 HMM訓練的時候是根據這些連接的id進行計數,進一步得到音素內(intra)狀態的轉移概率和音素間(inter)狀態的轉移概率。

查看音素與狀態的對齊:

show-alignments data/lang/phones.txt exp/mono/40.mdl ark:exp/mono/ali.1 | more   (ali.1.gz 解壓後城ali.1)

查看訓練中的文本與轉移狀態的對齊,注意,顯示的是每個文本和與之對齊的狀態轉移id

copy-int-vector "ark:gunzip -c exp/mono/ali.1.gz|" ark,t:- | head -n 2

狀態轉移id可如下查看:

show-transitions data/lang/phones.txt exp/mono/0.mdl  

pdf個數查詢:

gmm-info --print-args=false exp/mono/0.mdl | grep "gaussians" | awk '{print $NF}'

模型參數查看,分爲轉移模型和發射模型參數:

gmm-copy --binary=false exp/mono/30.mdl - 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章