kaldi实例脚本运行
2017-09-08 14:42
1051 查看
Gettingstarted,andprerequisites.
rm/s5/run.shDatapreparation
如果有GridEngine,train_cmd="queue.pl-qall.q@a*.clsp.jhu.edu" decode_cmd="queue.pl-qall.q@[ah]*.clsp.jhu.edu"
如果需要在本地运行
train_cmd="run.pl" decode_cmd="run.pl" 创建训练集和测试集
local/rm_data_prep.sh/export/corpora5/LDC/LDC93S3A/rm_comp 生成如下:local:Containsthedictionaryforthecurrentdata.包含当前数据的发音词典train:Thedatasegmentedfromthecorporafortrainingpurposes.训练数据的seg标注信息test_*:Thedatasegmentedfromthecorporafortestingpurposes.测试数据的seg标注信息
cdlocal/dict headlexicon.txt headnonsilence_phones.txt headsilence_phones.txt /train和/test结构相同
headtext headspk2gender.map headspk2utt headutt2spk headwav.scp
wctrain/texttest_feb89/text比较训练集和测试集的词数,文件大小 下一步创建原始的语言文件 utils/prepare_lang.shdata/local/dict'!SIL'data/local/langdata/lang 这将会产生一个lang的文件夹,里面包含一个FST描述语言文件,输出文件夹(data/lang). words.txtandphones.txt(data/lang/)被会用到,它们是openfst格式的符号表,代表从一个字符串到整数 的映射,
suffix.csl(indata/lang/phones)non-silence,andsilence,phones整数id键值对列表 phones.txt(indata/lang/)音素符号表,处理FST的歧义符号,这些符号会被替换成#1,#2 L.fst是编译后的lexiconFST格式。 用下面的命令可以查看L.fst的内容
fstprint--isymbols=data/lang/phones.txt--osymbols=data/lang/words.txtdata/lang/L.fst|head
如果没有找到fstpirnt命令,则需要将OPenFst添加到PATH环境,或者简单点执行../path.sh 下一步使用上一步创建的文件,创建一个FST描述语法
local/rm_prepare_grammar.sh,将会产生/data/lang/G.fst.
Featureextraction
Monophonetraining
输出文件夹:
exp/mono
nohupsteps/train_mono.sh--nj4--cmd"$train_cmd"data/train.1kdata/langexp/mono&
tailnohup.out data/lang/topo立即创建,1个音素的内部状态转移topo data/phones.txt音素音素id 查看生成的模型文件0.mdl gmm-copy--binary=falseexp/mono/0.mdl-|less
mdlfile包含两个对象,1个对象TransitionModel,它包含HMM拓扑信息;1个对象包含模型类型 查看tree文件
copy-tree--binary=falseexp/mono/tree-|less 单音素的tree,它没有任何的splits。 exp/mono/ali.1.gz
copy-int-vector"ark:gunzip-cexp/mono/ali.1.gz|"ark,t:-|head-n2
这是训练数据的维特比对其,对于每个训练文件都有1行。对齐文件里面有许多数字,都是特别大,它里面并不包含pdf的id,而是transition-id,它以音素的 topo原型,编码音素和transition,这是非常有用的,如果想查看transitions信息,则如下命令:
show-transitionsdata/lang/phones.txtexp/mono/0.mdl
为了更清晰的查看对齐,可以用下面的命令
show-alignmentsdata/lang/phones.txtexp/mono/0.mdl"ark:gunzip-cexp/mono/ali.1.gz|"|less
查看训练过程;匹配log文件overall关键字行 grepOverallexp/mono/log/acc.{?,??}.{?,??}.log
当单音素训练完毕,可以进行解码测试,如下命令 utils/mkgraph.sh--monodata/langexp/monoexp/mono/graph
whichfstdeterminizestar 在图创建完后,开始解码
steps/decode.sh--configconf/decode.config--nj20--cmd"$decode_cmd"\ exp/mono/graphdata/testexp/mono/decode
lessexp/mono/decode/log/decode.2.log 从2.tra文件里查看真实的解码词序列,命令: words.txt包含了词与int的关系
utils/int2sym.pl-f2-data/lang/words.txtexp/mono/decode/scoring/2.tra 查看真实的解码词序列,然后再转换回整型:
utils/int2sym.pl-f2-data/lang/words.txtexp/mono/decode/scoring/2.tra|\
utils/sym2int.pl-f2-data/lang/words.txt将符号转换成整数
tailexp/mono/decode/log/decode.2.log查看decode.2.log结尾一些总结性信息
gmm-decode-faster
DecodefeaturesusingGMM-basedmodel.
相关文章推荐
- Kaldi语音识别工具运行TIMIT数据库实例
- perl通过文件锁让脚本单实例运行
- Python实例浅谈之五Python守护进程和脚本单例运行
- Python实例浅谈之五Python守护进程和脚本单例运行
- Python实现保证只能运行一个脚本实例
- [shell应用进阶]:限制同时运行脚本实例的个数 -- 串行化:换一个思路。
- DPDK安装配置(附脚本)及实例程序运行
- shell脚本只运行一个实例
- 如何确保 Shell 脚本只有一个实例运行
- Python实例浅谈之五Python守护进程和脚本单例运行
- Kaldi学习手记(二):Timit实例运行
- perl通过文件锁让脚本单实例运行
- linux shell 确保脚本只有一个运行实例
- 如何使Shell脚本只有一个实例在运行
- 限制同时运行脚本实例的个数 -- 串行化
- Python实现保证只能运行一个脚本实例
- Kaldi运行timit实例记录与结果
- Linux(centos 6.5) 调用java脚本以及定时运行的脚本实例及配置文件具体解释
- NS3入门学习(一)之脚本运行实例
- Kaldi 学习笔记之swithbaord运行环境脚本解析