HTK手册_第一章 中文版

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

HTK中文手册纠错邮箱:jianglonghu@163.com内部资料,请务外传HTKBOOKV3.2第页-1-第一章HTK基础HTK是建立隐马尔可夫模型(HMM)的工具包,HMM能用于模拟任何时间序列,而HTK内核对类似过程是通用的。不过HTK主要用于设计构造基于HMM的语音处理工具,特别是识别器。因此,HTK中的一些基础组件专门用于这一任务。如上图所示,它主要有两个处理阶段。首先,HTK训练工具使用训练语料和相应的标注文件来估计HMM模型集的参数;第二阶段,使用HTK识别工具来识别未知语音。这本书主体的大部分内容都和这两个处理过程的机制相关。然而,在开始更细致的介绍之前我们需要了解HMM的基本原理,这将有利于我们对HTK工具有个整体把握,对HTK如何组织训练和识别过程也有一定的认识。本书第一部分提供简要介绍了HMM的基本原理,作为HTK的使用指南。这一章介绍了HMM的基本思想和在语音中的应用。后面一章简要介绍了HTK,而且对老版本的使用者还指出了2.0版及后续版本的主要不同之处。在本书的指南部分的最后一章,第三章,描述了一个简单的小词汇连续语音识别系统,以此为例介绍如何使用HTK构造一个基于HMM的语音识别系统。这本书的第二部分对第一部分进行了详细的讲解。这部分可以结合第三部分和最后一个部分(HTK的参考手册)来阅读。这个部分包括:每个工具的描述、配置HTK的各个参数和产生错误时的错误信息列表。最后需要指出的是这本书仅仅把HTK当成一个工具包,并没有提供使用HTK库作为编程环境的相关信息。HTKBOOKV3.2第页-2-1.1HMM的一般原理语音识别系统通常假设语音信号是编码成一个或多个符号序列的信息实体(如图1.1)。为了实现反向操作,即识别出给定说话人的语音的符号序列,首先将连续语音波形转换成一个等长的离散参数向量序列。假设这个参数向量序列是语音波形的一个精确表示,在一个向量对应的时间段内(代表性的有10ms等等),语音信号可看成是平稳的。虽然这一假设并不严格,但是这是合理的近似。典型的参数表示法常用的是平滑谱或线性预测系数以及由此衍生的各种其它的表示法。识别器的任务是在语音向量序列和隐藏的符号序列间实现一个映射。有两个问题使得完成这一任务非常困难,第一,因为不同的隐藏符号能有相似的发音,所以符号到语音的映射不是一一对应的,而且,发音人不同的心情和环境等因素会导致语音波形产生非常多的变化。第二,从语音波形中不能准确地识别出各符号间的边界,因此,不能将语音波形当做一个静态样本连接的序列。限制识别任务为孤立词识别就可以避免第二个问题中不知道单词边界位置的问题。如图1.2所示,这里的各段语音波形对应了固定词典中的一个简单符号(比如一个单词)。尽管我们对这一问题的简化有点理想化,然而它却有广泛的实际应用。此外,在处理更为复杂的连续语音之前介绍上述方法,为掌握基于HMM识别模型的基本思想打下了很好的基础。因此,我们首先将介绍使用HMMs的孤立词识别模型。1.2孤立词识别模型令每个发音单词用语音向量序列或观察向量O表示,定义为:12,,...,TOooo(1.1)其中to表示在t时刻观察到的语音向量。就可以认为孤立词识别问题是在计算:arg{(|)}maxiipwo(1.2)其中iw表示第i个词典词。这个概率不是直接计算的,而是由贝叶斯公式给出:(|)()(|)()iiipowpwpwopo(1.3)因此,给定先验概率()ipw,最可能的发音单词就仅仅取决于概率(|)ipow。给定观察序列O的维数,从发音单词的样本直接计算联合条件概率12(,,...,|)Tipooow是很难实现的。然HTKBOOKV3.2第页-3-而,如果一个单词的参数模型假设是马尔可夫模型,当估计条件观察值密度(|)ipow的问题被估计马尔可夫参数的简单问题代替,由观察向量计算12(,,...,|)Tipooow就可以实现了。在基于HMM的语音识别中,假设观察到的语音向量序列对应由马尔可夫模型产生的单词,如图1.3所示。马尔可夫模型是一个有限状态机,它每隔一定时间改变一次状态,在t时刻进入状态j输出语音向量to的概率密度为()jtbo,此外,从状态i到状态j的转移概率为ija。图1.3所示的是这一过程的一个例子,其中六个状态模型按状态序列X=1,2,2,3,4,4,5,6依次转移,产生了从1o到6o的输出序列。需要注意的是,在HTK中一个HMM的入口状态和出口状态是non-emitting的,在后文中我们将对整个模型的构建作更为详细地说明。模型M通过状态序列X产生观察序列O的联合概率由转移概率和输出概率决定。对图1.3的状态序列X有:122122222333(,|)()()()...POXMaboaboabo(1.4)然而,实际情况下仅仅只知道观察序列O,状态序列X是被隐藏的,这就是为什么称该模型为隐马尔可夫模型了。由于X是未知的,我们就要把所有可能的状态序列)(),...,3(),2(),1(TxxxxX考虑进去,则:(0)(1)()()(1)1(,|)()TxxxttxtxtXtPOXMaboa(1.5)其中)0(x表示模型的初态,)1(Tx表示模型的终态。HTKBOOKV3.2第页-4-对等式(1.5)进行改进,仅仅考虑最有可能的状态序列,则有:1^(0)(1)()()(1)(|)max{()TtxxxttxtxtXPOMaboa(1.6)虽然不易直接计算(1.5)式和(1.6)式,但是使用简单的递推公式可以对它们进行有效的计算。在更深地讨论之前,注意到如果(1.2)式能够求出,那么识别问题也就被解决了。假设一个模型iM对应一个单词iw,等式1.2就可以用1.3式求出,另外假设:(|)(|)iiPOwPOM(1.7)当然,所有的这些都要假设每个模型iM的参数{}ija和{}ijb是已知的。这里依赖于HMM框架的魅力和能力。假定一组训练样本对应一个特定模型,根据一个稳定有效的重估过程可自动求出该模型的参数。因此,当每个单词都有足够多的具有代表性的样本时,一个HMM就可以构造出来了,其中隐含了对真实语音的所有的内在变化的模拟。图1.4描述了HMM在孤立词识别中的应用。首先,在词典中只有“one”,“two”,“three”三个单词的情况下,用各个词典词的许多样本训练出对应的HMM。然后,为了识别未知单词,计算各个模型生成该单词的似然,找出最有可能的一个模型,这就识别出了这一未知的单词。1.3输出概率在详细讨论参数估计问题之前,先将输出概率分布{()}jtbo的形式定义清楚。设计HTK主要就是为了处理连续参数模型,它使用的是连续密度多元输出分布。当然,它也可以处理输出分布为离散概率的离散观察序列。为简单起见,本章仅考虑连续密度分布。在第七章将讲述使用离散概率建模与它的一些细微区别,而在十一章将作更为详细地讨论。和大多数连续密度HMM系统一样,HTK也使用混合高斯密度来描述输出分布,但它支HTKBOOKV3.2第页-5-持的范围更为广泛。HTK允许每个在t时刻的观察向量分成S独立的数据流sto,这样计算()jtbo的公式就是:11()(;;)ssSMjtjsmstjsmjsmmsrbocNou(1.8)其中,sM是s流中混合高斯成分的数量,jsmc表示第m个成分的权值,),;(uN表示多维高斯,均值为u,协方差为∑的高斯分布。则有:1'1()()221(;,)(2)||ououNoue(1.9)其中n为o的维数。指数sr是s流的权值1,它用于给某些特定的流更高的权值,且只能手工设置。现在的HTK工具还不能估计出它的值。使用多个数据流可以分别模拟多种信息源,在HTK中流的处理是十分常见的。但是它的语音输入模块假设数据源最多可以分成四个数据流。在第五章将更详细地讨论这些,到目前为止,知道缺省的数据流划分就足够了,缺省数据流包括基本参数向量、一阶导、二阶导和log域的能量。1.4Baum-Welch重估要求出一个HMM的参数,首先需要大致猜测它们可能是什么。之后,使用所谓的Baum-Welch重估公式就可以使用最大似然判决准则(ML)找出更准确的参数。在第八章将详细介绍用在HTK中的公式,在这里只是简单地介绍一些基本公式。首先,需要指出的是,因为可以认为每个流在统计意义上独立,所以包含多个数据流并不会显著地改变问题实质。另外,混合高斯成分可以看成是子状态(sub-state)的一种特殊形式,其转移概率就是该成分的权值(如图1.5)。因此,问题的实质就是估计HMM的均值和方差,其中每个状态输出分布是一个单高斯,有:1'1()()21()(2)||tjtjjououjtnjboe(1.10)1通常当作一个码本指数来引用。HTKBOOKV3.2第页-6-如果在这个HMM中只有一个状态j,那么参数估计将会很容易。ju和j的最大似然估计就是简单的求平均,即:^11TjttuoT(1.11)和^^'11()()TtjtjtououjT(1.12)当然在实际中,通常都有很多状态并且因为隐含的状态序列是未知的,所以观察向量和每个状态并不是一一对齐的。注意,如果能够做到向量和状态的近似对应,那么就可以使用公式(1.11)和(1.12)给出参数的初始值。事实上,HTK中的HInit工具就是这么实现的。HInit首先在模型状态中均匀地划分训练观察向量,然后用公式(1.11)和(1.12)给出每个状态的均值和方差的初始值,再用下面将要提到的Viterbi算法找出最大似然状态序列,重新给状态分配观察向量,最后再用公式(1.11)和(1.12)得到新的更好的初始值。重复上述过程,直到估计值不再改变为止。因为每个观察序列的全部似然是基于所有可能的状态序列的总和的,所以每个观察向量to都会影响计算每个状态j的最大似然值。换句话说,每个观察向量根据模型的概率按比例分配给每一个状态,而不是在上述的近似中将每个观察向量分配给某个特定状态。因此,如果()jLt表示在时刻t状态j的概率,则上述的公式(1.11)和(1.12)变成下面的加权平均:^11()()TjttjTjtLtouLt(1.13)和'^11()()()()TjtjtjtTjjtLtououLt(1.14)其中分母的和包括了所需的规整。公式(1.13)和(1.14)是计算HMM均值和方差的Baum-Welch重估公式。我们可以推导出相似但稍微复杂一点的转移概率计算公式(见第八章)。当然,在使用公式(1.13)和(1.14)之前,状态占有率必须先求出来,这个可以用前向-后向算法来计算。对某个有N个状态的模型M,定义前向概率2()jat为:1()(,...,,()|)jtatPooxtjM(1.15)其中()jat是在t时刻进入状态j观察到的前t个语音向量的联合概率。这一前向概率可以使用下面的递归公式计算:2因为输出分布是密度,所以不是真正意义上的概率,但这是比较方便的假定。HTKBOOKV3.2第页-7-12()(1)()Njiijjtiatatabo(1.16)该式取决于在t时刻状态为j的概率,以及对所有的被转移概率ija加权过的前一时刻状态i累加前向概率,由此可推导出观察向量to。状态1和状态Nnon-emitting3使上式中的累加范围有了一点独特的限制。上述的初始条件为:1(1)1a(1.17)11(1)()jjjaabo(1.18)其中Nj1,终止条件为:12()()NNiiNiaTaTa(1.19)注意到,由()jat的定义可以得出,(|)()NPOMaT(1.20)因此,前向概率的计算也能求出总概率(|)POM。后向概率定义为()jt:1()(,...,|(),)jtTtPooxtjM(1.21)类似于前向概率,后向概率也可以用下面的递推公式计算出来,112()()(1)Niijjtjjtabot(1.22)初

1 / 13
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功