kaldi实例脚本运行
Getting started, and prerequisites.
rm/s5/run.sh
Data preparation
如果有GridEngine,
train_cmd="queue.pl -q all.q@a*.clsp.jhu.edu"
decode_cmd="queue.pl -q all.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 : Contains the dictionary for the current data. 包含当前数据的发音词典
- train : The data segmented from the corpora for training purposes. 训练数据的seg标注信息
- test_* : The data segmented from the corpora for testing purposes. 测试数据的seg标注信息
cd local/dict
head lexicon.txt
head nonsilence_phones.txt
head silence_phones.txt /train和/test结构相同
head text
head spk2gender.map
head spk2utt
head utt2spk
head wav.scp
wc train/text test_feb89/text 比较训练集和测试集的词数,文件大小 下一步创建原始的语言文件
utils/prepare_lang.sh data/local/dict '!SIL' data/local/lang data/lang
这将会产生一个lang的文件夹,里面包含一个FST描述语言文件,输出文件夹(data/lang). words.txt and phones.txt(data/lang/)被会用到,它们是openfst格式的符号表,代表从一个字符串到整数
的映射,
suffix .csl (in data/lang/phones) non-silence, and silence, phones 整数id键值对列表
phones.txt (in data/lang/) 音素符号表,处理FST的歧义符号,这些符号会被替换成 #1, #2 L.fst是编译后的lexicon FST格式。
用下面的命令可以查看L.fst的内容
fstprint --isymbols=data/lang/phones.txt --osymbols=data/lang/words.txt data/lang/L.fst | head
如果没有找到fstpirnt命令,则需要将OPenFst添加到PATH环境,或者简单点执行../path.sh 下一步使用上一步创建的文件,创建一个FST描述语法
local/rm_prepare_grammar.sh,将会产生/data/lang/G.fst.
Feature extraction
Monophone training
输出文件夹:
exp/mono
nohup steps/train_mono.sh --nj 4 --cmd "$train_cmd" data/train.1k data/lang exp/mono &
tail nohup.out
data/lang/topo 立即创建,1个音素的内部状态转移topo
data/phones.txt 音素 音素id 查看生成的模型文件0.mdl gmm-copy --binary=false exp/mono/0.mdl - | less
mdl file 包含两个对象,1个对象TransitionModel,它包含HMM拓扑信息;1个对象包含模型类型 查看tree文件
copy-tree --binary=false exp/mono/tree - | less
单音素的tree,它没有任何的splits。 exp/mono/ali.1.gz
copy-int-vector "ark:gunzip -c exp/mono/ali.1.gz|" ark,t:- | head -n 2

这是训练数据的维特比对其,对于每个训练文件都有1行。对齐文件里面有许多数字,都是特别大,它里面并不包含pdf的id,而是transition-id,它以音素的
topo原型,编码音素和transition,这是非常有用的,如果想查看transitions信息,则如下命令:
show-transitions data/lang/phones.txt exp/mono/0.mdl

