基于HMM的失语症患者语音识别算法及装置

文档序号:31535680发布日期:2022-09-16 22:20阅读:543来源:国知局
基于HMM的失语症患者语音识别算法及装置
基于hmm的失语症患者语音识别算法及装置
技术领域
1.本发明涉及语音识别技术领域,尤其涉及一种基于hmm的失语症患者语音识别算法及装置。


背景技术:

2.国外的语音识别在1952年开始兴起,起初在贝尔实验,davia等人对英文数字0 到9的发音进行识别,成为世界上第一个识别系统。之后开启语音识别的日程,接着增加到了小的词汇和单个单词的识别,1956年普林斯顿大学中的rca实验室对10 个单音节单词的语音识别系统。1959年,伦敦大学对4个元音和9个辅音进行识别。同时,麻省理工对10个元音进行识别。1964年rca实验室提出时间规整机制,但是vintsyuk提出了动态时间规整(dtw)算法。1988年左右ibm和微软推出了语音识别的相关软件,但是都失败了。到了20世纪70年代,语音识别有了实质性的发展,隐马尔科夫技术(hmm)的开发。2006年hinton提出了深度置信网络(dbn),研究深度神经网络(dnn)得到复苏。2009年,开始深度学习技术的研究,其中dnn 成为主流,语音识别准确率突破90%,google推出了语音搜索功能。2011年,苹果公司推出了与siri人机互动功能。2017年,google的语音识别准确率高达95%。在发音标准的情况下,语音识别的错误率仅为2%,即准确率达到98%。
3.国外失语症康复治疗方面已经相当成熟。1819年,deleuze提出失语症特征有语法缺失。20世纪40年代,语言学家jakobson将失语症归纳在语言学研究。1861年 broca发现左脑第三额回后部专门负责语言。1916年,kleist把失语症分为语法缺失和语法错乱。随着社会的发展,计算机辅助治疗失语症在国外相当成熟,德国和法国等其他国家已经研发了关于失语症患者康复语言训练自己国家母语的设备,如实物图片命名、图和词进行搭配、文章阅读等软件。由于国内语法与国外语法不同,所以不能直接使用和借鉴。但是计算机辅助康复治疗的核心一样都是语音识别。
4.结合上述现有的技术方案,发明人分析发现在现有技术方案中存在语音识别效果较差技术问题。
5.现有技术问题及思考:
6.如何解决语音识别效果较差的技术问题。


技术实现要素:

