专利名称:上下文相关的汉语语音识别建模方法
技术领域:
本发明涉及一种语音识别建模方法,特别是能够应用于嵌入式设备的上下文相关的汉语声学建模方法。
背景技术:
语音识别技术是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。语音识别技术与语音合成技术相结合可以使人们能够甩掉键盘,通过语音命令进行操作,与机器进行语音交流。近二十年来,随着计算机技术的飞速发展,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。
但是,在现阶段,在语音识别技术走向实际应用的过程中,还存在着计算机的计算能力、存储能力和语音识别系统识别率之间的矛盾。怎样在内存有限的嵌入式设备上进行高精度的声学建模是关系到语音识别系统实用化的一个关键性技术问题。
中国专利公开CN1264468A揭示了一种将语音输入变换成文字的计算机执行的听写系统。该系统利用文字到语音的结构产生一个给定单词的口语译文,并且这个给定单词口语译文在声音设备上输出,以便语音识别系统的用户知道该语音识别期望一个给定单词将如何发音。
中国专利公开CN1288225A揭示了一种语音识别系统和语音识别控制方法。该发明的技术方案是在预记录的语音识别表中预先存储作为期望值的操作者的语音。当任意未寄存的端子电子设备连接到控制装置时,控制装置寄存电子设备提供的语音识别表,并在操作者输入语音时,由控制装置把操作者的语音与预寄存的电子设备的语音识别表比较,然后根据操作者的语音与语音识别表的比较结果来控制电子设备的输入/输出。
中国专利公开CN1264468A中所揭示的语音识别系统中采用上下文相关的音素建模方法,这样建立的声学模型虽然具有较高的精度,但是模型的体积比较大,很难直接装入到嵌入式设备的内存中,难以满足嵌入式设备的实际应用需要。
上述公开专利中存在的问题在于其所需的内存较大,不适合于在嵌入式设备中使用。
发明内容
本发明结合汉语的特点,提出一种基于状态聚类的声母右相关、韵母左相关的上下文相关音素建模方法。使用该建模方法训练出来的声学模型具有较高的模型精度和较小的模型体积,特别适于一些内存较小的嵌入式设备的使用场合。为了进一步压缩声学模型的体积,同时尽量避免损失模型的精度,以保证语音识别系统在嵌入式设备中的性能,本发明采用子空间聚类算法对声学模型进行压缩。在基本不损失语音识别系统性能的前提下,本方法能够把语音识别系统的声学模型压缩到原有模型大小的1/10~1/5。
本发明的目的是提供一种适用于嵌入式设备的上下文相关的汉语声学建模方法,该方法在初始模型训练过程中能够使所有训练样本的似然概率损失最小,在模型的压缩过程中不需要任何训练语料的参与,由此可以方便快捷实现模型规模的缩减,并保证模型的精度没有大的损失。
本发明提供了一种适用于嵌入式设备的上下文相关的汉语声学建模方法,包括步骤(a)将汉语语音的声母与紧邻其右侧的韵母相关,而韵母与紧邻其左侧的声母相关,创建上下文相关的基本建模单元;(b)利用状态聚类法对模型的参数进行训练,以得到初始隐马尔可夫(HMM)模型;和(c)利用子空间聚类算法对初始隐马尔可夫模型进行压缩,以产生最终模型。
另一方面,本发明可以提供一种计算机可读记录介质,用于存储执行上下文相关的汉语语音识别建模方法的程序,(a)将汉语语音的声母与紧邻其右侧的韵母相关,而韵母与紧邻其左侧的声母相关,创建上下文相关的基本建模单元;(b)利用状态聚类法对模型的参数进行训练,以得到初始隐马尔可夫(HMM)模型;和(c)利用子空间聚类算法对初始隐马尔可夫模型进行压缩,以产生最终模型。
本发明主要是针对汉语发音的特点,提出一种声母右相关、韵母左相关的半音节Diphone建模方法;以所有训练样本的似然概率损失最小为目标,采用状态聚类的方法进行Diphone模型的状态输出分布的共享和模型参数的训练;采用子空间聚类算法进行声学模型压缩。针对模型压缩这种应用的特殊需要,首先采用LBG算法的对原始高斯模型进行聚类以生成初始的高斯码本,然后采用K-Means聚类算法对高斯码本进行优化,生成最终的高斯码本。此方法的主要优点是在模型的压缩过程中不需要任何训练语料的参与。
通过参考附图阅读说明书将使本发明的特征和优点变得更加清楚,其中图1是根据本发明实施例的汉语声学建模的模型训练的流程图;图2是表示常用的隐马尔可夫的拓扑结构;图3是根据本发明实施例的基于状态聚类的输出分布共享算法流程图;图4是表示隐马尔可夫状态聚类输出分布共享示意图;和图5是表示根据本发明的基于子空间聚类的模型压缩流程图。
具体实施例方式
下面首先说明语音识别的基本原理。
语音识别包括两个基本过程,即训练过程和识别过程。训练过程的主要任务是利用大量语音训练样本,建立声学模型,用于描述声学层知识。在复杂的识别系统中,还需要利用大量的文本语料,训练语言模型,用于描述语言层知识。在识别过程中,利用训练过程中得到的声学模型和语言模型,对待测语音样本进行解码,将其识别为文本。本专利描述的技术创新主要集中于训练阶段的声学模型训练过程。
汉语作为一种语言,有自身独特的语言特点,利用这些特点进行声学模型建模,可以在减少模型体积的同时,最大限度地提高模型的性能。
下面把汉语和常见的西方语言英语作一个比较。最显著的区别在于,汉语是一种象形文字,而英语是一种拼音文字。英语中的最小的语言单位是词,词可以被不停的创造,词的数目也在不停的变化中。每当出现一个新事物或新概念的时候,通常都需要重新创造出一个新词来描述它。在发音方面,英语每个词的发音是由一定数量的音节相互连接构成了整个词的发音,不同音节之间的耦合作用很强。而汉语的最小构成单位是字,这些字可以单独或彼此联合构成词,来描述不同的事物和概念。可见,“字”是汉语最基本也是相对独立的构成单元,这种“字”的概念是英文中没有的。在发音方面,汉语中每个字都是一个独立的音节,每个音节由一个声母后接一个韵母组成。所有汉字的发音组成408个不同的音节。由于汉语在构词时,字是相对独立的,因此其发音的音节之间的独立性也相对较强。本发明正是利用汉语的音节间的相对独立性来进行高精度的声学特征建模的。
图1是表示声学模型训练过程的概括流程图。首先,在步骤S11,选择基本的建模单元,并定义基本建模单元之间的上下文耦合关系。然后,在步骤S12利用状态聚类的方法,利用语音训练数据,对隐马尔可夫模型的参数进行训练,得到初始的HMM。接下来,在步骤S13利用子空间聚类算法对初始模型进行压缩,并得到最终的模型。
下面参考附图1,对所示流程图中的各个步骤的细节进行具体描述。
1.选择基本的建模单元在开始训练声学模型之前,必须首先定义基本的建模单元,也就是确定每个模型描述的粒度。语音识别中基本建模单元可以有多种选择,比如音素、半音节、音节或者词等都可以作为基本建模单元。如前所述,汉语的每个字都是一个音节,每个音节由声母和韵母两个部分组成,因此汉语语音识别系统大多以声韵母为基本的建模单元,称作半音节建模。我们同样选择声韵母为基本的建模单元,其中声母有27个,韵母有38个,另外还有一个静音。
2.定义基本建模单元之间的上下文相关性所谓“上下文相关”是指,在连续发音时,每个基本单元的发音不仅取决于其本身读音,还和这个单元所处的语境有关,简言之,就是同当前单元前后的若干其他基本单元的发音相关。例如,在“中国(zh-ongg-uo)”和“中央(zh-ong y-ang)”两个词中,由于后面所接的guo和yang发音不同,那么同一个基本单元(zh)ong的发音是不同的。
前面详细分析了汉语语言的特点,已经指出汉语构词时音节之间的相对独立性。本发明正是利用音节之间的相互独立性来定义基本建模单元的上下文相关性。我们假设不同音节的发音之间是相互独立的,声母的发音只和处于同一个音节中右边的韵母有关,同时韵母的发音只和处于同一个音节中左边的声母相关。
这种上下文相关性定义,符合汉语发音的特点,一方面可以比较准确地刻画音节内部的协同发音现象,另一方面由于只需考虑单边的语境,可以大大减少模型的数目。通过简单计算可知,如果同时考虑左右两边的语境(即triphone建模),那么模型的总个数为27×39×39+38×28×28+1=70860个,根据我们的相关性定义(也就是Diphone建模),模型的总个数下降到27×38+38×27+1=2053个。模型数目缩减大大缓解了下一步模型训练和压缩等各步骤的压力,使模型更适合于嵌入式系统的使用。
3.以似然概率损失作为距离准则,采用状态聚类的方法进行模型参数的训练隐马尔可夫模型(HMM)是语音识别中主流的建模方法。常用的从左到右的HMM的拓扑结构如图2所示。其中各个状态从左至右依次排列,状态自身或不同状态之间可以依据箭头的指向按照一定概率跳转,每个状态输出附着一个概率密度函数(pdf)。
由于直接采用现有的训练数据集对所有的马尔科夫模型的模型参数进行估算有一定的困难,而且这样训练出来的模型的参数数目也会比较多,模型占用的内存量比较大,不能满足在嵌入式设备中使用的需要。因此需要采用状态聚类的办法,在不同模型的不同状态之间进行状态输出分布参数共享,从而减少模型参数数目并保证经过共享的状态输出分布的模型参数都可以得到鲁棒的参数估计。
状态聚类算法的过程如下首先,对模型状态输出分布进行初始化。假设每个HMM都包含三个状态,它们分别对应某个基本建模单元的语音观测样本的起始段、中间段和结束段。同一状态所对应的所有样本构成这个状态的特征空间。初始的时候,使用两个混合的高斯混合模型来描述HMM的各个状态空间。对于观测样本数目小于一定阈值的状态,其特征空间使用方差值固定的高斯混合模型来描述。
此后,共享模型状态的输出分布。首先定义某个特定基本建模单元对应的上下文相关音素模型(all-phone)对于某个特定的建模单元,由于此单元所处的上下文语境不同而产生的所有HMM都被称作是这个建模单元的上下文相关音素模型。例如,对于声母b来讲,b-a、b-an、b-o、b-u等都是b的上下文相关音素模型。在状态聚类过程中,只对同一建模单元的上下文相关音素模型中处在同一位置的不同状态展开聚类。
下面结合图3具体描述本发明的基于状态聚类的输出分布共享的流程。
在步骤S31,计算任何两个状态之间进行合并所造成的似然概率的损失。似然概率的损失是用以下的公式(1)计算Dis=Σk,k∈ClogP(ok)-Σk,k∈C1logP1(ok)-Σk,k∈C2logP2(ok)----(1)]]>如前所述,每个状态的特征空间都使用两个混合的高斯混合模型来描述,P(ok)表示这个特征空间上的观测概率密度函数,ok为输入观测样本向量。C1和C2分别表示合并前的两个状态类,C表示由C1和C2合并以后的所生成的状态类。
在步骤S32,从步骤S31中计算过的所有可能的状态合并集合中寻找似然概率损失最小的两个状态类的合并。然后,在步骤S33,判断这两个状态类的样本数目是否大于一个固定的阈值(M)。如果判断结果为肯定,流程则转到步骤S34,将此合并从上述合并的集合中删除,并在此后返回到步骤S32。如果步骤S33的判断结果为否定,即,如果这两个状态类中至少有一个状态类的样本数目小于该固定的阈值,则在步骤S35将这两个状态类合并起来生成一个新的状态类,新的状态类的特征空间重新用两个混合的高斯混合模型进行描述。此后,在步骤S36判断每个状态类的对应观测样本数目是否大于另一个固定的阈值。如果步骤S36的判断结果为肯定,处理流程则进行到步骤S37,采用K-Means聚类算法对合并后的各状态输出分布的混合高斯模型进行参数估计。相反,如果在步骤S36的判断结果为否定,即,至少一个状态的样本数目不大于该阈值N,流程则返回到步骤S31,继续求任意两个状态合并的似然概率损失。
图4表示的是合并在一起的状态类的特征空间共享相同的输出分布。此外,在上述状态聚类过程中,混合高斯模型的高斯混合数可以被预先设定为一个固定的值,也可以根据一定的准则(例如BIC准则)动态确定。
4.采用子空间聚类算法进行声学模型的压缩采用状态聚类方法训练出来的声学模型的体积通常比较大,直接使用于嵌入式系统中还是有一定的困难。因此本发明还包括了基于子空间聚类的模型压缩技术,利用这种技术,在基本不损失系统识别性能的前提下,可以把声学模型的体积压缩到原有大小的1/10~1/5。下面将参考图5详细描述这种模型压缩技术的具体操作过程。
首先,在步骤S51定义子空间。在语音识别中,无论是识别和训练都要从语音中提取特征参数,通常是多维向量,这些特征参数向量的所有可能取值构成了一个原始多维特征空间。所谓“子空间”,是指一些最具有相关性的特征维组合在一起所生成的特征空间。子空间的划分可以依据经验法由人为划定,也可以在原始特征空间上求出各维特征之间的相关系数,把相关系数最大的某几维特征组合在一起,构成一个特征子空间。通过定义子空间,原始的特征空间被划分成若干个特征子空间。
完成子空间的定义之后,在步骤S52对原始高斯模型进行分解。建立在原始特征空间上的高斯混合模型中的每个高斯模型就可以表示为建立在各个子空间上的子高斯模型的乘积P(O)=ΣmMcm(Πk=1KNTied(Ok;μmk,σmk)----(2)]]>上面的公式(2)所表示的就是经过原始特征空间的子空间分解后,当原始特征空间的一个观测样本向量o输入时的高斯混合模型的模型打分的P(O)计算公式。其中,M表示高斯混合模型的混合数,K表示子空间的数目。NTied(Ok;μmk,σmk)是建立在第k个子空间上的子高斯模型。ok是观测样本向量o中对应于第k个子空间的观测样本子向量,参数{μmk,σmk}是原始高斯模型对应于第k个子空间的子高斯模型参数。
此后,流程进行到步骤S53,即在各个子空间上对分解得到的所有子高斯模型进行聚类。聚类的结果将在每个子空间上生成一定数目的高斯码本,识别系统最终的声学模型就是由这些高斯码本组合生成的。子高斯模型的聚类过程主要由高斯码本的初始化和高斯码本的优化更新这两个环节构成。
在步骤S53,进行高斯码本的初始化过程。在这一过程中采用LBG算法,对子空间上所有的原始子高斯模型进行聚类,生成初始高斯码本。具体操作如下首先生成一个高斯码本中心,此中心的均值参数可以由所有子高斯模型的均值中心直接估算得到,其方差参数可由所有子高斯模型的方差直接计算平均值得到。完成高斯码本中心的初始化之后,便开始重复“二分法分裂-聚类-码本更新”的过程。在进行二分法分裂时,采用扰动法把每一个原有的高斯码本分裂成两个新的高斯码本。此后,将所有的训练样本按分裂得到的码本重新聚类,并计算每一类的中心,由此得到新的码本。这种“分裂-聚类-码本更新”的过程一直重复下去,直到码本的数目达到预定值。在聚类过程中,进行子高斯模型的重新分类时,采用以下公式作为距离准则,来衡量任何一个子高斯模型到高斯码本中心的距离。通常子高斯模型被划分到距离它最近的高斯中心所代表的高斯类中去。
Dbhat=18(μ2-μ1)T[Σ1+Σ22]-1(μ2-μ1)T+12ln|Σ1+Σ22||Σ1Σ2|----(3)]]>公式(3)中所表示的距离为高斯模型N{μ1∑1}到N{μ2,∑2}之间的距离。
在完成高斯码本的初始化之后,还要在步骤S54对初始高斯码本进行优化更新过程。这一过程就是采用广义K-means聚类算法对各个子空间的高斯码本进行重新优化。优化时按照公式(3)进行子高斯模型的重新划分,并按照下面的公式(4)和(5)进行高斯模型码本中心的更新μ=n1μ1+n2μ2n1+n2----(4)]]>Σ=n1(μ1-μ)T(μ1-μ)+n2(μ2-μ)T(μ2-μ)n1+n2+n1Σ1+n2Σ2n1+n2----(5)]]>式中{μ,∑}表示更新后的高斯模型的均值方差参数,{μ1,∑1}和{μ2,∑2}表示参加聚类的两个子高斯模型的模型参数,n1和n2是估算这两个高斯分布时的样本个数。
需要注意的是,在模型压缩的各个阶段,都没有原始语音训练样本参与,因而与以往的子空间模型压缩方法相比,本发明提出的方法使用起来更灵活、更方便。
本发明主要应用于一些嵌入式设备的语音识别系统中。其主要功能是在减少声学模型体积的同时,保持原有的语音识别系统的识别性能,从而即使在内存容量非常小的嵌入式设备的使用场合中,使高精度的语音识别系统的构建成为可能。
下面将比较本发明中的模型训练方法与通用的模型算法的性能,从而说明本发明的有效性。
1)连续语音音节识别本试验的主要目的是为了比较本发明专利中的声学模型训练方法与常见声学模型训练方法所训练出的模型在模型精度方面的差异。
训练数据是863训练数据集的83个男性录音人。测试数据是863测试集的标准测试男声240句话的测试语音数据。声学模型分别采用本发明中的建模方法训练出的Diphone模型和常见的基于决策树的方法训练出的Triphone模型,试验结果如下表1 Diphone模型和Triphone模型在连续音节识别时的模型精度比较
2)手机人名识别本试验的主要目的是为了测试本发明所提出的声学模型训练算法所训练出的声学模型在一个人名识别任务中的识别性能。声学模型分别采用本发明专利中的建模方法训练出的经过压缩后的Diphone模型和常见的基于决策树的方法训练出的Triphone模型。训练数据仍然是863训练数据集的83个男性录音人。而测试数据变为实验室环境下录制的10人的2500个人名。
表2 Diphone模型和Triphone模型在人名识别时的模型精度比较
3)模型体积比较由于在嵌入式设备中,内存容量非常的小。因此除了单纯的模型精度的指标之外,模型的大小也是衡量系统性能的一个综合的指标。
在达到表2中的结果时,本发明的Diphone模型的占用内存大小为常用的Triphone模型的1/10。
4)状态聚类在Diphone模型的构建中的作用在生成Diphone模型的时候,基于状态聚类的Diphone模型要比基于决策树的Diphone模型有更高的模型精度。表3给出基于状态聚类的Diphone系统和基于决策树的Diphone系统在连续音节识别中的识别率表3基于状态聚类的Diphone与基于决策树的Diphone的模型精度比较
5)基于子空间聚类的模型压缩技术在减少内存方面的贡献如果每两维特征组合在一起构成一个特征子空间,那么整个特征空间可以被划分成D/2个特征子空间,这里D表示原始特征空间的维数。假设每个特征子空间采用125个子高斯模型码本,那么整个声学模型的大小可以减少为原来的1/5-1/10。那么这种经过压缩以后的声学模型的模型精度损失可以从下表的试验结果得出表4基于子空间聚类的模型压缩技术对系统性能的影响
从以上的试验数据可以看出,采用本发明的声学建模方法与常用的triphone相比,连续音节识别时的识别率仅有微小的降低,但其体积却大大减小。另外,通过上面表3和4中所列举的数据可以看出,本发明采用的聚类和模型压缩技术对语音识别准确率的影响几乎可以忽略,而其声学模型的体积仅为原来的1/5-1/10,极大地节省了存储空间。非常适合应用于诸如嵌入式设备等内存较小的设备。
上面描述的方法可以通过硬件或软件来实现。执行该方法的程序可记录在诸如软盘,硬盘,CD-ROM,DVD-ROM之类的计算机可读的记录介质上。
虽然参考特定的实施例对本发明进行了描述,本发明并不局限于此,而仅由所附权利要求限定,本领域技术人员在不脱离本发明精神的情况下可对本发明的实施例进行各种改变和改进。
权利要求
1.一种汉语语音识别建模方法,包括步骤(a)将汉语语音的声母与紧邻其右侧的韵母相关,而韵母与紧邻其左侧的声母相关,创建上下文相关的基本建模单元;(b)利用状态聚类法对模型的参数进行训练,以得到初始隐马尔可夫(HMM)模型;和(c)利用子空间聚类算法对初始隐马尔可夫模型进行压缩,以产生最终模型。
2.根据权利要求1所述的其中所述的汉语语音识别建模方法,步骤(b)进一步包括步骤(b1)计算任何两个状态之间进行合并所造成的似然概率的损失;(b2)从步骤b1中计算过的所有可能的状态合并集合中寻找似然概率损失最小的两个状态类的合并;(b3)判断这两个状态类的样本数目是否大于一个固定的阈值;(b4)如果在步骤(b3)中判断样本数目大于一个固定的阈值,将此合并从上述合并的集合中删除;如果这两个状态类中至少有一个状态类的样本数目小于该固定的阈值,则将这两个状态类合并起来生成一个新的状态类,新的状态类的特征空间重新用两个混合的高斯混合模型进行描述;(b5)判断每个状态类的样本数目是否大于另一个固定的阈值,如果大于所述另一个固定阈值,则采用K-Means聚类算法对合并后的各状态输出分布的混合高斯模型进行参数估计;如果至少一个状态的样本数目不大于所述另一个固定阈值,则返回到步骤(b1)。
3.根据权利要求2所述的汉语语音识别建模方法,其中所述混合高斯模型的高斯混合数可以被预先设定为一个固定的值,也可以动态确定。
4.根据权利要求1所述的汉语语音识别建模方法,其中步骤(c)采用LBG算法的对原始模型进行聚类以生成初始的高斯码本。
5.根据权利要求4所述的汉语语音识别建模方法,其中步骤(c)还包括采用K-Means聚类算法对高斯码本进行优化并生成最终的高斯码本。
6.根据权利要求1所述的汉语语音识别建模方法,其中步骤(c)还包括步骤从语音中提取特征参数,组合最具有相关性的特征维以生成子空间;对原始特征空间上的高斯混合模型中的每个高斯模型进行子空间分解以得到子高斯模型参数;在各个子空间上对分解得到的所有子高斯模型进行聚类,以便在每个子空间上生成具有特定数目的高斯码本;组合所得到的高斯码本以生成最终的声学模型。
7.根据权利要求6所述的汉语语音识别建模方法,其中子高斯模型的聚类步骤还包括对子空间上的所有原始子高斯模型进行聚类以生成初始高斯码本的步骤。
8.根据权利要求所述6的汉语语音识别建模方法,其中子高斯模型的聚类步骤还包括在完成高斯码本中心的初始化之后,进行二分法分裂以便把每一个原有的高斯码本分裂成两个新的高斯码本的步骤。
9.一种计算机可读记录介质,用于存储执行汉语语音识别建模方法的程序,所述方法包括步骤(a)将汉语语音的声母与紧邻其右侧的韵母相关,而韵母与紧邻其左侧的声母相关,创建上下文相关的基本建模单元;(b)利用状态聚类法对模型的参数进行训练,以得到初始隐马尔可夫(HMM)模型;和(c)利用子空间聚类算法对初始隐马尔可夫模型进行压缩,以产生最终模型。
全文摘要
一种上下文相关的汉语语音识别建模方法,基于汉语的语言特点,采用声母右相关和韵母左相关的建模方法,包括步骤(a)将汉语语音的声母与紧邻其右侧的韵母相关,而韵母与紧邻其左侧的声母相关,创建上下文相关的基本建模单元;(b)利用状态聚类法对模型的参数进行训练,以得到初始隐马尔可夫模型(HMM);(c)利用子空间聚类算法对初始隐马尔可夫模型进行压缩,以产生最终模型。
文档编号G10L15/00GK1655232SQ20041000413
公开日2005年8月17日 申请日期2004年2月13日 优先权日2004年2月13日
发明者贾磊, 马龙 申请人:松下电器产业株式会社