一个简单的HTK入门参考例子
- 格式:pdf
- 大小:130.89 KB
- 文档页数:5
一个简单的HTK入门参考例子
主要参考HTKBook和HTK(v.3.1): Basic Tutorial――Nicolas Moreau
1 综述
目标:建立一个孤立词识别系统,只包含yes和no两个词。
步骤:
1.1
A: 创建一个语料库,yes和no各录5次
B: 声学分析,把waveform的声音文件转换为mfcc格式
C: 模型定义: 为词典里的每一个词建立一个HMM原型
D: 模型训练: HMM模型初始化和迭代
E: 问题定义,即语法定义
F: 对测试集合进行识别
G: 评测
建立一些文件夹
1.2
HTK工具的一些标准选项
1.3
2 创建语料库
我们来录yes和no的读音,这些要用来做训练。同时,每段语音都要被标注,也就是说有一个文本文件与其对应描述它的内容。录音和标注可以用HSLab完成。
name.sig
HSLab
打开了录音和标注的图形界面。
录音
2.1
按Rec开始录音,按Stop结束。这样一个名字为name_0.sig的声音文件就被记录在当前目录了。如果你接着录音,name_1.sig就会被记录。Sig是HTK的格式。
标注
2.2
按Mark选择你要标注的段落,然后按Lableas键入名字,然后回车。我们的每段语音分成三部分,静音(sil), yes或者no, 静音(sil)。相邻的段不能重叠,可以有小的间隔。按Save 存储,Quit退出。
标注文件.lab格式如下:
4171250 9229375 sil
9229375 15043750 yes
15043750 20430625 sil
重命名
2.3
3 声学分析
从原始的声音文件转换为特征矢量文件:
Hcopy –A –D –C analysis.conf –S targetlist.txt
analysis.conf是一个配置文件,说明了特征矢量的特性。
targetlist.txt列出了源文件和目的文件的位置,即声音文件和特征文件。
配置文件
3.1
其中#后代表注释,参数意义以后详细说。
源/目的列表文件
3.2
4 HMM定义
先要定义HMM的原型,即有几个状态等等。我们选择有前后两个空状态的六状态HMM。示意如下:
5 HMM训练
初始化
5.1
可以用Hinit或者Hcompv
Hinit:命令如下
Hinit –A –D –T 1 –S trainlist.txt –M model/hmm0 –H model/proto/hmmfile –l label –L label_dir nameofhmm
trainlist.txt
是训练语料库里全部mfcc文件的列表。(data/train/mfcc/)
model/hmm0
是初始化后的HMM模型放置的目录,必须事先创建好!
model/proto/hmmfile
是名为nameofhmm的HMM原型。(proto/hmm_yes, _no, _sil)
label
指被标注的label哪个必须被用。
label_dir
是lab文件存放的目录。(data/train/lab)
HMM模型的名字。(yes, no, sil)
nameofhmm
注意:每个HMM模型都要重复用这个命令训练一次!
HCompv:对模型进行“平凡”的初始化,就是说HMM的每个状态拥有相同的均值和协方差矩阵,从整个训练语料中得到。
Hcompv –A –D –T 1 –S trainlist.txt –M model/hmm0flat –H model/proto/hmmfile –f 0.01
nameofhmm,
见Hinit
trainlist.txt:
hmmfile,
HMM模型输出目录,要和Hinit的不同,以免覆盖。
model/hmm0flat:
注意:label选项也可以使用,如果使用,则均值和方差由语料库中相应标注的部分得到。
Hcompv也输出了初始化后的HMM模型,但是我们只用它输出的vFloors文件,这个文件包含了全局协方差向量与某个音子的乘积。这个音子可以用-f设定。
这个文件在以后的训练中要用到。
我们在此只需执行Hcompv一次,得到vFloors文件就可以了。
注意:我按照作者的步骤进行是总是提示错误,后来我把一个HMM文件的前三行复制到vFloors文件前头才通过。
训练
5.2
我们使用HRest对HMM参数进行迭代估计,计算出最佳的参数。
HRest –A –D –T 1 –S trainlist.txt –M model/hmmi –H vFloors –H model/hmmi-1/hmmfile –l label –L label_dir nameofhmm
训练语料中全部mfcc文件的列表
trainlist.txt
HMM模型的输出目录,i从1开始,每次迭代加1
model/hmmi
vFloors
由HCompv得到的文件
是名字为nameofhmm的HMM模型文件,放在model/hmmi-1
hmmfile
训练预料中的标签(yes, no ,sil)
label
label_dir
标记文件所在目录 (data/train/lab)
要训练的HMM模型的名字(yes, no ,sil)
nameofhmm
每个HMM都要重复这个过程N次,我们例子2-3才就可以了。
最终的HMM模型存储在:hmm3\hmm_yes, hmm2\hmm_no, hmm1\hmm_sil
6 问题定义
关于问题定义的文件都要放在一个指定的文件夹下,def/。
语法和词典
6.1
我们的词典很简单,就是一个开始静音+yes/no+结束静音。写一个gram.txt文件:
系统还要知道HMM和词典中的变量的对应关系,即一个词典文件,dict.txt.
注意:此文件最后必须有一个空行。