7.本发明所要解决的技术问题是提供一种基于hmm的失语症患者语音识别算法及装置,解决语音识别效果较差的技术问题。
8.为解决上述技术问题,本发明所采取的技术方案是:一种基于hmm的失语症患者语音识别算法包括如下步骤,s1获得hmm模型,获得hmm模型;s2语音识别,基于上一步骤获得的获得hmm模型,识别语音。
9.进一步的技术方案在于:在步骤s1中,基于k均值算法进行改进,采用动态改变模型参数,获得更大范围的最优解,k均值算法是聚类算法,k均值为从样本中选择样本的聚簇
中心值,计算剩下的样值和中心值的矢量距离的模值,当做最小的聚簇中,得到一系列的簇,然后计算中心值,然后继续执行上面几步,不停的迭代,一直到稳定为止。
10.一种基于hmm的失语症患者语音识别装置包括如下程序模块,获得hmm模型模块,用于控制器获得hmm模型;语音识别模块,用于控制器基于hmm模型,识别语音。
11.进一步的技术方案在于:获得hmm模型模块,还用于控制器基于k均值算法,采用动态改变模型参数,获得更大范围的最优解。
12.进一步的技术方案在于:获得hmm模型模块,还用于k均值算法是聚类算法, k均值为从样本中选择样本的聚簇中心值,计算剩下的样值和中心值的矢量距离的模值,当做最小的聚簇中,得到一系列的簇,然后计算中心值,然后继续执行上面几步,不停的迭代,一直到稳定为止。
13.一种基于hmm的失语症患者语音识别装置包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现上述相应的步骤。
14.一种基于hmm的失语症患者语音识别装置包括计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述相应的步骤。
15.采用上述技术方案所产生的有益效果在于:
16.一种基于hmm的失语症患者语音识别算法包括如下步骤,s1获得hmm模型,获得hmm模型;s2语音识别,基于上一步骤获得的获得hmm模型,识别语音。该技术方案,其通过步骤s1和步骤s2等,实现语音识别效果较好。
17.一种基于hmm的失语症患者语音识别装置包括如下程序模块,获得hmm模型模块,用于控制器获得hmm模型;语音识别模块,用于控制器基于hmm模型,识别语音。该技术方案,其通过获得hmm模型模块和语音识别模块等,实现语音识别效果较好。
18.详见具体实施方式部分描述。
附图说明
19.图1是本发明中一维坐标时间序列对齐截图;
20.图2是本发明中dtw算法进行对齐截图;
21.图3是本发明中搜索下一个路径示意图;
22.图4是本发明中搜索上一条路径示意图;
23.图5是本发明中dtw算法仿真结果图;
24.图6是本发明中hmm组成示意图;
25.图7是本发明中dtw算法和hmm算法识别成功率的统计结果;
26.图8是本发明中dtw算法和hmm算法平均识别时间的统计结果;
27.图9是本发明中三个基本问题算法之间关系图;
28.图10是本发明中采用baum-welch重估公式的训练模型;
29.图11是本发明中部分的测试结果;
30.图12是本发明中基于k均值算法的参数重估;
31.图13是本发明中k均值算法仿真;
32.图14是本发明中k均值算法结果图;
33.图15是本发明中基于k均值算法改进hmm;
34.图16是本发明中测试结果;
35.图17是本发明中遗传算法流程图;
36.图18是本发明中目标函数δ(log(p(o|λi)))为最小化时hmm参数的实验结果;
37.图19是本发明中目标函数δ(log(p(o|λi)))为最大化时hmm参数的实验结果;
38.图20是本发明中识别率效果图;
39.图21是本发明中遗传算法改进hmm。
具体实施方式
40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本技术及其应用或使用的任何限制。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
41.在下面的描述中阐述了很多具体细节以便于充分理解本技术,但是本技术还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施例的限制。
42.实施例1:
43.本发明公开了一种基于hmm的失语症患者语音识别算法包括如下步骤:
44.s1获得hmm模型
45.获得hmm模型,基于k均值算法进行改进,采用动态改变模型参数,获得更大范围的最优解,k均值算法是聚类算法,k均值为从样本中选择样本的聚簇中心值,计算剩下的样值和中心值的矢量距离的模值,当做最小的聚簇中,得到一系列的簇,然后计算中心值,然后继续执行上面几步,不停的迭代,一直到稳定为止。
46.s2语音识别
47.基于上一步骤获得的获得hmm模型,识别语音。
48.实施例2:
49.本发明公开了一种基于hmm的失语症患者语音识别装置包括如下程序模块:
50.获得hmm模型模块,用于控制器获得hmm模型,控制器基于k均值算法,采用动态改变模型参数,获得更大范围的最优解,k均值算法是聚类算法,k均值为从样本中选择样本的聚簇中心值,计算剩下的样值和中心值的矢量距离的模值,当做最小的聚簇中,得到一系列的簇,然后计算中心值,然后继续执行上面几步,不停的迭代,一直到稳定为止。
51.语音识别模块,用于控制器基于hmm模型,识别语音。
52.实施例3:
53.本发明公开了一种基于hmm的失语症患者语音识别装置包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,所述处理器执行计算机程序时实现实施例1的步骤。
54.实施例4:
55.本发明公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机
程序,所述计算机程序被处理器执行时实现实施例1中的步骤。
56.技术方案说明:
57.4.1传统的语音识别算法
58.在语音识别中,主要研究失语症患者语料库的模板训练算法和患者发音匹配技术。第一步是语料库的建立,是识别的前提,也是识别的标准。第二步是识别,在语料库中通过建立模型算法,找到最合适的语料,识别出结果。针对语音识别算法,传统的模板匹配算法主要是动态时间规整算法,传统的概率模型算法中主要是隐马尔可夫模型(hmm模型)。孤立词识别是最广泛的语音识别技术,动态时间规整(dtw)算法在孤立词语音识别方面非常成熟。dtw算法是在语料库和待测语音中间建立一个规整函数,函数的作用从语料库中找到和待测语料之间矢量距离最小,作为识别的语音结果。hmm算法假设在一个离散系统中,任意等间隔时间内有多个状态,此时处在某个状态下,系统中的状态按照隐藏的概率发生变化,概率与状态有关,是一个双重随机过程。hmm在识别孤立词过程,简单描述成在语料库建立阶段,孤立词建立对应的hmm。在识别阶段,用各种算法算出每一个孤立词的概率,之后在后处理阶段,选择最大的概率作为识别的结果。
59.4.1.1动态时间规整算法
60.动态时间规整简称dtw,单纯的把采集的语音与语料库中的语音进行对比,显然是行不通,需要用一种算法使其对齐,dtw算法可以做到这一点,dtw的原理是将时间轴进行一系列的变化,其目的是让语料库中语音的特征与待测语音特征找到一条路径,使其最优匹配。
61.dtw的算法原理中有两种运算方法,一种是时间规整,另一种是距离测度。dtw 算法保证语料库中的特征参数和待测语音的特征参数,两者之间具有最相似的特征和最小的误差。dtw算法是不断寻找语料库中的语音特征和待测语音特征之间的矢量距离最小的路程。是一种非线性规整技术。
62.假设a是语料库中的语音时间序列,其中a有n帧数据,语料库中第n帧的数据特征值是an,则用表达式(4-1)表示为
63.a=a1,a2,a3,

