kaldi中FST的可视化-以yesno为例
来源:互联网 发布:优酷视频for mac 编辑:程序博客网 时间:2024/06/06 00:25
1、kaldi解码过程
kaldi识别解码一段语音的过程是:首先提取特征,然后过声学模型AM,然后过解码网络HCLG.fst,最后输出识别结果。
HCLG是解码时的重要组成部分。HCLG.fst是由4个fst经过一系列算法(组合、确定化和最小化等)组合而成的。4个fst分别是H.fst、C.fst、L.fst和G.fst,分别是HMM模型、上下文环境、词典和语言模型对应的fst。
HCLG = asl(min(rds(det(H' o min(det(C o min(det(Lo G))))))))
上面的o表示组合,det表示确定化,min表示最小化,rds表示去除消岐符号,asl表示增加自环。
Kaldi中,单独的C.fst是不存在的。L和G合并生成LG.fst,然后在其基础上,根据决策树的结果,直接生成CLG.fst。
2、fst可视化的两个基本命令
fstprint和fstdraw是可视化用到的两个基本命令
fstprint用于打印fst,可以将二进制的fst以文件形式打印出来。Fstprint的基本用法如下
fstprint [--isymbols=xxxx --osymbols=xxxx ] FST
参数—isymbols和—osymbols分别表示输入符号表和输出符号表,这两个参数可以省略。
fstdraw用于画fst图,其使用方式跟fstprint类似。Fstdraw得到的结果是dot文件,通过dot命令转为ps格式,然后可以由ps2pdf命令转为pdf文档。
fstdraw使用示例
fstdraw [--isymbols=phones.txt --osymbols=words.txt] L.fst | dot –Tps | ps2pdf – L.pdf
3、yesno例子中各个fst的可视化
3.1 语言模型生成的G.fst可视化
yesno例子中的语言模型很简单
cat input/task.arpabo\data\ngram 1=4\1-grams:-1 NO-1 YES-99 <s>-1 </s>\end\
这个语言模型生成的G.fst,将其用fstprint打印出来(symbols选words.txt)
00NONO2.3025851200YESYES2.3025851202.30258512
上面是G.fst的打印结果。对于fst,其打印结果,一行一般有5列。一行对应一个弧。第一列和第二列,表示这个弧的起始状态和终止状态。第三列和第四列,表示输入和输出。第五列是权重。
将其对应的图打印出来,用fstdraw命令3.2 词典文件生成的L.fst
yesno例子中的词典文件也很简单,如下所示
cat data/local/dict/lexicon.txt<SIL> SILYES YNO N在data/lang目录下会找到两个fst,分别是 L.fst和L_disambig.fst。后者是在L.fst上加消岐符号。
用fstprint查看这两个fst
fstprint --isymbols=phones.txt --osymbols=words.txt L.fst01<eps><eps>0.69314718201SIL<eps>0.69314718211SIL<SIL>11NNO0.69314718212NNO0.69314718211YYES0.69314718212YYES0.693147182121SIL<eps>fstprint --isymbols=phones.txt --osymbols=words.txt L_disambig.fst0 1 <eps> <eps> 0.6931471820 2 SIL <eps> 0.6931471821 1 SIL <SIL>1 1 N NO 0.6931471821 3 N NO 0.6931471821 1 Y YES 0.6931471821 3 Y YES 0.6931471821 1 #0 #012 1 #1 <eps>3 2 SIL <eps>
用fstdraw看两个fst图,第一个图是 L.fst;第二个是 L_disambig.fst。实际生成HCLG时,用的是L_disambig.fst。
3.3 将L.fst(这里指L_disambig.fst)和G.fst合并起来,生成LG.fst。
10SIL<eps>0.82921469211YYES2.9960937511NNO2.9960937512.9960937502#1<eps>0.53397160821YYES1.6329075121NNO1.6329075121.63290739
3.4将LG.fst生成CLG.fst,得到的结果如下;因为是单音素,所以跟原先的LG.fst是一样的。
01SIL<eps>0.82921469200YYES2.9960937500NNO2.9960937502.9960937512#0<eps>0.53397160820YYES1.6329075120NNO1.6329075121.63290739
3.5 hmm模型生成的ha.fst。这里的hmm对应的fst,是不带自环的。
0101072021.1920929e-07010263013314012202.7057123213302.7057123214400.1434019823600.93624758724701.1904900125801.1904900132901.80542946341100.398507833351201.80542946421302.34313083431402.34313083451600.2131655225618060007822089240-2.38418579e-079000101128011123004.76837158e-071200013000
这个fst的第三列,输入,是transition-id;输出是音素。其对应的图如下
上面图中,圆圈表示的就是状态,里面的数字是状态的id。弧上面,冒号前面的数字时transition-id,冒号后面的数字是输出的音素;斜杠后面的数字是权重。
其中0-7-8-9-0这条“路径”,表示的就是音素Y; 0-10-11-12-0表示的就是音素N。
按照同样的方法,可以打印和画出 HCLGa.fst 和 HCLG.fst的内容。
其他有用的fst相关的命令: fstinfo fstcopy
- kaldi中FST的可视化-以yesno为例
- kaldi yesno example
- kaldi安装及yesno实例
- 运行Kaldi yesno实例时version `GLIBCXX_3.4.21' not found的原因
- 项目总结:以网络安全为例的大数据可视化设计
- 卷积神经网络可视化:以Keras处理猫图片为例
- Kaldi中遇到的问题
- fst
- 可视化通讯(以Anychat为例子)
- ARM中SDRAM的控制(以AT91Sam9260为例)
- kaldi 中lattice操作的几个工具
- kaldi中sge集群的使用
- kaldi 中安装GridEngine的一些注意事项
- Kaldi中特征文件格式的转换
- kaldi中深度学习的主要实现-
- kaldi 中安装GridEngine的一些注意事项
- Kaldi中特征文件格式的转换
- 求fst的模板程序
- sql语句实现查询实例
- unity中多屏显示
- 【SQL Server学习笔记】10:SELECT中开窗函数与OVER子句
- bzoj 1024: [SCOI2009]生日快乐(暴力dfs枚举所有情况)
- 自动化测试robotframework环境搭建及常用库
- kaldi中FST的可视化-以yesno为例
- Ubuntu Python2.7 django1.3 安装使用过程部分笔记
- jquery 克隆input
- Java
- Paint、Canvas
- Java
- 贪心+线段树(优先队列)——51nod1191 消灭兔子
- unity三种图片格式
- struts2的常量配置