为了更清晰的查看对齐,可以用下面的命令
show-alignments data/lang/phones.txt exp/mono/0.mdl "ark:gunzip -c exp/mono/ali.1.gz |" | less
查看训练过程;匹配log文件overall关键字行
grep Overall exp/mono/log/acc.{?,??}.{?,??}.log
当单音素训练完毕,可以进行解码测试,如下命令
utils/mkgraph.sh --mono data/lang exp/mono exp/mono/graph
which fstdeterminizestar
在图创建完后,开始解码
steps/decode.sh --config conf/decode.config --nj 20 --cmd "$decode_cmd" \
exp/mono/graph data/test exp/mono/decode
less exp/mono/decode/log/decode.2.log 从2.tra文件里查看真实的解码词序列,命令:
words.txt包含了词与int的关系
utils/int2sym.pl -f 2- data/lang/words.txt exp/mono/decode/scoring/2.tra 查看真实的解码词序列,然后再转换回整型:
utils/int2sym.pl -f 2- data/lang/words.txt exp/mono/decode/scoring/2.tra | \
utils/sym2int.pl -f 2- data/lang/words.txt 将符号转换成整数
tail exp/mono/decode/log/decode.2.log 查看decode.2.log结尾一些总结性信息
gmm-decode-faster
Decode features using GMM-based model.
kaldi实例脚本运行的更多相关文章
- unity脚本运行顺序具体的解释
unity脚本自带函数执行顺序例如以下:将以下脚本挂在随意物体执行就可以得到 Awake ->OnEable-> Start ->-> FixedUpdate-> Upd ...
- Linux版Matlab R2015b的bug——脚本运行的陷阱(未解决)
0 系统+软件版本 系统:CentOS 6.7 x64, 内核 2.6.32-573.el6.x86_64软件:Matlab R2015b(包括威锋网和东北大学ipv6下载的资源,都测试过) 1 脚本 ...
- genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤
genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤 1.lenove 机器启动时按F1 进入bios 设置,设置cpu virtu ...
- Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码
Ansible 脚本运行一次后,再次运行时出现报错情况,原因:ansible script 的格式不对,应改成Unix编码 find . -name "*" | xargs do ...
- 插件写法之脚本运行环境,mac和window检测
(function(root, factroy){ /* * 在这里进行对脚本运行环境的检测判断 * 浏览器中 有window对象 * node.js服务器端 有Global对象 * * IE11 ...
- 把Scala代码当作脚本运行
1. 在类UNIX系统上作为脚本运行 在类Unix系统上,你可以设置一个shell前导词来执行脚本.如下例: Script.scala #!/usr/bin/env scala !# println( ...
- 来来来,有讲一个吐血的故事(matlab)之脚本运行路径是什么
脚本运行路径是什么,这真是太重要!! 重要1:你默认保存的路径 重要2:你访问的相对路径 先放图: 再看一幅图: 我的操作,点击左侧的文件夹,使上框的显示栏路径不一样,再点击运行,发现pwd指示的路径 ...
- bat脚本运行py文件失败(一闪而过)
简单记录下问题及原因,方便回顾. 问题 通过 bat 脚本运行 py 文件时,终端一闪而过,没能成功运行. 查证后发现问题出在编码上: 首先检查下bat文件编码格式(推荐 notepad++ ) 打开 ...
- LoadRunner如何在脚本运行时修改log设置选项
LoadRunner如何在脚本运行时修改log设置选项?答案是使用lr_set_debug_message函数: lr_set_debug_message Sets the message level ...
随机推荐
- C# Excel添加超链接
操作当前单元格(关键代码就两行) Range range = (Range)ExSheet.Cells[i + 2, j + 1]; ...
- DRF框架之 serializers 序列化组件
1. 什么是序列化,其实在python中我们就学了序列化工具json工具,就是吧信息存为类字典形式 2. DRF框架自带序列化的工具: serializers 3. DRF框架 serializers ...
- python3编译安装no module named _ssl
使用源码编译安装python3.6.7以后用pip 安装库, 出现如下问题 Retrying (Retry(total=4, connect=None, read=None, redirect=Non ...
- JS StartMove源码-简单运动框架
这几天学习js运动应用课程时,开始接触一个小例子:“仿Flash的图片轮换播放器”,其中使用的StartMove简单运动框架我觉得挺好用的.这个源码也简单,理解其原理,自己敲即便也就熟悉了. 用的时候 ...
- Nmap扫描命令使用详解
Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在实施这些扫描工作之前,需要先简单 ...
- Android GreenDao 在组件化项目中的一个问题 - 2018年7月5日21:15:14
组件化项目使用GreenDao时注意的事项: 1.要在组件化中的基础库(domain层)创建实体类: 2.如果sycn之后不能生产Dao文件,使用 Android Studio 的Gradle插件重新 ...
- 从零开始搭建自己的VueJS2.0+ElementUI单页面网站(一、环境搭建)
原网址:https://blog.csdn.net/u012907049/article/details/72764151 前言 VueJS可以说是近些年来最火的前端框架之一,越来越多的网站开始使用v ...
- c++ 面试题(网络类)
1,若服务器方单独终止之后,客户端继续发数据会怎么样? https://blog.csdn.net/Nick_666/article/details/78342442 https://www.zhih ...
- 错误:libstdc++.so.6: wrong ELF class
1.安装mysql的时候报错缺少GLIBCXX_3.4.15 2.按照网上的下载了libstdc++.so.6.0.17 放到/usr/lib64 下 删除之前的libstdc++.so.6的链接 重 ...
- groupby一个as_index参数解释