,anꢀꢀꢀꢀꢀꢀ
(4-1)
64.同理,得到待检测语音b的时间序列,其中b有m帧数据,待测语音中第m帧的数据特征值时bm,则用表达式(4-2)表示为
65.b=b1,b2,b3,

,bmꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-2)
66.dtw算法的目的是比较语料库中语音a与待测语音b之间的相似程度,失真越小,相似程度就越高,当语料库中的a语音与b语音相似度达到语料库中最高时,则待测语音b进行语音识别的结果是a语音。比较语料库a与待测语音b的时间序列时,如果公式(4-1)和(4-2)中n等于m时,即语料库中a的时间序列长度与待测语音b中的时间序列,可以直接计算序列a和序列b之间的距离;如果(4-1)、 (4-2)中n和m不相等时,需要进行在时间轴上的序列进行线性缩小或者放大,使语料库中的a的时间序列与待测语音b中的时间序列在时间轴上进行对齐,然后再进行计算两者之间的距离;如果两者之间的距离越大,则说明相似度越小;如果两者之间的距离越小,则相似度越高。
67.如图1所示,a和b是发音相同内容的语音片段,生成时间长短不同的语音,然后经过时间上的对齐,如图1中图a)和图b)所示。
68.因为语音信号在每一帧中都有过短或者过长的变化。如果只在时间轴上进行单纯的对齐,计算两个语音的距离代表相似度,显然直接在时间轴上对齐效果是非常差。从图1可以看得出来,a语音中的a1应该对应b语音中的b1,a语音中的a2应该对应b 语音中的b3;结果单纯的移动时间序列进行对齐得到a语音中的a1对应了b语音中的 b2,a语音中的a2对应了b语音中的b4;然而单独经过时间序列上的对齐明显是不够的,产生的误差非常大,这种做法不可取。因此对上述做法进行进一步改进,采用非线性的方式,提出了动态时间规整算法,即dtw算法。将之前时间轴上一维坐标直接比较进行改进,改为语料库中的语音时间序列特征值作为纵轴坐标,待测语音时间序列特征值作为横坐标,构造成二维坐标。二维坐标上的点代表语料库中的语音和待测语音的某一帧的交汇点。dtw算法是找一条最优路径,路径代表两个时间序列的语音进行计算的对齐点。
69.如图2所示,图a)是时间序列对齐前;图b)是dtw算法对齐后,a语音中的a1对应b语音中的b1,a语音中的a2对应b语音中的b3。
70.在二维坐标中,重点是找一条时间时间弯曲函数,函数表达式为(4-3)所示。
71.n=t(m)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-3)
72.(4-3)中横轴坐标m代表待测语音的特征值,纵坐标n代表语料库语音的特征值,待测语音的特征值非线性映射到语料库语音的特征值中,时间弯曲函数应该满足式(4-4)。
[0073][0074]
将函数(4-3)代入公式(4-4)得到(4-5)。
[0075][0076]
见式(4-5),d[m,t(m)]表示待测语音特征值帧与语料库中特征值帧之间的矢量距离。帧与帧之间的距离之和的最小值,作为待测语音和语料库中的语音距离测度,用d表示距离测度,表示待测语音与语料库中的语音有最大的相似性。常用的距离测度还可以用欧式距离(4-6)、切比雪夫距离(4-7)和绝对值距离(4-8)表示。
[0077][0078][0079][0080]
找到最大相似性时,不止有一条时间弯曲函数n=t(m),但是也并非任意,每次发音内容的速度是不相同的,但是有一个共同点是每次发音的内容的先后顺序是一定的。因此在二维坐标中,一定是从原点开始,在(m,n)点结束,这样的目的是保证待测语音和语料库中的语音充分得到匹配,避免两者语音的长度不同导致匹配结果误差过大。为了简化运算,每一次只在相邻点进行匹配,假设在二维坐标中,匹配路径正在点(x,y),则下一个匹配的点只可能在(x+1,y)、(x+1,y+1)和(x, y+1)三个坐标中进行匹配。第i次匹配为zi,i的取值的最小范围,即最少匹配次数为n和m的中的最大值;i的取值范围的最大值即,匹配最多的次数为n和m之和减去 1得到待测语音和语料库中语音的映射关系,得到动态时间规整匹
配的搜索路径公式,如式(4-9)所示。
[0081]
z=z1,z2,z3,

