基于HMM的孤立词(0-9)识别系统实现

(整期优先)网络出版时间:2023-04-17
/ 4

基于HMM的孤立词(0-9)识别系统实现

李光明 ,李冠宇,戴玉刚

甘肃省民族语言智能处理重点实验室(西北民族大学) 甘肃 兰州 730000

摘要近几十年来,在业内专家学者的努力下语音识别技术取得显著进步,已经从实验室走向市场。在这个过程中,深度学习和神经网络的发展做出不少贡献,但神经网络依赖大量数据而且神经网络模型具有不确定性,当训练数据与目标数据分布存在差异时识别效果可能非常差。在一些领域我们对识别系统的精度要求非常高。我们已经明显感觉到,语音识别技术在工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域都可以发挥重要作用。探索使用HMM模型来识别孤立词在我们的生活中具有重大意义。隐马尔可夫模型是成熟的模型,在语音识别,机器视觉等多个领域有着广泛的应用。隐马尔可夫模型能够很好地为语音等序列数据建模,可以很好地描述序列数据之间的关系。隐马尔可夫模型与GMM模型的完美融合可以使HMM模型在语音识别中更好地对状态进行建模从而提高识别率。因为GMM模型的加入使得HMM的观测矩阵更真实地贴近观测概率。加入GMM的HMM模型经过5个人的数据的训练其识别精确度可以达到87%。在数据量得到扩充的前提下效果有望达到100%。

关键词隐马尔可夫模型;高斯混合模型;语音识别;状态建模


隐马尔可夫模型在语音识别中可以很好地描述一段连续的音频序列。在隐马尔可夫模型中往往不直接使用音频数据而是把从音频中抽取到的某种特征来近似代替音频。隐马尔可夫模型的隐马尔可夫性假设使得我们可以计算出某一个状态出现的概率,隐马尔可夫性假设:系统在t时间的状态只与其在时间t-1的状态相关即 P(qi|qi-1,……,q1) = P(qi|qi-1)。隐马尔可夫的另外一个假设:不动性假设(即某一状态的出现与其所处的具体时间无关可用公式P(qi+1|qi) = P(qj+1|qj),对任意i,j成立。这里的qi指的是在第i时刻的状态。第三个假设:输出独立性假设(即某一时刻的输出仅与当前状态有关)p(O1,……,OT | q1,……,qT) = Πp(Ot | qt)。

本文的主要贡献包括4个方面:

1) 利用隐马尔可夫模型对语音特征进行建模以描述连续语音序列之间的关系。

2) 采用前向算法进行简化在不同的时刻不同的状态之间的跳转形成的多路径计算问题,使得算法得到优化更加接近实际过程。理解越来更加简单。

3) 在模型中我们同时采用前向和后向算法来计算观测序列出现的概率,后向算法的出现一方面做为前向算法的补充,另一方面两者的结合使得我们可以很容易地计算出在某一时刻某一个状态出现的概率,以及这一状态在这一时刻向其它状态进行转化的概率情况。

4) 采用Viterbi算法计算来反推观测背后最可能出现的状态。Viterbi算法的结果更接近实际情况。在描述过程中,每一个时刻保存前一个时刻的最可能出现的状态序列,从而简化计算。

1 相关工作

1.1领域研究现状

随着语音识别的应用领域变得越来越广,各领域对语音识别的研究需求越来越大。如何快速准确的识别语音成了一个急需解决的问题。要做到语音的快速准确识别,一方面需要对语音中存在的语音以及语音的边界进行准确判断,另一方面需要对语音片段进行准确的建模。

在深度学习被广泛应用之前,大多数语音识别系统都使用隐马尔可夫模型(HMMs)来处理语音随时间的变化,有的模型还会引入高斯混合模型,使用高斯混合模型中的高斯函数的值来确定某个 HMM 的每一个状态在多大程度上符合声音输入的一帧。在神经网络被广泛使用之后评估拟合度也可以使用前馈神经网络,该网络以多帧系数作为输入,并在 HMM 状态上产生后验概率作为输出。使用新方法训练的具有许多隐藏层的深层神经网络在各种语音识别基准上都优于高斯混合模型,但神经网络的不可解释性依旧无法绕过,对加入GMM的HMM进行研究依旧有重要意义。

