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),

  

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