,z
i max(m,n)≤i<n+m-1
ꢀꢀꢀꢀꢀ
(4-9)
[0082]
dtw路径要满足三个条件,分别是边界条件、连续性和单调性。
[0083]
(1)边界条件z1=(1,1),zi=(m,n),时间顺序是不变的,从二维坐标的左下角(1,1)到坐标的右上角(m,n),是一条有限长的路径;
[0084]
(2)连续性中间不能有断点,即不能跳过任何一个节点;
[0085]
(3)单调性下一个节点的坐标不能小于上一个节点的坐标。
[0086]
如图3所示,是搜索下一个路径示意图,即在二维坐标上任意一点(x,y),满足上述所述的下一个节点的坐标只能是(x+1,y)、(x+1,y+1)和(x,y+1),既满足连续性又满足单调性。
[0087]
如图4所示,同理,可以得到在二维坐标上任意一点(x,y),满足搜索路径的上一个节点的坐标只能是(x-1,y)、(x-1,y-1)和(x,y-1)。
[0088]
在任意一点(x,y)的搜索路径中,与上一个节点中选择匹配坐标的的最小值,则公式(4-4)又可以写成(4-10)
[0089]
d(x,y)=d[a(x),b(y)]+min[d(x-1,y),d(x-1,y-1),d(x,y-1)]
ꢀꢀꢀꢀꢀ
(4-10)
[0090]
dtw算法计算时,从(1,1)开始,到(m,n)结束。反复利用(4-10)搜索路径,经过公式(4-9)中的i步最后到达(m,n)点,可以找到待测语音和语料库中的语音的最优路径z,并且能求出最短距离之和d。最后是需要选择语料库中与待测语音中距离之和最小的语音作为识别出来的语音,也就是识别结果。
[0091]
如图5所示,是仿真结果图,图a)中白色的线的是两段语音经过dtw算法对齐过程中最短距离之和的路径,路径是从图片上的左上角开始到右下角结束。图中颜色的深浅代表计算距离的大小,颜色越浅说明距离越大;图b)是仿真结果。
[0092]
4.1.2隐马尔可夫模型
[0093]
隐马尔可夫模型是一个语音信号统计模型,1970年baum提出了隐马尔可夫模型的理论基础,随后在语音识别方面中广泛应用。本技术利用隐马尔可夫模型对失语症患者语音进行识别。隐马尔可夫模型简称hmm,用数学模型表示,如式(4-11)所示。
[0094]
λ=(π,a,b)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(4-11)
[0095]
hmm模型是一个随机过程,hmm模型实际上是在有噪声的情况下,观测到隐马尔可夫链,但是还有其他的隐马尔可夫链和观察到的随机过程,并不能直接观察到,但是可以间接的观察到,可以通过观察已知的状态序列,推测未知的状态序列。简单的说,隐马尔可夫模型的基础是马尔科夫过程,前提是状态和时间都是离散的,将来的状态只影响当前的状态,与过去的状态没有关系。过渡是每一个状态之间可以进行互换,最后结果保持不变;过渡概率是互换状态时,会产生对应的概率关系。
[0096]
马尔科夫链的定义:假设存在一个随机序列x
t
,在t时刻,都会存在n个状态θ1,θ2,θ3,

,θn中的一个状态,而且每一个状态的存在的概率是不同的。比如在t+k 时刻所处的状态的概率是q
t+k
,而状态q
t
只与t时刻有关,与t时刻之前的状态没有关系。用表达式(4-12)表示。
[0097]
p=(x
t+k
=q
t+k
|x
t
=qk,x
t-1
=q
k-1


,x1=q1)=p(x
t+k
=g
t+k
|x
t
=q
t
)
ꢀꢀꢀꢀ
(4-12)
[0098]
公式(4-12)中的q与θ的关系是q属于θ表达式(4-13)所示。
[0099]
q1,q2,