1.2相关研究方法

研究者对语音识别的领域的探索已经长达几十年,期间涌现出了大量的论文。在语音识别领域有着多种方法,语音识别领域大致有两类方法,一类是传统的基于隐马尔可夫及其变化的方法,另一类是基于神经网络的方法。随着硬件性能的提升,把神经网络引入到语音领域用其来解决语音识别中遇到的难题也不失为一种解决语音识别问题的一个好思路。神经网络具有参数自动学习的能力,对于研究者而言不用管其内部复杂的网络的具体实现。但是运用神经网络的方法无法知道其内部实现过程,不能逐步地根据需求改变网络。另外神经网络实现语音识别需要保证拥有足够多的数据。

1.3采用本方法的原因

对比神经网络模型与隐马尔可夫模型在实现语音识别上的优缺点和我们对可解释性与识别准确率的需求,我们采取HMM加GMM的方法来实现语音识别。HMM的架构,我们可以很清楚内部的实现过程。我们使用训练好的模型参数采用前向算法来实现对观测序列求值,从目标语音片段提取的特征参数仅仅适用于该文本,因此提取的特征参数在文本训练出来的模型下的前向概率不同。这样我们就可以实现语音与文本很好的对应,我们对比不同模型的概率值以概率最大的模型对应的文本做为我们的预测结果。采用E-M算法逐步迭代来不断更新参数来实现参数的优化。

1.4隐马尔可夫模型的计算优势

HMM加GMM在模型训练的过程中的算力要求是在可接受范围内的,HMM和GMM组合可以充分利用语音学习的相关先验知识,与纯粹靠迭代来目标进行拟合的神经网络方法相比对算力的需求非常小在笔记本电脑上就可以实现,而神经网络方法需要算力强大的服务器的支持。我们的HMM需要根据语音学的相关知识对参数进行合理的设置。例如我们为每个孤立词的模型设立5个状态,然后为每个状态之间的跳转设定一个初始,概率根据语音学的相关知识以及连续语音片段的事实,我们可以设置每个状态可以向后一个状态跳转,但不可向前跳转,每个状态跳回自己的概率为0.6,跳向后一个状态的概率为0.4,跳向其它状态的概率为0,从而实现对语音状态的合乎事实的模拟。每个孤立词的音频文件的提取的特征为约100帧,每个时刻有5个状态。一般情况下E-M算法在实际计算过程中大约5次就会收敛。所以计算速度完全在可接受的范围内。在算法实现时我们借助python语音这个工具来实现,通过调用python矩阵运算包可以提高效率减少运算时间,在计算时我们采用python的科学计算包numpy来进行矩阵计算以提高计算速度。

2.隐马尔可夫过程的三个假设

2.1马尔可夫性假设

在隐马尔可夫模型中我们对序列做出了独立性假设,即马尔可夫性假设:序列的状态构成一阶马尔可夫链,我们假设这个序列中的每一个状态只依赖于前一个状态,这样在计算进我们便可以利用条件概率公式来计算对应该观测序列的所有路径的最终概率和。

P(qi|qi-1,……,q1) = P(qi|qi-1)  (1)

在上述公式中qi表示时间i所处的状态,qi-1表示在i-1时刻的状态。我们把每个状态对前面所有状态的依赖转化为只对前一个状态的依赖有了这个假设就可以降低算法的复杂度为计算提供可行性。

2.2不动性假设

不动性假设,即对状态与时间的关系做出假设,即处在每个状态的概率与时间无关,在某个时刻某个状态的概率只取决于前一个时刻的状态。这个概率不受制于时间,也就是说独立于时间。

 P(qi+1|qi) = P(qj+1|qj) (∀i,j) (2)

在上式中 P(qi+1|qi)表示在上一个时刻是i而当前时刻是i+1时对应状态出现的概率,qi即表示第i时刻所处的状态。无论i如何变化这个概率不会变,i与i+1表示时间上的先后顺序关系。我们只要求这个顺序保证,即前一个状态为某一个状态,当前状态为某一个状态不变,无论处在哪个时刻这个概率都是一样的。这就是所谓的不动性假设。

