一个简单的HTK入门参考例子

  • 格式:pdf
  • 大小:130.89 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一个简单的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.

注意:此文件最后必须有一个空行。