,qm,q
m+k
ò
(θ1,θ2,θ3…
,θn)
ꢀꢀꢀꢀꢀ
(4-13)
[0100]
其中(4-12)中的x
t
被称为马尔科夫链,k步转移概率为表示如(4-14)所示。
[0101]
pj(t,t+k)=p(q
t+k
=θj|q
t
=θi)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-14)
[0102]
在(4-14)中,t、i和j为正整数,i和j的取值范围都在1到n之间。(4-14) 公式中的与t无关时,称这个马尔科夫链为齐次马尔科夫链。公式(4-15) 所示。
[0103][0104]
一般情况下齐次隐马尔可夫链就是隐马尔可夫链,之后不做特殊说明。当k的取值为1时,称之为转移概率或一步转移概率,用表示转移概率,其中i和j的取值范围在1和n正整数之间,构成一个矩阵如式(4-16)所示。
[0105][0106]
转移概率的取值范围在0和1之间,并且所有转移概率之和为1,用表达式(4-17) 和(4-18)表示。
[0107][0108][0109]
转移概率还可以得到k步转移概率pj(k),转移概率矩阵a是马尔可夫链重要参数之一,但是仅凭转移概率矩阵a确定不了初始分布q1=θ1的概率,要想完全代表马尔可夫链,除了转移概率矩阵a之外,还有初始状态概率矢量π=(π1,π2,π3,

,πn),其中每一个分量表示q1等于θi的概率,即公式(4-19)所示。
[0110]
πi=p(q1=θi),1≤i≤n
ꢀꢀꢀꢀꢀ
(4-19)
[0111]
初始状态概率πi的取值范围在0和1之间,并且所有初始状态概率之和为1,用表达式(4-20)和(4-21)表示。
[0112]
0≤πi≤1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-20)
[0113][0114]
因此用转移概率矩阵a和初始状态就能代表一个离散的一阶马尔可夫链过程。隐马尔可夫模型是在马尔科夫链上进展起来的,隐马尔可夫模型比马尔科夫链复杂,马尔科夫链观测到的事件和状态是一一对应关系,但是隐马尔可夫模型观测事件和状态是通过一系列的概率分布相互关联的,但不是对应的关系。隐马尔可夫模型包括基本随机过程马尔科夫链和统计对应关系两个随机过程,其中马尔科夫链代表的是状态转移过程;另一个是统计对应关系,是状态和观测值之间对应关系。与马尔科夫链的不同之处是,直接观测不到观测值和状态一一对应,只能知道观测值,看不到状态。隐马尔可夫中的“隐”字就体现在这里,可以通过随机过程去推测状态的存在和特征。
[0115]
隐马尔可夫模型的定义用n,m,π,a,b五个参数表示,如公式(4-22)所示。
[0116]
λ=(n,m,π,a,b)
ꢀꢀꢀꢀꢀꢀꢀ
(4-22)
[0117]
可以简写为(4-23)。
[0118]
λ=(π,a,b)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(4-23)
[0119]
表4-1对隐马尔可夫模型中的参数进行描述。
[0120]
表4-1hmm模型参数说明
[0121][0122]
(续表)
[0123][0124]
如图6所示,hmm组成示意图,隐马尔可夫模型可以分为两个部分,一个是输入,另一个是输出。输入由马尔科夫链中的π,a组成,输入q1,q2,q3,...,q
t
作为状态序列;输出由马尔科夫链中的b组成,输出o1,o2,o3,...,o
t
作为观察值序列,其中t为长度。
[0125]
4.1.3动态时间规整与隐马尔可夫模型比较
[0126]
通过前面介绍动态时间规整算法和隐马尔可夫模型算法可以看出,这两种算法都有优点和不足,下面分别进行分析。
[0127]
动态时间规整算法:解决了语音速率不相等的问题。此算法只对特定人语音识别之前对所有内容进行训练,模板训练和算法简单并且容易理解,之后再进行识别效果特别好。但是失语症患者属于非特定人,需要建立很大的存储量和匹配量,对于非特定人效果不太好。
[0128]
隐马尔可夫模型:在语音的声学模型方面,隐马尔可夫模型能完整的表达。在非特定人方面,隐马尔可夫模型对大量的数据进行统计,建立稳定的统计模型,为语音中各种突发情况做好基础,提高了语音识别的性能和抗噪性能。隐马尔可夫模型的不足之处是需要一个很大的语音库,在本技术已经建好。在实际工作中训练历程工作量较大,计算量也比较大,用很大的容量sram的dsp才能完成需要的存储量和匹配计算。但是一旦模型建立完成之后,识别历程简单,识别率提高。
[0129]
基于pc通过麦克风以及笔记本对失语症患者进行采集,采样率为16khz,对采集的声音进行实验,基于matlab对动态时间规整算法和隐马尔可夫算法进行比较。采用mel特征提取,对提取的特征分别进行动态时间规整算法和隐马尔可夫算法语音识别。
[0130]
如图7所示,对不同时间长度的语音,采用动态时间规整算法和隐马尔可夫算法语音识别,统计这两种算法的识别成功率。
[0131]
如图8所示,对不同的语音数量,采用动态时间规整算法和隐马尔可夫算法语音识别,统计这两种算法的平均识别时间。
[0132]
从图7中的统计数据可以看出,待测语音的时长小于3秒时,语音识别的成功率趋于上升状态,其中动态时间规整算法的识别成功率大于隐马尔可夫模型的识别成功率。当待测语音的时长大于3秒时,语音识别的成功率处于下降状态,动态时间规整算法的识别成功率小于隐马尔可夫模型的识别成功率。
[0133]
从图8中的统计数据可以看出,随着待测语音数量的增多,动态时间规整算法的平均识别时间和隐马尔可夫模型的平均识别时间都会增加,识别时间会变长,识别效率降低。但是对于平均时间来说,hmm算法比动态时间规整算法识别时间上有微小的优势,dtw算法比hmm模型算法的识别时间略短一些,即识别速度略快一点。
[0134]
dtw算法对单个词的识别成功率高。但是对于连续语音,hmm算法识别率高。针对识别时间,dtw算法和hmm算法相当。要想提高hmm的识别速度,因此本技术对hmm模型训练进行改进。
[0135]
4.2hmm的三个基本问题
[0136]
要想将隐马尔可夫模型应用到语音识别中,需要解决三大基本问题。
[0137]
(1)评估问题本技术采用前向-后向算法来计算给定的观测序列o=o1,o2,o3,...,o
t
以及隐马尔科模型λ=(π,a,b)时,由隐马尔可夫模型λ=(π,a,b)产生出观察序列 o=o1,o2,o3,

,o
t
的概率p(o|λ);
[0138]
(2)预测问题本技术采用viterbi算法对给定的一个观测值序列 o=o1,o2,o3,