2.3输出独立性假设

输出独立性假设即某一时刻的观测概率值的输出仅与当前状态有关,在状态序列下的观测序列对可简化为在当前状态下观测值出现的概率情况,在对某一个观测序列下计算对应观测序列概率值的情况,往往通过对某一个观测值假设一个背后的状态来解决,因为只有状态之间具有跳转概率。所以某一个观测一定是在某一个状态下出现的,所以我们计算的整体的观测也即一个观测序列是在一个连续的状态序列下的观测序列。某一个连续状态序列下的连续观测序列只是一个表达式却不是计算式,因为这样求解过程越来简单易懂,但是却无法采取实际的计算,因为这种情况下考虑的情况太多而且计算量太大。故马尔可夫的输出独立性假设为我们找出计算式并进行计算提供了依据对解决实际问题到头重要。根据马尔可夫的输出独立性假设我们可以很容易知道状态之间的跳转情况,以及某一个观测出现的概率情况。

p(O1,……,OT | q1,……,qT) = Πp(Ot | qt) (3)

在上式中p(Ot | qt)为在t时刻状态qt下观测为Ot出现的概率。p(O1,……,OT | q1,……,qT) 表示在一个连续的状态下出现一个连续的观测序列的概率等于在多个独立状态下出现对应观测的概率的连乘积。

3.前向算法

在对从音频中提取到的语音特征建模时我们定义前向变量α(t, i),表示在时间步t, 得到t之前的所有已知符号序列,且时间步t的状态是Si这一事件的概率,

Fig. 1前向变量之间跳转图

α(t, i) = P(o1,……,ot, qt = Si|λ) (4)

根据马尔可夫性假设我们可以知道得到t之前的所有已知符号序列,且满足时间步从1到t的状态是S1到Si的概率,这样就相当于得到t之前的所有明符号序列,且满足时间步t的状态是Si这一事件的概率则相对应的我们可以得到

P(O|λ) = ∑α(t, i) (5)

即在某一模型参数下所有的观测序列的概率为对长度为T的α(t, i)的对状态进行求和。对0时刻我们初始化α(1, i)为

α(1, i) =π(i)b(i,o1) (6)

在有了第一个状态之后,我们根据递推公式由前一个时刻的α(t, i)求出这个时刻的α(t+1, i)。

α(t+1, j) = [ ∑α(t, i)a(i,j) ]b(j,ot+1)(7)

α(t+1, j) 表示下一个时刻的累积概率它等于前一个时刻不同的状态的α乘以它跳转到该时刻的概率进行求和最后再乘以观测概率α(t+1, j) 。

我们的前向算法是在对原来的所有路径计算概率再求和的基础上改进的,可以看到如果直接对所有的路径进行计算概率其时间复杂度为状态的指数级,基假设状态为5,时刻t为100则每条路径为:100个大于等于0小于1的小数相乘,然后对所有路径相加。相加的个数是状态5的100次方,可见这个问题是指数级的。前向算法的改进是引进一个前向变量α(t, i),表示在时间步t, 得到t之前的所有明符号序列, 且时间步t的状态是Si的概率,这样在下一个时刻的α(t+1, i)可以由前一个时刻由递推公式求得。这样我们便极大地简化了计算。

4.后向算法

我们定义后向变量β(t, i),表示在时间步t,得到t之后的所有明符号序列,且时间步t的状态是Si这一事件的概率,

β(t, i) = P(ot,……,oN, qt = Si|λ) (8)

根据马尔可夫性假设我们可以知道得到t之后的所有明符号序列, 且时间步t到N的状态是Si到SN的概率等于得到t之后的所有明符号序列, 且时间步t的状态是Si这一事件的概率则相对应的我们可以得到

P(O|λ) = ∑β(1, i) (9)

即在某一模型参数下所有的观测序列的概率为长度为T的β(0, i)的对状态进行求和。对T时刻我们初始化β(T, i)为

