使用kaldi训练mono phone之后会在esp/mono/目录下产生一个40.mdl文件, 查看exp/mono/40.mdl 命令:
kaldi/src/gmmbin/gmm-copy --binary=false exp/mono/40.mdl -
1. 首先是<TransitionModel>
<Topology>
<TopologyEntry>
<ForPhones>
音素hmm状态转移概率模型
</ForPhones>
</TopologyEntry>
</Topology>
不过看到的0.mdl和40.mdl转移概率值是相同的,所以转移概率等应该是储存在HCLG.fst文件中的。
2. 接着是<Triples> 音素 hmm状态index pdfid
<Triples> 568
1 0 0
1 1 1
1 2 2
1 3 3
1 4 4
2 0 0
2 1 1
2 2 2
2 3 3
2 4 4
.....
1~20为SIL,含5个状态
21~176为发音音素,含3个状态
共有20*5+(177-21)*3=568个transition state
得益于决策树的聚类, PDF数量减少了一些,为137.
3. 然后是<Logprobs>
这个LogProbs是和transition-id对应起来的,描述了转移概率.
4. 然后是<Dimension>39 <numPDFs>201
对角GMM 的参数,重复201次 每个对应hmm的一个pdf,一共201个
<DiagGmm>
<GCONSTS>[-85.27087]
<WEIGHTS>[1] 权重
<MEAN_INVVARS>[…]39维 均值
<INV_VARS>[…]39维 方差
</DiagGmm>
其中:为了方便计算,在里面记录了每一分量多维高斯分布里的常量部分取log后的数值gconsts。
参考:
[1] /p/9b6cc95668a9