一种利用变异鱼群算法优化的SVM进行语音识别的方法与流程

文档序号:11136018阅读:698来源:国知局
本发明涉及语音识别
技术领域

背景技术
:语音经过话筒变成电信号后加在识别系统输入端。经过预处理后,语音信号的特征被提取出来,首先在此基础上建立所需的模板,这个建立模板的过程称为训练过程。接下来将新提取的特征与模板匹配的过程称为识别过程。即根据语音识别的整体模型,将输入的语音信号的特征与已经存在的语音模板进行比较,根据一定的搜索和匹配策略,找出一系列最优的与输入的语音相匹配的模板。然后,根据此模板号的定义,通过查表就可以给出计算机的识别结果。由于在训练或识别过程中,即使同一个人发同一个音时,不仅其持续时间长度会随机地改变,而且各音素的相对时长也是随机变化的。因此在匹配时如果只对特证向量系列进行线性时间规整,其中的音素就有可能对不准。20世纪60年代日本学者板仓(Itakura)提出了动态时间规整(DTW)算法。算法的思想就是把未知量均匀地伸长或缩短,直到它与参考模式的长度一致时为止。在时间规整过程中,未知单词的时间轴要不均匀地扭曲或弯折,以便使其特征与模板特征对正。DTW是较早的一种模式匹配和模型训练技术,它应用动态规划方法成功解决了语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好性能。但因其不适合连续语音大词汇量语音识别系统,目前已被人工神经网络、隐马尔柯夫模型和支持向量机(SVM)替代。相较于人工神经网络,支持向量机其坚实的理论基础可以有效地克服人工神经网络方法中存在的“过学习”和“欠学习”的缺点。同时,这种模型也有效地补充了隐马尔柯夫模型受极大似然准则限制的弊端,加强了模型的分类能力。其次,人工神经网络和隐马尔柯夫模型都是建立在样本数目趋于无穷大的渐进理论基础上的,只有当训练样本集充分大时,性能才会最好,然而在实际问题中样本数目往往很难趋于无限大,难以达到理想的效果。因此,这种能够实现对有限样本进行预测的新型模式识别方法——支持向量机就被广泛地应用于语音识别中。但是,现阶段存在的问题是支持向量机参数的设置会严重影响着其分类性能,且到目前为止还没有较有效的理论方法作指导。因此,选择合适的核参数及惩罚因子是利用支持向量机解决问题的关键。文献《一种面向语音识别的抗噪SVM参数优化方法》提出一种基于生境共享机制的并行结构人工鱼群算法(PAFSA)优化SVM参数的方法。该方法引入小生境共享机制的思想,通过反映个体之间相似程度的共享函数来调节群体中各个个体的适应度,使得在这之后的群体进化过程中,算法能够依据这个调整后的新适应度来进行选择运算,以维持群体的多样性,创造出小生境的进化环境。同时也对鱼群算法在循环主体处进行了改进,提出一种并行人工鱼群算法,在初始化后直接分2条路径执行:一条路径执行追尾行为,其中觅食行为设置为随机行为;另一条路径执行聚群行为,同样设置觅食行为为随机行为。最后比较两者的适应值,取最优的结果,记录于公告板,同时更新个体,继续迭代寻优。在寻优的过程中,该方法优选出了能提高语音识别率的参数值,优选的时间也有所改善,但是距离实际应用还有一定的差距,而且当词汇量较大时,其寻优时间较长。文献《一种混沌人工鱼群算法对SVM参数的优化及应用》中指出通过结合混沌模型实现对人工鱼群算法中各行为的改进,提出了一种混沌人工鱼群算法(CAFSA)优化SVM参数的方法。该方法利用混沌模型Logistic映射产生初始种群,同时对人工鱼群的觅食、聚群、追尾行为进行混沌优化。同时在执行每次行为时,所需的随机数均由Logistic映射经过多次混沌迭代后产生。该方法比基本人工鱼群算法更易跳出局部极小,收敛速度更快,所得语音识别系统的识别率更高。但这种方法在语音库的某些条件下识别率并没有显著的提高,且总体最佳参数的寻优时间仍较长。技术实现要素:本发明所要解决的技术问题是:如何提高语音识别中的识别率。本发明所采用的技术方案是:一种利用变异鱼群算法优化的SVM进行语音识别的方法,按照如下的步骤进行:步骤一、通过话筒收集语音样本作为输入数据,然后对输入的数据的语音信号进行预处理,再进行特征提取,获得语音信号的特征,建立能够代表语音信号的语音信号参数集,该语音信号参数集是指从每一帧语音信号中获得的训练样本的多维特征矩阵train_data,并给该多维特征矩阵train_data贴上对应的训练样本类别标签train_label;步骤二、利用变异鱼群算法优化的SVM,求得使适应度值最大时对应的参数组(c,γ),c为惩罚因子,γ为SVM参数,得到SVM模型model;步骤三、对话筒输入的待识别的语音样本经过与步骤一相同的前期预处理和特征参数提取,获得的测试集样本对应的多维特征矩阵test_data和对应的测试类别标签test_label,与步骤二中的SVM模型model进行匹配,获得语音识别结果,并获得语音识别分类正确率。作为一种优选方式:步骤二中,利用变异鱼群算法优化SVM按照如下的步骤进行:a、设置人工变异鱼群数量fishnum、最大迭代次数Gmax、最大尝试次数trynum,移动步长step,建立初始人工变异鱼群参数γ和惩罚因子c的取值范围均为2-7-27,随机产生fishnum个参数组(c,γ)作为人工鱼群的第n条人工鱼的初始状态X0n:X0n=-7+14*rand()其中n为小于等于fishnum的自然数,rand()是一个介于0到1之间的随机数,每一组参数(c,γ)决定一条人工鱼的初始状态;b、利用台湾大学林智仁(C.JLin)等人开发的一套用于SVM模式识别与回归机的libsvm软件包中的svmtrain函数,计算得到平均分类准确率,即适应度值f(Xgenn):f(Xgenn)=svmtrain(train_data,train_label,'-v-c-g')其中Xgenn表示迭代次数为gen时第n条人工鱼的状态,'-v'表示交叉验证模式,一般取5或10,'-c'对应参数组(c,γ)中c的值,'-g'对应参数组(c,γ)中γ的值,比较各个初始人工鱼群所处状态对应的适应度值,选择最大的适应度值计入公告板;c、在第gen次迭代更新时,自适应调整人工鱼的视野visual:visual=(visualmax-visualmin)exp[-(t*gen/Gmax)2]+vistulmax其中visualmax与visualmin是视野visual的最大值和最小值,t是经验系数,一般取值范围为[20,55];d、在第gen次迭代更新时,依次对每个人工鱼个体同时执行变异人工鱼群算法的个体行为和团体行为,生成新一代种群:个体行为,设第gen次迭代过程中第n条人工鱼当前的状态为Xgenn,随机选择的下一状态为Xgen+1n,其目标是通过反复试探向适应度值更好的方向移动,如果满足适应度值f(Xgenn)≦f(Xgen+1n),则向前移动一步进行迭代,否则不进行迭代,如果经过trynum次尝试后仍不满足前进条件,则人工鱼个体会在其视野范围内随机移动一步:Xgen+1n=Xgenn+visual*rand()其中,rand()是一个介于0到1之间的随机数;团体行为,在当前邻域内由聚群行为求得中心位置Xcenter,既当前人工鱼其视野范围内同伴的状态的算术平均值,再由追尾行为求得视野范围最优位置Xmax,既当前人工鱼状态Xi视野范围内各人工鱼同伴的适应度值最大时对应的同伴状态,如果f(Xcenter)>f(Xi),则当前人工鱼状态Xi向中心位置的方向前进一步,既下一个人工鱼状态Xi+1=Xi+(Xcenter-Xi)/(||Xcenter-Xi||)*visual*rand()否则就向搜索范围内的最优位置方向前进,下一状态为:Xi+1=Xi+(Xmax-Xi)/(||Xmaxr-Xi||)*visual*rand()并且如果f(Xcenter)>f(Xmax),则最优位置Xmax=Xcenter,比较两种行为所得人工鱼个体所处状态的适应度值,选择适应度值最大的行为执行,并与公告板上的记录进行比较,将适应度值最大的人工鱼计入公告板。判断迭代次数是否已经达到最大迭代次数Gmax,如果满足则执行步骤e;否则返回步骤c,继续下一次迭代寻优;e、寻优得到最大适应度值所处状态对应的参数组(c,γ)的值,利用libsvm软件包里的svmtrain函数得到SVM模型model:model=svmtrain(train_data,train_label,'-c-g')其中'-c'对应最优参数组(c,γ)中c的值,'-g'对应最优参数组(c,γ)中γ的值。本发明的有益效果是:通过采用自适应的方式对人工鱼的视野visual进行改进,人工鱼群算法在迭代初期,gen值较小,所得视野范围较大,个体鱼可以在整个遍历范围内更新;而在迭代后期,随着gen值的增加,视野范围逐渐减小,个体鱼只在小范围内寻优更新,这样更有利于精确找到全局最优值。所以,采用自适应视野的调节方法可以有效增强人工鱼群算法在全局寻优与局部寻优的协调性。变异鱼群算法通过减少参数的使用和简化人工鱼群算法中的行为方式,降低了算法的结构和计算复杂度,有效地避免了在参数寻优过程中陷入局部极值,同时也加快了其收敛速度。同时将变异鱼群算法优化的SVM模型应用到语音识别系统时,语音识别率更高,收敛速度更快。具体实施方式本发明以windows7系统作为程序开发软件环境,使用MATLABR2010b作为程序开发平台,经过话筒收集语音样本作为输入数据,然后语音识别系统采用一系列算法对输入的语音信号先后进行预处理和特征提取(此过程采用现有的技术),语音识别的特征提取是从语音信号中提取能够代表该语音信号的参数集,设这些参数是从每一帧语音信号中获得的10维特征矩阵,如表1(本例通过三个人对10个孤立词在信噪比为0db条件下发音的特征矩阵作为训练集样本输入),最终获得特征矩阵train_data和特征矩阵对应的类别标签train_label用于训练阶段的模型参数;表1训练集样本初始化人工鱼群参数:设定人工鱼群数量fishnum为40,最大迭代次数Gmax为10次,最大尝试次数trynum为5次,移动步长step=0.125,40条人工鱼对应的初始状态如表2:表2人工鱼初始状态计算每条初始人工鱼的适应度值f(X0n):将表1中训练集样本的语音特征矩阵train_data和类别标签train_label代入公式:f(X0n)=svmtrain(train_data,train_label,'-v-c-g')其中n为小于等于fishnum的自然数,'-v'表示交叉验证模式,'-c'对应参数组(c,γ)中c的值,'-g'对应参数组(c,γ)中γ的值,设v=5,所得每条初始人工鱼的适应度值如表3:表3适应度值(%)通过比较,将最大的适应度值42.8571%计入公告板;自适应更新视野:在第gen次迭代更新时,自适应调整人工鱼的视野visual:visual=(visualmax-visualmin)exp[-(t*gen/Gmax)2]+vistulmax设视野visual的最大值visualmax和最小值visualmin分别为3和0.5,经验系数t=20,视野的更新结果如表4。表4视野自适应更新结果迭代次数12345678910visual3.06413.00003.00003.00003.00003.00003.00003.00003.00003.0000在第gen次迭代更新时,依次对每个人工鱼个体同时执行变异人工鱼群算法的个体行为和团体行为,生成新一代种群:个体行为,设第gen迭代过程中第n条人工鱼当前的状态为Xgenn,随机选择的下一状态为Xgen+1n,其目标是通过反复试探向适应度值更好的方向移动,如果满足适应度值f(Xgenn)≦f(Xgen+1n),则向前移动一步进行迭代,否则不进行迭代,如果经过5次尝试后仍不满足前进条件,则人工鱼个体会在其视野范围内随机移动一步:Xgen+1n=Xgenn+visual*rand()其中,rand()是一个介于0到1之间的随机数;团体行为,在当前邻域内由聚群行为求得中心位置Xcenter,即当前人工鱼状态Xi及其视野范围内同伴的状态的算术平均值,再由追尾行为求得视野范围最优位置Xmax,即当前人工鱼状态Xi视野范围内各人工鱼同伴的适应度值最大时对应的同伴状态,如果f(Xcenter)>f(Xi),则当前人工鱼状态Xi向中心位置的方向前进一步,即下一个人工鱼状态Xi+1=Xi+(Xcenter-Xi)/(||Xcenter-Xi||)*visual*rand()否则就向搜索范围内的最优位置方向前进,下一状态为:Xi+1=Xi+(Xmax-Xi)/(||Xmaxr-Xi||)*visual*rand()并且如果f(Xcenter)>f(Xmax),则最优位置Xmax=Xcenter,比较两种行为所得人工鱼个体所处状态的适应度值,选择适应度值最大的行为执行,并与公告板上的记录进行比较,将适应度值最大的人工鱼计入公告板。判断迭代次数是否已经达到最大迭代次数Gmax,如果满足则执行步骤e;否则返回步骤c,继续下一次迭代寻优;本实施例仅例举说明表2中序号为5的人工鱼在迭代次数gen=1时的状态更新,其他人工鱼和其他迭代次数人工鱼状态更新过程类似。模拟执行个体行为过程:设人工鱼X15对应参数c的取值为2-2,γ的取值为20.1,其适应度值f(X15)=25%,在其视野范围内随机选择的一个状态X1m(m∈[1,fishnum])对应参数c的取值为2-1,γ的取值为21,其适应度值为28.5714%,f(X15)≦f(X1m),满足前进条件,5号人工鱼向X1m方向前进一步,人工鱼X15的下一状态更新为X25=X1m;模拟执行团体行为过程:计算序号为5的人工鱼依次与所有人工鱼的距离:利用公式di,j=||Xgeni-Xgenj||其中i,j∈[1,fishnum]表5序号为5的人工鱼依次与所有人工鱼的距离序号12345678910距离7.740612.80263.92088.8682012.81089.27398.62584.06309.5031序号11121314151617181920距离6.791210.209110.927813.595710.48653.96184.79305.884910.15781.7450序号21222324252627282930距离7.91157.25176.02566.749511.94828.808711.639611.126710.92586.7275序号31323334353637383940距离11.81020.92778.84935.60999.23958.23149.95387.572610.82982.7975得到人工鱼X15视野范围内同伴人工鱼个数为4个,分别为X15、X120、X132和X140,人工鱼X15的同伴中心Xcenter为:Xcenter=(X15+X120+X132+X140)/4计算Xcenter的适应度值为f(Xcenter)=28.5714%,人工鱼X15、X120、X132和X140对应的适应度值f(X15)=32.1429%,f(X120)=32.1429%,f(X132)=32.1429%,f(X140)=35.7143%,因此人工鱼X15视野范围内适应度最高值为f(Xmax)=35.7143%,满足适应度值f(Xcenter)<f(Xmax)的前提,比较当前人工鱼X15所在位置与中心位置Xcenter的适应度值,因为f(Xcenter)>f(X15),所以向中心位置的方向前进一步,此时人工鱼X15个体的下一状态为:X25=X15+(Xcenter-X15)/(|Xcenter-X15|)*visual*rand()比较两种模拟执行行为的更新状态适应度值。表6测试集样本模拟执行行为更新状态适应度值个体行为35.7143%团体行为28.5714%由表6可知,执行个体行为后的更新状态适应度值大于执行团体行为的更新状态适应度值,所以人工鱼X15选择执行个体行为,再与公告板上的记录相比,原记录的适应度值更大,因此公告板保持原记录不变,同时生成新一代种群。迭代次数gen=gen+1,判断迭代次数是否已经达到最大迭代次数Gmax,如果满足则继续执行下一步骤;否则返回进行新一次迭代更新。得到最大适应度值所处状态对应的最优参数组(c,γ)的值为(25.0989,2-0.4769),利用libsvm软件包里的svmtrain函数得到SVM模型model:model=svmtrain(train_data,train_label,'-c',25.0989,'-g',2-0.4769)对话筒输入的待识别的语音样本经过与步骤一相同的前期预处理和特征参数提取,获得测试集样本对应的10维特征矩阵test_data和对应的测试类别标签test_label,上述的SVM模型model进行匹配,获得语音识别结果。利用svmpredict函数,代入测试集样本的语音特征矩阵test_data和类别标签test_label,如表7(本例通过两个人对10个孤立词在信噪比为0db条件下发音的特征矩阵作为测试集样本输入):表7测试集样本特征1特征2特征3特征4特征5特征6特征7特征8特征9特征10类别0.43280.0369-0.03130.00230.8845-0.1265-0.11430.04201.1971-0.019710.5016-0.04040.0181-0.03141.1500-0.0786-0.15110.12501.5403-0.092620.4571-0.05340.0034-0.03621.5739-0.0670-0.16800.18631.5481-0.034530.4285-0.0368-0.0125-0.04251.0200-0.3311-0.02540.13980.9016-0.093740.3789-0.04030.0063-0.00660.7729-0.0829-0.14090.11700.7175-0.031050.3642-0.00690.0060-0.00501.01800.0402-0.14000.10331.1899-0.090660.37430.0199-0.0244-0.01071.6746-0.1191-0.1888-0.14701.1861-0.170270.4766-0.0104-0.0787-0.02990.9494-0.2931-0.11130.20951.2758-0.185780.3971-0.00320.02910.00840.7660-0.0462-0.10830.06130.6599-0.020090.3848-0.01780.0155-0.01431.4032-0.1829-0.34720.02661.1635-0.1785100.50020.0840-0.0567-0.04390.7904-0.09030.03251.50380.1756-0.384710.5468-0.0020-0.0136-0.04710.98990..0116-0.28340.10121.63880.218420.5735-0.0472-0.0532-0.03801.25830.0254-0.24520.14321.63490062330.4910-0.0570-0.0619-0.05330.8172-0.1710-0.03500.11271.0238-0.158640.4163-0.0227-0.0351-0.00340.6519-0.0512-0.08650.06900.8406-0.038150.4601-0.00170.0168-0.01390.98830.0623-0.18040.06301.36460.081460.4655-0.0180-0.06150.07101.9710.0305-0.1276-0.17111.7352-0.413970.6396-0.0248-0.1272-0.10160.7899-0.1658-0.04130.12530.1467-0.213580.40080.02650.03340.01120.55370.0289-0.01300.08220.69740.005890.4884-0.0081-0.0207-0.01790.99510.0015-0.19340.02991.4983-0.005510[predict_label,accuracy]=svmpredict(test_data,test_label,model)其中accuracy为测试集样本的分类正确率,对应该测试集样本的语音识别正确率为accuracy=36.8421%。本实施例只用来说明具体实施方式,为了方便,所用的语音信号特征矩阵仅为10维,训练集样本的输入只选用了三个人提供的发音作为特征矩阵,测试集样本的输入只选用了两个人的发音作为特征矩阵,但在实际应用中对语音信号进行特征提取的参数集维数远大于此,同时对训练集样本和测试集样本的输入数量也会很大程度的增多,因此所得语音识别正确率就会大大提高。如果语音信号特征矩阵是1024维,训练集样本的输入为九人的发音作为特征矩阵,测试集样本的输入为七人的发音作为特征矩阵,则语音识别正确率accuracy=86.6667%。语音信号特征矩阵越大,训练集样本的输入越多,训练的模型也就越准确,语音识别正确率还会提高。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1