β(T, i) = 1 (10)

在有了第一个状态之后,我们根据递推公式由前一个时刻的β(t+1, i)求出这个时刻的β(t, i)。

β(t, i) =  ∑β(t+1,j)a(i,j) b(i,ot+1)(11)

β(t, i) 表示t时刻的累积概率它等于后一个时刻不同的状态的β乘以它跳转到该时刻的概率进行求和最后再乘以观测概率b(i,ot+1)。

我们的后向算法也是在原来的所有路径计算概率再求和的基础上改进的,可以看到如果直接对所有的路径进行计算的时间复杂度为状态的指数级,基假设状态为5,时刻t为100则音箱路径为:100个大于等于0小于1的小数相乘,然后对所有路径相加。相加的个数是状态5的100次方,可见这个问题是指数级的。后向算法的改进是引进一个后向变量β(t, i),表示在时间步t, 得到t之后的所有明符号序列, 且时间步t的状态是Si的概率,这样在本时刻的β(t, i)可以由下一个时刻由递推公式求得。这样我们便极大地简化了计算。

5.Viterbi算法

Viterbi算法处理的是给出一个观测序列求对应的状态序列,即求解所有可能的状态中使得出现这一个观测序列出现的可能性最大的状态序列。我们定义一个变量δ(t,i)它表示在t时间步沿状态序列q1,……qt且qt=Si产生出观测序列O1,……Ot的最大概率,即:

δ(t,i)=max[ P(q1,……,qt-1,qt=Si,o1,……ot|λ)](12)

Viterbi算法也是一种类似于前向算法的一种网络结构。所要达到的目标:给定一个观察序列和HMM模型,如何有效选择“最优”的状态序列,以“最好地解释”观察序列。这是我们用到最优的概念即概率最大。Q*=max[P(Q|O,λ)]

δ(t+1,j)=max[δ(t,i)aij]*bj(Ot+1) (13)

类似于前向算法我们先对第一个时刻进行初始化。

δ(1,i)=π(i)bi(O1)   (14)

Ψ1(i) = 0   (15)

我们用变量Ψ1(i)表示1时刻i状态的前1时刻的最优状态。

当终止时

P*=max[δ(1,i)] (16)

Q*T=argmax[δ(T,i)] (17)

我们要求的是相应观测序列的最优状态序列,我们的变量Ψt(i) 保存了上一个时刻的最优状态,因此我们只需要从最后一个时刻反推回去即可求得最优的观测序列。

Viterbi算法是一种类似动态规划算法思想的算法。从前到后在每一个时刻求得最大的概率并用另外一个专门储存状态的变量保留下此时的最优状态。最后我们找到并根据最后一个时刻的最优状态利用我们的状态变量依次向前递推即可求得最佳状态序列。

6.实验过程

6.1数据准备

我们的实验需要识别的是10个阿拉伯数字,我们的实验数据一共有1200个样本。其中语料内容为包含0到9的10个一位阿拉伯数字,语料中的每个阿拉伯数字由每个参与录音的人朗读20遍,一共6个参与,每个数字拥有样本120个,参与录音的人对每个数字录了20遍所以一共拥有样本1200个。相对于大型语料库而言,我们的实验数据还是相对稀少的。但是我们所做的是一个孤立词识别系统,每个孤立词的音频在时间长度上相对较短。对于训练我们的模型而言,我们的语料够用了。在准备好wav格式的音频文件后,我们利用现成的HTK工具hcopy对文件进行特征参数提取,本实验中我们提取的是plp特征。以下实验完全基于提取的plp特征进行。

6.2E-M过程

我们在实验中为0—9中的每个数字建立一个属于自己的模型。然后对每一个数字进行训练,训练我们采用的是基于E-M思想的BaumWelch算法。

在训练时我们利用BaumWelch算法进行多次迭代,在每一个迭代过程中先利用前向算法求出前向变量α,利用后向算法求出后向变量β,并调用函数求λ(t,i)和x(i,j)。利用求出的前向变量和后向变量求出λ(t,i)和x(i,j),然后使用新求出的λ,x对模型参数进行更新。然后在新参数的基础上进行下一轮的迭代,调用前向算法和后向算法进行计算前向变量和后向变量以及下一步需要用的λ(t,i)和x(i,j)。

