Decoding graph construction in Kaldi(kaldi翻譯+個人理解)

kaldi英文鏈接:http://www.kaldi-asr.org/doc/graph.html

本系列的文章是自己從kaldi中挑選按有助於理解整個流程的部分,不知道能堅持多久,It is never too late to learn.這是我剛到TEG辦公室看到的,陰錯陽差此刻又出現在我面前,或許是在提醒我不要忘記它。

Overview of graph creation:

  整個的解碼圖可以理解爲HCLG=H o C o L o G,其中:

   G是acceptor(ie,它的輸入和輸出符號是一樣的),用來將語法解碼成語言模型。

   L是lexicon(字典),它的輸出符號是words,輸入符號是phones。

   C表示context-dependency(上下文依賴關係),輸出符號是phones,輸入符號是上下文依賴的phones,如windows of N phones,具體參見http://www.kaldi-asr.org/doc/tree_externals.html#tree_window

   H包含HMM的定義,它的輸出符號表示上下文依賴的phones,輸入符號表示transition-ids,而transition-ids就是編碼pdf-id和其他信息,具體參見http://www.kaldi-asr.org/doc/hmm.html#transition_model_identifiers

這是一個標準的方法,但是還有很多細節需要填充。我們想要保證輸出被確定和最小化,並且爲了HCLG被確定,我們插入了消歧符號(disambiguation symbols),具體參見http://www.kaldi-asr.org/doc/graph.html#graph_disambig。我們想盡可能保證HCLG是隨機的,在傳統的方法中採用的是push-weights,而kaldi確保隨機性的方法與之不同,採用的方法是是確保沒有圖形創建步驟“帶走”隨機性,具體參見http://www.kaldi-asr.org/doc/fst_algo.html#fst_algo_stochastic

一個公式總結就是:HCLG = asl(min(rds(det(H' o min(det(C o min(det(L o G)))))))),其中asl=="add-self-loops" and rds=="remove-disambiguation-symbols", and H' is H without the self-loops。

weight-pushing不屬於這個方法;相反,kaldi旨在確保只要G是隨機的,那麼圖形創建的任何階段都不能阻止結果的隨機性,( no stage of graph creation will stop the result from being stochastic),

  

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