1.首先是初始化GMM,使用的脚本是/kaldi-trunk/src/gmmbin/gmm-init-mono,输出是0.mdl和tree文件;
$cmd JOB=1 $dir/log/init.log \
gmm-init-mono $shared_phones_opt "--train-feats=$feats subset-feats --n=10 ark:- ark:-|" $lang/topo $feat_dim \
$dir/0.mdl $dir/tree || exit 1;
运行产生0.mdl和tree
查看其内容。
~/kaldi/src/gmmbin/gmm-copy --binary=false 0.mdl -
/home/ubuntu/williamli/project/kaldi/kaldi/src/gmmbin/gmm-copy --binary=false 0.mdl -
<TransitionModel> #转换模型
<Topology> #拓扑信息
<TopologyEntry>
<ForPhones> #表示包含的音素
##音素序列号
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
</ForPhones>
#单音素还可以细分为三个音素状态。每个都有自环和下一个状态
<State> 0 <PdfClass> 0 <Transition> 0 0.75 <Transition> 1 0.25 </State>
<State> 1 <PdfClass> 1 <Transition> 1 0.75 <Transition> 2 0.25 </State>
<State> 2 <PdfClass> 2 <Transition> 2 0.75 <Transition> 3 0.25 </State>
<State> 3 </State> #state 3没有pdf,没有转移
tree
~/williamli/project/kaldi/kaldi/src/bin/copy-tree --binary=false tree -
/home/ubuntu/williamli/project/kaldi/kaldi/src/bin/copy-tree --binary=false tree -
ContextDependency 1 0 ToPdf TE 0 26 ( NULL TE -1 5 ( CE 0 CE 1 CE 2 CE 3 CE 4 )
TE -1 3 ( CE 5 CE 6 CE 7 )
TE -1 3 ( CE 8 CE 9 CE 10 )
TE -1 3 ( CE 11 CE 12 CE 13 )
TE -1 3 ( CE 14 CE 15 CE 16 )
TE -1 3 ( CE 17 CE 18 CE 19 )
TE -1 3 ( CE 20 CE 21 CE 22 )
TE -1 3 ( CE 23 CE 24 CE 25 )
TE -1 3 ( CE 26 CE 27 CE 28 )
TE -1 3 ( CE 29 CE 30 CE 31 )
TE -1 3 ( CE 32 CE 33 CE 34 )
TE -1 3 ( CE 35 CE 36 CE 37 )
TE -1 3 ( CE 38 CE 39 CE 40 )
TE -1 3 ( CE 41 CE 42 CE 43 )
TE -1 3 ( CE 44 CE 45 CE 46 )
TE -1 3 ( CE 47 CE 48 CE 49 )
TE -1 3 ( CE 50 CE 51 CE 52 )
TE -1 3 ( CE 53 CE 54 CE 55 )
TE -1 3 ( CE 56 CE 57 CE 58 )
TE -1 3 ( CE 59 CE 60 CE 61 )
TE -1 3 ( CE 62 CE 63 CE 64 )
TE -1 3 ( CE 65 CE 66 CE 67 )
TE -1 3 ( CE 68 CE 69 CE 70 )
TE -1 3 ( CE 71 CE 72 CE 73 )
TE -1 3 ( CE 74 CE 75 CE 76 )
)
EndContextDependency LOG (copy-tree[5.5.267~1-27034]:main():copy-tree.cc:55) Copied tree
2.compile training graphs,使用的脚本是/kaldi-trunk/source/bin/compile-training-graphs,输入是tree,0.mdl和L.fst
输出是fits.JOB.gz,其是在训练过程中构建graph的过程;
查看L.fst
-
~/williamli/project/kaldi/kaldi/tools/openfst-1.6.7/bin/fstprint L.fst | head -n 16
-
16是行数自己可以修改
0 1 0 0 0.693147182
0 2 0 0 0.693147182
1 1 1 1 0.693147182
1 2 1 1 0.693147182
1 20 6 2
1 24 6 3
1 3 7 4
1 4 10 5
1