我们对迭代的控制是通过两个函数进行控制的,第一个函数是直接指定迭代次数,在本次实验中我们设置的是10;第二个是通过对比本次和上次的由前向算法计算出的概率值的比值,当这个比值达到一定的域值时跳出迭代,在本次实验中我们设置的是0.8。经过逐步迭代我们可以得到训练好的参数供下一步识别用。

6.4识别过程

在识别部分我们会直接调用python脚本写好的测试函数来读入测试数据。读入的每一个样本的特征参数都会被带入0-9每一个数字的模型进行计算概率值,这里我们采用前向算法进行观测概率的计算。0-9的每个模型都是用相应阿拉伯数字进行训练的,所以只会对相应的阿拉伯数字的测试数据得出高的观测概率。每一个测试语音提取的特征参数放入0—9一共10个模型计算观测概率值,概率值大的做为我们的测试结果。

7.不足与展望

我们的实验中对加了高斯的和不加高斯的模型进行对比。加高斯的模型是指对状态的数量进行人为的设置,相反不加高斯的状态由一个函数来控制,这里我们选用的是高斯函数。实验结果表明不加高斯的模型的识别率优于加高斯的模型。理论上加了高斯的数据会更优,因为加了高斯的模型可以更好地描述数据的分布情况。经过分析我们觉得是数据小的缘故,因为在数据量小的情况下加入了多个高斯的模型会学到噪声。学到噪声的模型对一般情况下的测试数据的描述能力会下降,导致对测试数据判断出错。

针对这个问题我在以后的实验中会增加语料来克服。

参 考 文 献

[1]  Lukashin A V ,  Borodovsky M . GeneMark.hmm: New solutions for gene finding[J]. Nucleic Acids Research, 1998, 26(4):1107-1115.

[2]  Ernst J ,  Kellis M . ChromHMM: automating chromatin-state discovery and characterization.[J]. Nature Methods, 2012, 9(3):215-6.

[3] 陈茂林, 戚飞虎. 自组织隐马尔可夫模型的人脸检测研究[J]. 计算机学报, 2002, 25(011):1165-1169.

[4] 李士进, 杨静宇, 陆建峰. 基于奇异值特征和隐马尔可夫模型的人脸检测[J]. 中国图象图形学报A辑, 2001, 6(007):681-688.

[5] 卢坚, 陈毅松, 孙正兴,等. 基于隐马尔可夫模型的音频自动分类[J]. 软件学报, 2002, 13(8):1593-1597.

[6] 张杰, 黄志同, 王晓兰. 语音识别中隐马尔可夫模型状态数的选取原则及研究[J]. 计算机工程与应用, 2000, 36(001):67-69,133.

[7] 刘云中, 林亚平, 陈治平. 基于隐马尔可夫模型的文本信息抽取[J]. 系统仿真学报, 2004.

[8] 张引, 潘云鹤. 工程图纸自动输入字符识别的二维隐性马尔可夫模型方法[J]. 计算机辅助设计与图形学学报, 1999, 11(5):403-406.

[9] 许欢庆, 王永成, 孙强. 基于隐马尔可夫模型的Web网页预取[J]. 上海交通大学学报, 2003(03):92-95.

[10] 胡春静, 韩兆强. 基于隐马尔可夫模型(HMM)的词性标记的应用研究[J]. 计算机工程与应用, 2002.

[11] 于江德, 肖新峰, 樊孝忠. 基于隐马尔可夫模型的中文文本事件信息抽取[C]// 2007全国开放式分布与并行计算学术年会. 2007.

[12] 李杰. 隐马尔可夫模型的研究及其在图像识别中的应用[D]. 清华大学.

[13] WU Gang, QIU Yujing, WANG Guoren. 基于隐马尔可夫模型和遗传算法的地图匹配算法[J]. Dongbei Daxue Xuebao/journal of Northeastern University, 2017, 38(4):472-475.