HTK手册-第三章Word文件下载.doc
- 文档编号:13174307
- 上传时间:2022-10-07
- 格式:DOC
- 页数:25
- 大小:385.50KB
HTK手册-第三章Word文件下载.doc
《HTK手册-第三章Word文件下载.doc》由会员分享,可在线阅读,更多相关《HTK手册-第三章Word文件下载.doc(25页珍藏版)》请在冰豆网上搜索。
HTK的发行软件中也包含了一个用于ARPA海军资源管理任务的1000个词的识别系统的例子,放在HTK软件包的目录RMHTK下。
在HTKDemo目录下有更多体现HTK性能和功能的实例。
另外还可以在HTKTutorial目录下找到对学习指南部分有帮助的一些例子的脚本。
这一章的指南里介绍的每个步骤,假定使用者在执行命令之前完全了解了所有部分,并对于每个HTK工具都可以参考第17章指南的最后一部分涉及说话人相关系统中加入新的说话人的自适应方法
(参考章节),所以所有的命令行参数和选项都应该是容易理解的。
3.1数据准备
任何构造识别器的工程的第一步都是数据准备。
训练数据和测试数据都需要准备。
在我们需要建造的系统里,所有的语音都需要由最原始的录音得到,而且需要对每句录音进行标注。
测试数据的重要性在于,可以通过测试数据度量识别器的性能,选择测试语料的一种简单的办法是由目标语法随机生成。
对训练数据来说,语料内容的标注和发音词典一起用于完成初始音素层的标注,而这个标注是开启HMM训练过程所必须的。
因为实际可能要将任意名字加入识别器,所以训练数据应该尽量提高音素覆盖率和均衡性[译者注:
训练数据各方面(比如音素覆盖、语法结构等)的均衡性对HTK训练极其重要,对识别来说,会提高识别器的鲁棒性和识别性能,对合成来说会提高合成语音的自然度]。
这里为了方便,我们用于训练的使用的提示脚本是从TIMITacoustic-phonetic数据库获取的。
根据上面的描述,在录数据之前,必须先定义音素集合、覆盖训练数据和测试数据的词典和目标语法。
3.1.1第一步——目标语法
为电话拨号创建一个语音操作接口,是我们系统的最终目标。
因此,识别器必须要能处理数字串和人名列表。
典型输入可能是这样的:
Dialthreethreetwosixfivefour
Dialninezerofouroneohnine
PhoneWoodland
CallSteveYoung
HTK规定了一个语法定义语言,用于制定简单的目标语法。
如下所示,它包括下面一组变量定义规则,描述需要识别的词。
语音拨号应用中,一个可能的语法如下:
$digit=ONE|TWO|THREE|FOUR|FIVE|SIX|SEVEN|EIGHT|NINE|OH|ZERO;
$name=[JOOP]JANSEN|[JULIAN]ODELL|[DAVE]OLLASON|[PHIL]WOODLAND|
[STEVE]YOUNG;
(SENT-START(DIAL<
$digit>
|(PHONE|CALL)$name)SENT-END)
间隔符”|”表示几选一的,方括号”[]”表示可选项,尖括号”<
>
”表示一个或可多个重复。
一个完整的语法可以被描述成一个如图3.1表示的网络。
上图中上层的目标语法描述是为了方便使用者。
HTK识别器实际上需要的是一个使用更低层的符号定义的词网络,称为HTK标准网格SLF格式(HTKStandardLatticeFormat(SLF)),在SLF里,每个词的实例和词之间的转换都明确列出了。
这种词网络可以使用HParse工具由上面的语法自动建立,比如,包含上面的语法的文件称为gram,执行下面的操作
HParsegramwdnet
将会建立一个等效的词网络并存储到wdnet文件中(如图3.2)。
3.1.2第二步——词典
建立一个词典的第一步是建立一个经排序的包含所有词的列表。
在电话拨号任务中,建立一个所有词的列表可以轻松地手工完成。
但是如果任务更加复杂,则应该根据训练数据中的例句建立词列表。
此外,若建立一个鲁棒性声学相关模型,就需要使用一个包含很多词的并且音素更均衡的大的句子集合。
因此,训练数据是由和电话拨号任务无关的英文句子组成。
下面,给出一个由句子提示建立一个词列表的简单例子。
这里训练用的句子都取自TIMIT数据库中使用的一些提示命令,并且为了便于处理,这些句子都重新编号。
例如,开始一部分数据内容可能是下面这样的:
S0001ONEVALIDATEDACTSOFSCHOOLDISTRICTS
S0002TWOOTHERCASESALSOWEREUNDERADVISEMENT
S0003BOTHFIGURESWOULDGOHIGHERINLATERYEARS
S0004THISISNOTAPROGRAMOFSOCIALIZEDMEDICINE
等等
我们希望得到的训练词列表wlist可以通过下面介绍的方式自动生成。
在使用HTK之前,首先需要以合适的方式编辑文本。
例如,可能需要将所有的空格变成换行,然后使用UNIX命令sort和uniq对词进行排序,最终的结果是一行一词并严格按字母顺序排序。
可以使用HTKTutorial目录中的脚本prompts2wlist完成此功能。
词典本身能由标准的输入源用HDMan建立。
举个例子,可以用BritishEnglishBEEP发音词典可通过匿名访问FTP:
svr-ftp.eng.cam.ac.uk/pub/comp.speech/dictionaries/beep.tar.gz获得。
需要注意的是应该移除词典开头的目录部分。
。
词典中的音标集合除重音记号之外都将被直接采用;
并且在每个发音的后面都加上一个短暂的停顿(sp)。
如果词典包含任何静音标记,则MP命令将把sil和sp合并成一个sil。
这些操作都可以用HDMan和一个包含三行命令的编辑脚本来完成(保存在global.ded中)。
ASsp
RScmu
MPsilsilsp
其中,cmu表示采用了一种重音符号的风格,这种风格中,词汇的重读程度是通过直接写在音素名后面的单个数字表示的(例如,eh2表示次重读(level2stress)的音素eh)。
命令
HDMan-m-wwlist-nmonophones1-ldlogdictbeepnames
会建立一个名为dict的新词典,通过搜索源词典beep和names,找到wlist中每个词的发音(见图3.3)。
这里的wlist可以仅仅是一个对目标语法中出现的所有词进行排序得到的列表。
其中,names是一个人工生成的包含目标语法中出现的每个名字的发音的文件。
HDMan的命令选项-l表示将构造词典相关的各种统计数据输出到一个log文件dlog中。
特别地,如果有些词在发音词典中没有出现,它将给出提示。
HDMan也能输出一个词典中出现的音素列表,这里称为monophones1。
一旦训练和测试数据录好后,将根据每个音素重估出一个HMM。
通常每个词典的词条格式如下:
WORD[outsym]p1p2p3....
方括号中的字符串指定词被识别出后的输出,缺损的输出是词本身。
如果是空字符串,则表示没有任何输出。
让我们来看看词典是什么样子,下面列出了一部分词典内容:
Aahsp
Aaxsp
Aeysp
CALLkaolsp
DIALdayaxlsp
EIGHTeytsp
PHONEfownsp
SENT-END[]sil
SENT-START[]sil
SEVENsehvnsp
TOtaxsp
TOtuwsp
ZEROziarowsp
需要注意的是某些词比如A和TO有多种发音。
SENT-START和SENT-END的实体有一个静音模型sil作为它们的发音,并且输出的是空符号。
3.1.3第三步——录数据
我们使用HTK工具HSLab录取训练和测试数据。
这是一个结合了录音和标注功能的工具。
在我们的例子里,仅使用HSLab来录音,因为标注已经存在了。
如果没有预先准备好的训练语料(如TIMIT数据库中的数据),你可以使用HSLab通过文本(上面介绍的那样)建立它们,或者使用HSLab标注你的训练语料。
HSLab按如下的方式调用
HSLabnoname
执行命令后,将显示这样的窗口,窗口上半部分是一个波形播放区域,下半部分是一排按钮,包括录音按钮等。
如果一个文件名当作命令参数,HSLab将播放这个文件。
这里,指定的文件名是noname,指明了将要录新的数据。
HSLab并不给用户特别的提示,只要录音按钮被按下,它就将录得的数据交替地写到noname_0,noname_1,….这些文件里,因此很容易写一个shell脚本,当有noname_0之类的文件出现时,就输出提示信息,并按照事先约定的提示方式重命名文件(如图3.4所示)。
当训练语料句子的提示按上面的方法生成后,测试语料句子的提示在录音前也要生成。
工具HSGen可以帮助我们完成测试句子提示的生成;
HSGen能随机的遍历一个词网络并输出穿越过程中遇到的每个词。
例如,下面的命令
HSGen-l-n200wdnetdict>
testprompts
将创建一个包含200个词的测试语料,内容可能是下面这样的:
1.PHONEYOUNG
2.DIALOHSIXSEVENSEVENOHZERO
3.DIALSEVENNINEOHOHEIGHTSEVENNINENINE
4.DIALSIXNINESIXTWONINEFOURZERONINEEIGHT
5.CALLJULIANODELL
...etc
可以用它生成测试数据所需的提示文件testprompts。
3.1.4第四步——建立标注文件
在训练一套HMM集合时,每个训练数据文件都必须对应一个音素级的标注。
如果没有手工标注的数据用来开启初始(bootstrp)的模型训练,可以采用一种被称为flat-start的方法来代替。
这种方法中,需要两套音素标注,开始使用的脚本中词之间不包含短暂停顿模型(sp),一旦一套合理的音素模型建立后,sp模型将被插入到可能有停顿的词之间。
两种音素标注的起始点都是一个按HTK标签格式规范的标注,可以很容易地用文本编辑器或脚本语言创建。
在R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HTK 手册 第三