(三)训练HMM模块

“(二)杂项准备"之后,我们就已经训练了一个hmm模型了——“hmm0”。

接下来,我们将以“hmm0”作为基础,一路训练到“hmm7"。

1、从“hmm0"训练到"hmm3":

执行以下3条命令:

以hmm0为基础,生成hmm1HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm0/macros -H ./hmm0/hmmdefs -M ./hmm1/ ./lists/monoOffSP
以hmm1为基础,生成hmm2HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm1/macros -H ./hmm1/hmmdefs -M ./hmm2/ ./lists/monoOffSP
以hmm2为基础,生成hmm3HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm2/macros -H ./hmm2/hmmdefs -M ./hmm3/ ./lists/monoOffSP

以上命令完成之后,在hmm1、hmm2、hmm3目录下都会生成macros和hmmdefs

2、“特殊处理”hmm4,并生成hmm5:

(1)获得hmm4目录下hmmdefs文件:

perl ./scripts/fixSil hmm3/hmmdefs hmm4/hmmdefs

(2)复制hmm3目录下macros至hmm4目录下:

cp hmm3/macros ./hmm4/macros

(3)手动编辑sil.hed文件,并置于config目录下,sil.hed内容如下

AT 2 4 0.2 {sil.transP}
AT 4 2 0.2 {sil.transP}
AT 1 3 0.3 {sp.transP}
TI silst  {sil.state[3],sp.state[2]} 

(4)生成hmm5:

HHEd -H ./hmm4/macros -H ./hmm4/hmmdefs -M hmm5/ config/sil.hed ./lists/monophones

此时,hmm5目录下会生成hmmdefs和macros

3、从“hmm5“训练到"hmm7“:

以hmm5为基础,生成hmm6HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm5/macros -H ./hmm5/hmmdefs -M ./hmm6/ ./lists/monophones
以hmm6为基础,生成hmm7HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm6/macros -H ./hmm6/hmmdefs -M ./hmm7/ ./lists/monophones

注:以上命令执行过后可能会有类似:“WARNING [-2331]  UpdateModels: sp[8] copied: only 0 egs”这样的WANGING,可以暂且忽略。

训练到“hmm7”,hmm模型就已经能达到不错的识别效果了,理论上来说,训练得越多,识别就会越精确。

若要训练hmm8、hmm9等等,只要参照以上的“HERest“命令即可。

不过,我打算就到此为止了。

让我们看看成果吧!

HTK Book涉及内容:

Chapter 3: 3.2.2 Step 7 - Fixing the Silence Models

时间: 2024-11-09 17:12:39

(三)训练HMM模块的相关文章

【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验三:按键模块② — 点击与长点击

实验三:按键模块② - 点击与长点击 实验二我们学过按键功能模块的基础内容,其中我们知道按键功能模块有如下操作: l 电平变化检测: l 过滤抖动: l 产生有效按键. 实验三我们也会z执行同样的事情,不过却是产生不一样的有效按键: l 按下有效(点击): l 长按下有效(长点击). 图3.1 按下有效,时序示意图. 图3.2 长按下有效,时序示意图. 如图3.1所示,按下有效既是"点击",当按键被按下并且消抖完毕以后,isSClick信号就有被拉高一个时钟(Short Click).

(转).net程序员转战android第三篇---登录模块之静态登录