,o
t
和一个隐马尔可夫模型λ=(π,a,b),如何决定一个最优的状态序列的问题:
[0139]
(3)模型训练问题本技术采用的是baum-welch算法解决隐马尔可夫模型训练问题,也称之为隐马尔可夫模型参数估计问题,给定观测序列o=o1,o2,o3,

,o
t
,决定一个隐马尔可夫模型λ=(π,a,b),让p(o|λ)的概率最大。
[0140]
下面就分别介绍三种算法。
[0141]
4.3hmm的三种算法
[0142]
4.3.1前向-后向算法
[0143]
前向-后向算法目的是求模型λ产生出o的概率p(o|λ)。根据图6可知,对于一个固定的状态序列q=q1,q2,q3,

,q
t
得到公式(4-24)。
[0144][0145]
其中的表达方式为公式(4-25)所示。
[0146][0147]
对于给定的λ,产生的q的概率为公式(4-26)。
[0148][0149]
最后所求的概率为公式(4-27)。
[0150][0151]
因为计算量巨大,要想求出概率p(o|λ),必须寻找有效高效的算法。前向-后向算法可以解决上面的问题。为了后面的算法表示方便,对状态θi的形式记为i。
[0152]
前向算法的定义为公式(4-28)。
[0153]
α
t
(i)=p(o1o2…ot
,q
t
=i|λ)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-28)
[0154]
那么,有初始化、递推和终止分别如下:
[0155]
初始化:对1≤i≤n有公式(4-29)。
[0156]
α
t
(i)=π
ibi
(o1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-29)
[0157]
递推:对1≤t≤t-1,1≤j≤n有(4-30)。
[0158][0159]
其中bj(o
t+1
)见式(4-31)。
[0160][0161]
终止:见式(4-32)。
[0162][0163]
后向算法与前向算法类似,定义后向变量见式(4-33)。
[0164]
β
t
(i)=p(o
t+1ot+2
…ot
,q
t
=i|λ)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-33)
[0165]
那么,有初始化、递推和终止分别如下:
[0166]
初始化:对1≤i≤n见式(4-34)。
[0167]
β
t
(i)=1
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-34)
[0168]
递推:对t=t-1,t-2,

,1,1≤i≤n有(4-35)。
[0169][0170]
终止:见式(4-36)。
[0171]
p(o|λ)=π
ibi
(o1)β1(i)
ꢀꢀꢀꢀꢀꢀꢀ
(4-36)
[0172]
4.3.2viterbi算法
[0173]
viterbi算法是寻找一个最优的状态序列最佳状态序列q
*
指的是p(q,o|λ)的概率最大时的取值。viterbi算法中定义最大概率δ
t
(i)指的是t时刻沿着一条路径q1,q2,q3,

,q
t
,并且q
t
=i产生出o1,o2,o3,

,o
t
最大概率,则用公式(4-37) 表示如下:
[0174][0175]
则求最佳状态序列q
*
的过程为初始化、递推、终止和路径回溯,下面逐一介绍。
[0176]
初始化:对1≤i≤n,见公式(4-38)、(4-39)。
[0177]
δ1(i)=π
ibi
(o1)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-38)
[0178][0179]
递推:对2≤t≤t,1≤j≤n见式(4-40)、(4-41)。
[0180][0181][0182]
终止:公式(4-42)、(4-43)的表达如下。
[0183][0184][0185]
路径回溯,决定最佳的状态序列,用公式(4-44)表示
[0186][0187]
在语音信号处理方面,p(q,o|λ)动态范围很大,常常使用近似viterbi算法能用来计算p(o|λ)。viterbi算法和上述提到的前向-后向算法都是格型结构。
[0188]
4.3.3baum-welch算法
[0189]
baum-welch算法的目的是给定一个观测值序列o=o1,o2,o3,

