kaldi学习资料

Dan povey 主页,有kaldi的详细入门文档,以及相关的论文
kaldi官网
kaldi—github

系统搭建过程及生成文件解释:
http://blog.sina.com.cn/s/blog_444061c70101hx7l.html
单音素训练:
https://blog.csdn.net/u010731824/article/details/69668765
https://blog.csdn.net/baidu_36137891/article/details/77849041
https://blog.csdn.net/fengzhou_/article/details/77996244
三音素训练:
https://blog.csdn.net/u010731824/article/details/70161677
决策树状态绑定:
https://blog.csdn.net/u010731824/article/details/69668647

一些查看输出文件命令(配置好PATH后,在s5demo下运行):

查看MFCC特征参数,对应文本id

copy-feats ark:mfcc/raw_mfcc_train.1.ark ark,t:- | head

查看CMVN,对应说话人id

copy-matrix ark:exp/mono/cmvn.ark ark,t:-

查看决策树:

copy-tree --binary=false exp/mono/tree - | less

画出决策树:

draw-tree data/lang/phones.txt exp/mono/tree | dot -Tps -Gsize=8,10.5 | ps2pdf - ~/tree.pdf

查看训练图:

fstcopy 'ark:gunzip -c exp/mono/graphs.fsts.gz|' ark,t:- 

构造训练的fst网络,从源码级别分析,是每个句子构造一个phone level 的fst网络。这里采用预编译的原因是,可以尽量减少占用训练时间。$data/text 中包含对每个句子的单词级别(words level)或音素级别(phone level)的标注,L.fst是词典的fst表示,作用是将一串的音素转换成单词。构造monophone解码图就是先将text中的每个句子,生成一个fst(类似于语言模型中的G.fst,只是相对比较简单,只有一个句子),然后和L.fst进行composition 形成训练用的音素级别(phone level)fst网络(类似于LG.fst)。fsts.JOB.gz 中使用key-value 的方式保存每个句子和其对应的fst网络,通过 key(句子索引)就能找到这个句子的fst网络,value中保存的是句子中每两个音素之间互联的边(Arc),例如句子转换成音素后,标注为:“a b c d e f”,那么value中保存的其实是 a->b b->c c->d d->e e->f这些连接(kaldi会为每种连接赋予一个唯一的id),后面进行 HMM训练的时候是根据这些连接的id进行计数,进一步得到音素内(intra)状态的转移概率和音素间(inter)状态的转移概率。

查看音素与状态的对齐:

show-alignments data/lang/phones.txt exp/mono/40.mdl ark:exp/mono/ali.1 | more   (ali.1.gz 解压后城ali.1)

查看训练中的文本与转移状态的对齐,注意,显示的是每个文本和与之对齐的状态转移id

copy-int-vector "ark:gunzip -c exp/mono/ali.1.gz|" ark,t:- | head -n 2

状态转移id可如下查看:

show-transitions data/lang/phones.txt exp/mono/0.mdl  

pdf个数查询:

gmm-info --print-args=false exp/mono/0.mdl | grep "gaussians" | awk '{print $NF}'

模型参数查看,分为转移模型和发射模型参数:

gmm-copy --binary=false exp/mono/30.mdl - 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章