这一篇我将分2个部分记录登录界面,第一部分是静态登录, 这部分将如何从界面布局.控件使用.文件关系.数据验证.登陆实现等5小块记录. 第二部分是动态登录,这块会基于上面的4小块,在数据验证不是静态数据, 而是通过WebService获取网络数据,然后解析网络数据,验证成功在进行文件关联,然后页面跳转,最后实现自动登陆; 需求分析 如图所见,对于一个程序员来说,不管你是做android\.NET\IOS,如果让你来做上图效果, 大家都会明白从哪里入手. 1:界面布局(分为3块,顶部标题栏.表单提交

孤荷凌寒自学python第八十四天搭建jTessBoxEditor来训练tesseract模块

(完整学习过程屏幕记录视频地址在文末) 由于本身tesseract模块针对普通的验证码图片的识别率并不高,据说需要进行专门针对具体某一型号的验证码图片的训练才可以,因此今天的学习重点是搭建jTessBoxEditor环境来进行tesseract训练数据的训练和生成. 是完全参照以下博客内容来进行的: https://www.cnblogs.com/zhongtang/p/5555950.html 具体操作过程见文末的操作过程屏幕录像. 在整个训练过程中我的主要感受是: 都说tesseract是基

require、module、exports dojo中的三个特殊模块标识

查看dojo源码过程中,发现这三个模块名并不以dojo.dijit.dojox开头,在dojo加载器中属于特殊模块名. require 这是一个上下文智能的加载器. 我们通过dojoConfig配置了一个package:myApp,现在对myApp目录下的文件可以使用如下方式请求: // this is "myApp/topLevelHandlers" define(["dojo"], function(dojo){ dojo.connect(dojo.byId(&

第三章:模块加载系统(requirejs)

任何一门语言在大规模应用阶段,必然要经历拆分模块的过程.便于维护与团队协作,与java走的最近的dojo率先引入加载器,早期的加载器都是同步的,使用document.write与同步Ajax请求实现.后来dojo开始以JSONP的方法设计它的每个模块结构.以script节点为主体加载它的模块.这个就是目前主流的加载器方式. 不得不提的是,dojo的加载器与AMD规范的发明者都是james Burke,dojo加载器独立出来就是著名的require.本章将深入的理解加载器的原理. 1.AMD规范

【转】Nodejs学习笔记(三)--- 事件模块

目录 简介及资料 事件常用函数及使用 emitter.on(event, listener) emitter.emit(event, [arg1], [arg2], [...]) emitter.once(event, listener) emitter.removeListener(event, listener) emitter.removeAllListeners([event]) emitter.listeners(event) emitter.setMaxListeners(n) 其它

爬虫(三)—— BeautifulSoup模块获取元素

目录 BeautifulSoup 一.BeautifulSoup简介 二.安装模块 三.解析器 四.Beautiful Soup的使用 五.查找元素 1.遍历文档树 2.搜索文档树 BeautifulSoup 一.BeautifulSoup简介 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过转换器实现惯用的文档导航.查找.修改文档的方式.Beautiful Soup 3 目前已经停止开发,官网推荐在现在的项目中使用Beautiful Soup

带你手写基于 Spring 的可插拔式 RPC 框架(三)通信协议模块

在写代码之前我们先要想清楚几个问题. 我们的框架到底要实现什么功能? 我们要实现一个远程调用的 RPC 协议. 最终实现效果是什么样的? 我们能像调用本地服务一样调用远程的服务. 怎样实现上面的效果? 前面几章已经给大家说了,使用动态代理,在客户端生成接口代理类使用,在代理类的 invoke 方法里面将方法参数等信息组装成 request 发给服务端,服务端需要起一个服务器一直等待接收这种消息,接收之后使用反射调 用对应接口的实现类. 首先我们需要实现底层的通信的服务端和客户端,可以有一下几种实

nginx三 之缓存模块

友情提示: 缓存模块是在动静分离的环境基础上搭建,动静分离可以参考http://www.cnblogs.com/dahuandan/p/6759212.html 介绍 提高网站响应速度是web应用不容忽视的目标,在之前动静分离的基础上,我们已经降低了后端服务器压力,提高了处理请求的性能,但是用户请求的静态资源是从硬盘读取,相比内存的性能还有很大的提高: Nginx自带的缓存模块可以把静态资源缓存到内存中,提高了用户请求静态资源的速度,并且nginx自带缓存模块配置简单,使用灵活,搭配第三方插件可