,o
t
确定λ=(π,a,b),使p(o|λ)最大。由公式(4-28)和(4-33)分别定义的前向和后向变量,有公式(4-45)。
[0190][0191]
要想使p(o|λ)最大,因为有取值范围,所以没有估计λ的最优的方法。 baum-welch算法原理是递归,可以利用梯度方法获得p(o|λ)的局部最大值,最后得到λ=(π,a,b)。
[0192]
定义变量ε
t
(i,j),在模型λ和观测序列o已知的情况下,hmm模型在t时刻处于状态i,而在t+1时刻处于状态j的概率,如公式(4-46)所示。
[0193]
ε
t
(i,j)=p(q
t
=i,q
t+1
=j|o,λ)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-46)
[0194]
由前后向变量的定义可以推导出公式(4-47)。
[0195][0196]
那么,隐马尔可夫模型在时刻t处在i状态的概率是公式(4-48)。
[0197][0198]
代表i状态转移次数的期望值,表示i状态转移到状态j次数的期望值,利用baum-welch算法中的重估公式推出(4-49)、(4-50)和(4-51)。
[0199][0200][0201]
[0202]
由上述公式(4-49)、(4-50)和(4-51)求出和可以得到一个新的模型由重估公式证明,在本技术中不在赘述,其中比λ在观察值中效果好,在重复过程中,不断的改进模型参数,一直到收敛,为所求的模型。
[0203]
如图9所示,hmm模型和三个算法的关系,根据上述前向-后向算法、viterbi 算法、baum-welch算法三个算法解决了隐马尔可夫的评估、预测、训练三个基本问题。
[0204]
本技术对15名女性和15名男性失语症患者的50个汉语词组语音进行录制,每一位患者对每一个汉语词组进行反复发音10次,前6次用于语音训练,中间2次用于验证,最后2次用于测试,共15000个语音样本。其中有9000个训练样本、3000 个验证样本和3000个测试样本,来进行语音识别结果。
[0205]
实验如下:
[0206]
如图10所示,对上述9000个样本数据进行训练,采用baum-welch重估公式 log(p(o|λ))的实验结果,迭代条件是δ(log(p(o|λ)))<10-4
,当传统的hmm的重估公式迭代次数不超过9次时δ(log(p(o|λ)))趋于最小,传统的baum-welch重估公式能高估出最优模型。
[0207]
如图11所示,hmm中baum-welch算法测试识别结果,其中det_lab表示测试语音,true_lab表示真实语音,两者用0和1表示,若两者数据不相同时,说明识别错误,图中框起来的部分为语音识别错误部分。
[0208]
4.4改进hmm模型
[0209]
由隐马尔可夫模型三种算法可以得出,在语音识别方面,前向-后向算法、viterbi 算法和baum-welch算法三个算法拥有非常重要的作用,共同点是不停的迭代之后运算,结果与比例因子相乘才能完成计算,计算量非常大,随着时间t的增大变量的动态范围变大,容易造成溢出。
[0210]
本技术只针对baum-welch算法进行了改进。baum-welch算法的不足之处在于利用极大似然估计思想,在语音识别中局部最优没有一个确定值,造成识别率非常受影响。本技术采用k均值算法和遗传算法分别对baum-welch算法的hmm进行改进。
[0211]
4.4.1基于k均值算法的hmm参数改进
[0212]
本技术基于k均值算法进行改进,此算法的优点在于可以加快模型参数重估的收敛速度,采用动态改变模型参数过程中可以获得更大范围的最优解,因此可以提高识别率。k均值算法在存储方面还有一个优点,k均值算法存储量小,原因在于每次都是对输入的训练序列进行计算,而不对前面的数据进行存储。存储量减少的同时采用分段降低了计算复杂程度。k均值算法是聚类算法,k均值可以理解成从样本中选择样本的聚簇中心值,计算剩下的样值和中心值的矢量距离的模值,当做最小的聚簇中,得到一系列的簇,然后计算中心值,然后继续执行上面几步,不停的迭代,一直到稳定为止。
[0213]
k均值算法如下:
[0214]
1)hmm模型λ=(π,a,b)参数初值确定,经过等分划状态或者根据以往的经验值进行配置初值。
[0215]
2)配置最大的迭代次数n和收敛阈值φ。
[0216]
3)采用viterbi算法对输入训练语音数据进行状态切分操作。
[0217]
4)对于隐马尔可夫模型,k均值算法对hmm模型λ=(π,a,b)中的b参数重新估计,分为离散模型系统和连续模型系统。
[0218]
对于离散的隐马尔可夫系统中的观测概率进行重估计算,如图公式(4-52)所示,状态sj中标号i语音帧出现的次数除以全部语音帧的个数就可以得到观测概率
[0219][0220]
对于连续的隐马尔可夫系统中,假设每个状态的概率状态密度函数是由m个正态分布函数线性叠加形成的。混合函数如公式(4-53)所示,其中n
ji
指的是状态j的第i个语音帧,nj指的是状态j的语音帧个数。状态j中的第i帧的样本均值用μ
ji
表示,状态j中第i帧样本协方差矩阵,用v
ji
表示。利用上述参数计算观测概率bj作为模型参数
[0221]wji
=n
ji
/njꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4-53)
[0222]
5)利用成为下一次的初始值,利用baum-welch算法对隐马尔可夫模型λ=(π,a,b)中b参数重估。
[0223]
6)转到第(3)步,一直到迭代次数大于最大迭代次数n或者到收敛。
[0224]
如图12所示,k均值算法用流程图表示。
[0225]
如图13所示,是k均值算法的原理,其中图a)是随机初始化的两个点,作为聚类的中心点b)是将数据进行归类,距离那个中心点近,就属于哪一类图c)是移动聚类点,计算属于该中心的数据平均值,修正中心图d)是再次进行聚类图e)是不断重复上述过程,迭代3次的效果。
[0226]
如图14所示,是图13的运行结果。第一次聚类的距离是1.42,第二次聚类的结果是0.97,第三次聚类结果还是0.94。由此可见上述利用k均值算法迭代2次就趋于平稳。
[0227]
如图15所示,基于k均值算法改进hmm中baum-welch算法,改进hmm之后,三个算法的关系图。
[0228]
如图16所示,是基于k均值算法改进hmm模型中beaum-welch算法的测试结果,其中画框线的部分是真实语音和测试语音识别错误的情况。最后的平均识别率达到了88%。
[0229]
4.4.2基于遗传算法的hmm参数改进
[0230]
采用遗传算法对传统的baum-welch算法进行替代,可以克服传统baum-welch 算法的局部极值和迭代的问题。遗传算法还有全局寻优的特点,可以得到全局最优的 hmm模型λ=(π,a,b)中b的参数,提高语音识别的识别率。遗传算法分析一类种群的所有个体作为对象,按照随机进行高效率的搜索,进行选择、交叉和变异操作,筛选代表新的解集种群。这一系列操作与自然界进化一样,后代种群更适合环境,最后一代的种群可以作为问题的最优解。
[0231]
遗传算法如下:
[0232]
1)建立hmm模型的初始群体,初值可以均匀设置也可以通过多次实验得到。
[0233]
2)构造适应度函数,计算种群中每个个体的适应度。
[0234]
3)选择,选用合适的选择算子,从群体中选择新的个体。个体的选择概率为公式(4-54)所示。
[0235]
[0236]
式中fi——个体i的适应度;
[0237]
n——种群规模。
[0238]
4)交叉,种群随机两个个体ai和ak进行交换,获得新个体。交叉概率用pc表示,采用实数交叉时,个体ai在第j个位置的交叉公式如(4-55)所示。
[0239][0240]
5)变异,以变异概率改变某位的数值,以产生新的个体。变异概率用pm表示。
[0241]
6)更新hmm模型参数。
[0242]
7)返回第(2)步,如果迭代到终止条件或者收敛,选择最好个体当做遗传算法结果。
[0243]
如图17所示,遗传算法的流程图。
[0244]
基于遗传算法来进行估计模型参数,有不同的收敛条件。遗传群体特征为:种群规模n取30;选择概率ps取0.5;交叉概率pc取0.1;变异概率pm取0.001。
[0245]
如图18所示,当目标函数δ(log(p(o|λi)))为最小化时hmm参数的实验结果,遗传算法迭代3次以上的适应度值很快趋于平稳,但是没有寻找出最优的数值。
[0246]
如图19所示,当目标函数δ(log(p(o|λi)))为最大化时hmm参数的实验结果,迭代了90多次之后,没有收敛。随着迭代次数的增加,值也越来越大,估算参数是非稳定的参数。
[0247]
由图18和图19所示,该参数的遗传算法不能进行失语症患者语音训练,两种适应度函数都不能满足最佳收敛模型。因为遗传算法参数对识别率有一定的影响,所以经过多次试验,寻找出最佳的遗传算法参数。种群规模n取30;选择概率ps取0.5 时,终止迭代设为100,当交叉概率pc和变异概率pm达到最佳组合时,识别率最优。
[0248]
如图20所示,经过多次试验,得出交叉概率pc为0.3和变异概率pm为0.002时,识别率最优。
[0249]
如图21所示,基于遗传算法改进hmm中baum-welch算法,改进hmm之后,三个算法的关系图。
[0250]
4.4.3两种改进算法进行对比
[0251]
hmm模型参数的质量会直接影响失语症患者语音识别的效果,针对baum-welch 算法的参数重估数据溢出的问题,提出了两种改进方法。
[0252]
第一种改进方法,本技术的4.4.1节,引入了k均值算法改进baum-welch算法。 k均值算法大大加快收敛速度,减少模型的训练计算量,优化算法提高了识别方法的性能。
[0253]
第二种改进算法,本技术的4.4.2节,引入了遗传算法代替baum-welch算法。训练时用遗传算法对权值进行寻找,搜索范围缩小,可以达到高效寻找全局的目的,并且避免局部最小的问题。
[0254]
综上所述两种改进方法,都能改进hmm的语音识别率和训练速度。
[0255]
4.5小结
[0256]
本技术将k均值算法和遗传算法分别应用到了隐马尔可夫模型的语音识别算法中。首先介绍了传统算法中的动态时间规整算法和隐马尔可夫模型,通过对两个传统的语音识别算法进行比较分析,得到在相同的识别时间内,隐马尔可夫模型算法识别率更高。针对隐马尔可夫模型中baum-welch算法在语音识别中进行算法的参数重估数据溢出,造成训练时间受影响的问题。运用了k均值算法和遗传算法分别对 baum-welch算法进行改进,解
决了baum-welch算法模型训练的计算量,优化了的算法来提高识别方法的性能。
[0257]
目前,本发明的技术方案已经进行了中试,即产品在大规模量产前的较小规模试验;中试完成后,在小范围内开展了用户使用调研,调研结果表明用户满意度较高;现在已开始着手准备产品正式投产进行产业化(包括知识产权风险预警调研)。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1