机器学习&数据挖掘笔记_13(用htk完成简单的孤立词识别)
最近在看图模型中著名的HMM算法,对应的一些理论公式也能看懂个大概,就是不太明白怎样在一个具体的机器学习问题(比如分类,回归)中使用HMM,特别是一些有关状态变量、观察变量和实际问题中变量的对应关系,因此目前急需一个实际例子来加深对HMM算法的仰慕,大家如有好的例子来具体学HMM算法的话,欢迎分享!众所周知,著名的HMM开源库为Hidden Markov Model Toolkit(以下简称HTK),而HTK在语音识别领域应用很成功,这2天花了些时间学习了HTK的使用,完成的是最简单孤立词的识别,即Yes、No的语音识别,网上这方面的教程纵多,见参考资料部分。
当然了,进行实验的前提是正确安装HTK,安装过程可以结合HTK目录下(HTK解压后所在目录)的readme文件和文章windows下安装编译HTK语音识别工具包。
我主要是参考文章语音识别工具箱之HTK安装与使用中的步骤来完成Yes/No语音识别的,大概的步骤和博主的差不多(这里不再重现该过程,因为这方面资料实在太多),下面主要讲下一些细微的需要注意的地方:
1. 录音的原文件不能太少,不然在进行HMM初始化时很容易报错。我这里Yes和No都录的是25次。
2. 在用HSLab.exe录音时,由于这个小软件实在是不太好用,有些bug。每次录完2个音,把它标注好,重命名(即手动命名,按照一定顺序,不要重名,下次录音前需把该软件给后重新打开,否则即使你是重新new了一个文件后录的音,在你标注音频文件后保存文件时该软件很有可能会把以前标注过的音频信息给重复过来,这样在后面的HInit 步骤会老出错。因此,在每次标注音频文件.lab时,一定要保证其标注的信息只对应一个音频文件.sig。注意标注时,htk时间后面的单位是10us,转换成秒时需要除以10^7.
3. 在进行Hcompv步骤时,只需运行一次来得到vFloors文件(不需要对yes,no,sil分别运行)。
4. 如果在HRest步骤出现与vFloors有关的错误,则可以在HRest命令中省去与vFloors相关的内容,这样一般不太会影响后面HMM的训练和识别。
5. 在HParse步骤时,在建立gram.txt文件时,文件的最后要有一个空行,否则HParse步会一直失败。
其它方面基本按照语音识别工具箱之HTK安装与使用就可以了。另外,还HTK (v.3.1): Basic Tutorial和htkbook也是非常好的参考资料。
由实验可知,这里每个单词都定义为一个HMM模型,HMM模型中状态的个数是人为先验设定的,这里统一采用4个(状态数可以不相同),每个状态的实际含义大致是该单词发音的声母、韵母等(也不一定严格对应),多个状态的序列构成了一个单词。每个状态的输出(即观察变量)为GMM的参数向量,这些参数向量的长度和训练语音断的MFCC特征长度一致,这里都是39维。
参考资料:
HTK (v.3.1): Basic Tutorial.pdf
htkbook.pdf
机器学习&数据挖掘笔记_13(用htk完成简单的孤立词识别)的更多相关文章
- 机器学习&数据挖掘笔记_14(GMM-HMM语音识别简单理解)
为了对GMM-HMM在语音识别上的应用有个宏观认识,花了些时间读了下HTK(用htk完成简单的孤立词识别)的部分源码,对该算法总算有了点大概认识,达到了预期我想要的.不得不说,网络上关于语音识别的通俗 ...
- 基于HTK语音工具包进行孤立词识别的使用教程
选自:http://my.oschina.net/jamesju/blog/116151 1前言 最近一直在研究HTK语音识别工具包,前几天完成了工具包的安装编译和测试,这几天又按耐不住好奇,决定自己 ...
- 亲自动手用HTK实现YES NO孤立词识别
很久以前的发在研学论坛的帖子了,再重新整理了一下,希望对新手有用. 完整版链接:http://yun.baidu.com/s/1hapcE 第一步 创建语音文件 录音 命令:HSLab any_nam ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
- [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
- 机器学习&数据挖掘笔记_15(关于凸优化的一些简单概念)
没有系统学过数学优化,但是机器学习中又常用到这些工具和技巧,机器学习中最常见的优化当属凸优化了,这些可以参考Ng的教学资料:http://cs229.stanford.edu/section/cs22 ...
- 机器学习&数据挖掘笔记_12(对Conjugate Gradient 优化的简单理解)
数学优化方法在机器学习算法中至关重要,本篇博客主要来简单介绍下Conjugate Gradient(共轭梯度法,以下简称CG)算法,内容是参考的文献为:An Introduction to the C ...
- 机器学习&数据挖掘笔记_19(PGM练习三:马尔科夫网络在OCR上的简单应用)
前言: 接着coursera课程:Probabilistic Graphical Models上的实验3,本次实验是利用马尔科夫网络(CRF模型)来完成单词的OCR识别,每个单词由多个字母组合,每个字 ...
随机推荐
- PyQt4学习资料汇总
一个月前研究了下PyQt4,感觉比较不错.相比wxpython,界面美观了很多,并且将界面设计与代码逻辑很好的分离了开来.关于PyQt4的资料也不少,这里我将我找到的资料汇总一下,以防自己以后忘得一干 ...
- 7.添加基于Spring的WebService拦截器
客户端拦截器: public class AccountInterceptor extends AbstractPhaseInterceptor<SoapMessage>{ private ...
- 从RAM新建QIcon对象 / Create a QIcon from binary data
一般,QIcon是通过png或ico等图标文件来初始化的,但是如果图标资源已经在内存里了,或者一个zip压缩文件内,可以通过QPixmap作为桥梁,转换为图标. zf = zipfile.ZipFil ...
- distinct order by 排序问题
使用类似“SELECT DISTINCT `col` FROM `tb_name` ORDER BY `time` DESC”这样的sql语句时,会遇到排序问题. 以上面的sql语句分析:order ...
- C# Lambda表达式详解,及Lambda表达式树的创建
最近由于项目需要,刚刚学完了Action委托和Func<T>委托,发现学完了委托就必须学习lambda表达式,委托和Lambda表达式联合起来,才能充分的体现委托的便利.才能使代码更加简介 ...
- java提高篇(二十)-----集合大家族
在编写java程序中,我们最常用的除了八种基本数据类型,String对象外还有一个集合类,在我们的的程序中到处充斥着集合类的身影!java中集合大家族的成员实在是太丰富了,有常用的Arra ...
- Canny算子边缘检测(cvCanny)
Canny是常用的边缘检测方法,其特点是试图将独立边的候选像素拼装成轮廓. John Canny于1986年提出Canny算子,它与Marr(LoG)边缘检测方法类似,也属于是先平滑后求导数的方法. ...
- redis系列-主从复制
redis自身提供了主从的机制,通过配置可以实现服务的备份(Master->Slave). 配置项 slaveof <masterip> <masterport> mas ...
- Java序列化格式详解
RPC的世界,由于涉及到进程间网络远程通信,不可避免的需要将信息序列化后在网络间传送,序列化有两大流派: 文本和二进制. 文本序列化 序列化的实现有很多方式,在异构系统中最常用的就是定义成人类可读的文 ...
- CocoaPods 深入使用
在 CocoaPods 使用中介绍了基本的使用 写项目的时候想用到 SQLite.swift第三方库,但是问题来了 pod search SQLite.swift //执行这条语句,搜索不到结果 但 ...