Decoding-graph creation recipe (training time) (kaldi翻译+个人理解)

kaldi的图创建过程在训练阶段与测试阶段相比而言要相对简单一点,主要是因为不需要消歧符号,我们假定你已经读了这个recipe的test阶段,然而我没读,,,。

在训练过程中我们采用和test阶段相同的HCLG形式,除了G是由一个符合训练transcript的linear acceptor(当然这个setup和容易扩展到transciptes中的不确定情况)

Command-line programs involved in decoding-graph creation (在解码图中涉及到的命令行)

在这里,我们将解释在一个典型的训练脚本中脚本级别发生的事情;接下来我们挖掘项目内部发生的情况。假设我们已经构建了一个树和模型。接下来的命令会创造一个archive,其中包含对应的每一个训练transcripts的图HCLG

Decoding-graph creation recipe (training time) (kaldi翻译+个人理解)_第1张图片

(第一个token是语音id,即011c0201)。项目的输出格式为archive形式的graphs.fst;对于训练集中的每条语音而言,它以包含一个FST(以二进制性质)。此archive中的FSTs对应HCLG,但没有过渡概率(默认:compile-train-graphs中,-self-loop-scale=0,且-transition-scale=0)。这是因为这些graph将用于训练的而多个阶段,并且过渡概率将会发生变化,所以我们稍后再添加。但是archive(可理解为数据的存档)中的FSTs将具有silence 概率产生的概率(此处难以理解)(这些概率被编码进L.fst)。如果我们使用发音概率,这些也将出现。

解释了gmm-align-compile命令

阅读这些archives,解码训练数据,从而产生状态级对齐的命令如下所示,我们简短地回顾一下这个命令,尽管这页我们主要的关注点在于创建图的本身:

Decoding-graph creation recipe (training time) (kaldi翻译+个人理解)_第2张图片

 其中,前三个参数是概率尺度。transition-scale和self-loop-scale再这里出现是因为这个项目在解码前添加了转移概率。下面的参数是beam和retry-beam;我们用一个初始化的beam,且如果对齐没能达到最终状态,我们将用另一个beam。因为我们将声音的比例设置为0.1,我们需要以10来乘这些beams来获得可与声学可能性相媲美的数字。这个项目要求这个模型如下:根据迭代,$x.mdl会扩大到1.mdl或2.mdl;从archive(存档,graphs.fst)中读取图。引号中的参数被视为管道(不包括ark和I),并解释为由语音id索引的存档,其中包含特征。输出到cur.ali,且如果以文本形式编写,则看起来像上述的.tra文件,尽管证书现在不对应于单词id,而是对应于过渡id(transition-ids,个人以为最好理解为转移id)。

我们注意到两个阶段(图创建和解码)可以通过单个命令行程序gmm-align来完成,该程序可以根据需要来编译图。由于图的创建需要相当长的时间,因此在任何时候都需要图,而不仅仅是将他们写入磁盘中。

未完待续

你可能感兴趣的:(kaldi,kaldi)