论文部分内容阅读
摘要:随着计算机技术和通信技术的快速发展,语音识别技术在国民经济中的各个领域得到了广泛的应用,并有相关产品的问世。但为了提高工作效率和节省企业的成本,有许多特定应用要与语音识别进行融合。针对企业报关系统的特点,采用了一种基于HMM模型的二级单字识别方法,解决了系统识别效率与识别稳定性的问题,使得该语音识别方法最终满足了报关系统的应用要求,并扼要介绍了词汇库维护、新人语音训练及建立语音新模型的过程。
关键词:隐马尔可夫模型 特征参数提取 实时语音识别 二级单字
中图分类号:TP 文献标识码:A 文章编号:1009-914X(2013)32-247-04
1 引言
应用语音识别方法能解除人机交互过程中的空间限制,在较远距离完成对计算机信息的输入。处理大量信息输入时,语音识别更是体现了灵活性、高效性,同时语音识别还能提高工作效率,给人类生活带来更多便利[1]。国内很多大中型企业的报关料件种类、报关单及报关合同数据繁多,数据录入的工作量大、重复性强、出错率高,严重影响工作效率。虽然现有大词汇量连续语音识别技术已取得较好成绩,亦有相关产品问世,但其针对孤立词识别的准确率不高,也缺少对特定应用词库的针对性。目前基于孤立词语音识别的应用系统不常见,具有语音识别功能的报关系统则更少耳闻。研究“基于HMM的实时语音识别方法”正是为了解决此问题。
2 HMM算法的语音识别
隐马尔可夫模型(HMM)自从1970年发展到现在,该算法就得到了广泛的研究,并已成为世界语音信号处理最常用的算法。目前,世界绝大多数的商业化的语音软件系统以及针对某领域开发的性能优越的语音识别系统,都是采用HMM模型进行开发的,它已形成了一套完整的架构。
2.1 HMM算法的定义及类型
隐马尔可夫模型(HMM)是在马尔可夫链的基础上发展起来的。对于马尔可夫模型而言,每一状态都对应一个可观察的物理事件,所以其状态的输出是有规律的。可是这种模型的限制条件过于苛刻,在许多实际问题中无法应用。实际问题往往更复杂,观察到的事件并不与状态一一对应,而是通过一组概率分布相联系。于是人们将这种模型加以推广,提出了HMM。
HMM是一个基于序列数据的随机模型,每个HMM都由一些代表隐状态的节点组成,这些节点之间由反映不同状态之间互相转移的转移概率相联系,每一个隐状态都能根据不同的概率发出一些可见的符号。隐马尔可夫模型是描述离散时间的数据样本序列的一种强有力的统计工具,具有处理非线性时变信号的能力,也就是说,HMM是一个双重随机过程,其中之一是马尔可夫链,这是一个基本随机过程,用它来描述状态的转移。另一个随机过程用来描述状态与观察序列之间的统计对应关系,用观察值概率来描述。这样,站在观察者的角度,只能看到观察值,其状态转换过程是观察不到的,因而称之为“隐”马尔可夫模型[2~3]。HMM一般假设3个条件:1、当前状态只与上一状态相关;2、状态之间的转移概率跟状态所处的具体时间无关;3、观测值只同当前状态有关。这3个假设大大降低了模型的复杂度。一个隐马尔可夫模型由下列参数描述:
(1) 是隐马尔可夫模型中Markov Chain的状态数目。记 个状态为 , ,…, ,记t时刻Markov Chain所处状态为 ,显然 ∈( , ,…, )。
(2)M 指的是每个状态对应的可能的观察值数目。记M个观察值为 ,记t时刻观察到的观察值为 ,其中, ∈( )。
(3) 指的是初始状态概率矢量 ,其中,
(4)A 表示状态转移概率矩阵, ,其中,
(2.1.1)
(5)B 表示观察值概率矩阵, ,其中,
(2.1.2)
这样,一个隐马尔可夫模型可以表示为
或简单表示成: (2.1.3)
形象地说,一个HMM可分为两部分,一个是Markov Chain,由π、A描述,產生的输出为状态序列;另一个是一个随机过程,由B描述,产生的输出为观察值序列。根据以上的分析,HMM算法需要解决以下问题:
(1)采用前向后向算法。对于给定的观察值序列 和模型 ,如何计算由模型 产生出 的概率 。
(2)采用Viterbi算法。已知观察值序列 和模型 ,计算最佳路径 。
(3)采用Baum-Welch算法。对于给定的观察值序列 ,通过调整模型 的参数,使产生的观测序列O的概率 的值最大。
2.2 HMM算法的语音仿真实验
通过以上算法分析,建立一个基于HMM算法的语音仿真实验系统。再利用录音工具,采用3名工作人员一共录制了600个报关词汇的语音样本,每人每词录6个语音样本,取每个人前3个样本做模型训练使用,后3个样本用来做测试使用。经系统测试,得出如表2-1所示结果。
测试结果显示,采用HMM模型语音识别系统效率较高,可达99.1%以上,但平均每词识别时间相对还是较长,约5.8秒左右。
3 HMM的二级单字语音识别
报关词汇存在许多重字,如直接采用上述算法,识别效率还是较低。而采用HMM的二级单字语音识别方法,则能较好地解决重字多的问题[4]。将报关系统中1200个词汇的词识别,改为二级单字识别,即:将1200个词汇中对每个词进行拆词处理,将第一个字提出来建立一个没有重字的字集,同样将该词的第二个字提出建立一个没有重字的第二个字集,同时要保留这两个字集之间的字词之间关系。经过拆分得到第一个字集438字,第2个字集441字。这样原来完成一次词识别需匹配1200次模型,且每个模型状态数为4,而二级单字识别匹配模型的次数只略大于438,且每个模型的状态数为2,因此可大大提升识别效率。 3.1 词汇拆分程序
通过开发一个拆词程序,将1200个报关词汇保存为Excel格式的电子文档,并将拆好的字集和字建立一一对应的关系。首先通过拆词程序读取Excel格式的词汇表,然后将读取的每个词进行拆分处理,分别将读取出来的第一、第二个字取出,在各自字集表中进行校验是否有重复,如无则自动增加到对应的表中,直到读取最后一个词为止,从而完成了字集一和字集二的建立。详见表3-1。
表3.2为字集关系的另一种表示,它有438行,每行记录对应行标的第一字集中的字,可以关联到的第二字集中的字的字序号。
3.2 建立字集模型库
根据上面的字集表,进而建立HMM的训练模型。将第一个字集的语音样本库进行HMM模型训练,设定模型状态数为2,每个状态高斯密度函数为2个,得到第一个字集的HMM模型HMM1。采用同样的方法对第二个字集的语音样本进行训练,得到第二个字集的HMM模型HMM2。
3.3 二级单字识别
应用实时录音端点检测程序录制测试语音,端点检测后先进行第一个字的识别,应用第一个字集的HMM模型进行匹配,对匹配结果按概率由高到低排序,取得前20个匹配最佳的结果,并记下这20个概率的序列及识别结果字序列,见表3.3。
以第一个字识别结果的字序号作行标,依次从表3.1对应的关系中按顺序取出第2个字的字序号组成一个临时字序号集,并除去该集合中的重复序号,再从字集二的HMM模型中提取与临时字序号相对应的HMM模型,组成用于第二个测试语音字的HMM临时模型,此临时HMM模型便是与第一字识别结果相关联的第二字模型的集合,是字集二HMM模型库的子集。以此临时HMM模型库来对测试语音的第二个字进行识别,并同第一字识别一样,对匹配结果按概率由高到低排序,取得前10个匹配最佳的结果,并记下这10个概率序列及识别结果字序列,然后将识别结果字序列对应到临时字序号集,得到真正的识别字序列,结果见表3.4。
取得测试语音第一字与第二字的联合概率,以第一字识别结果字序列为行,第二字识别结果字序列为列,得到一个联合概率矩阵。将联合概率矩阵与关系矩阵的对应元素相乘便得到存在关系的第一、二字的联合识别概率。最后选出联合识别概率最高的元素行列号对应到第一字识别结果的字序号与第二字识别结果的字序号,并得到识别结果。如表3.3、表3.4作为第一字及第二字的识别结果,其二级单字识别结果为“电压”。
3.4 二级单字识别结果分析
经过上面的分析可知,对于二级单字语音识别方法,第一字集识别的正确率非常重要,如果第一字集识别是错误的,则会影响整个词汇识别错误,由于在识别第二个字集时是要根据第一字集的识别结果进行选取的。以报关系统中的600、900、1200、1500、1800个词汇来进行测试,得出如表3.5所示的词数与字集字数对应关系。
采用5个人(3男2女)进行录音,对每个词进行录音10次,取前5个录音作为模型训练,后5个录音作为测试样本。测试结果如表3.5所示。从表3.6可知,对于第一字识别效率可以达到99.63%,識别时间约1.52秒;对于第二字的识别达到99.13%,识别时间约2.17秒。对于报关系统来说,整体的识别效率和速度基本上能够满足使用的要求。
但是,在实际应用过程中,还须注意以下可能会造成语音识别率降低的问题:
(1)因录音员口音差异,语音样本录音不准,可能会造成同一词3次测试中有1次或2次错误。
(2)因中国语音的同音字比较多,可能会造成在取词的过程中发生错误。
(3)因第一个字识别出现错误,导致整个词识别发生出错。
针对上述错误源,加强语音样本修正,提高系统识别率和速度,系统的可靠性将会大大提高。
4 系统实现的环境和基本结构
以下简介全系统的实现过程(采用DAQ工具对语音信号进行采样,采用Matlab提供COM生成器和Matlab Builder for .Net工具完成整个系统的开发)。
4.1 系统实现的环境
根据报关系统语音识别功能模块要求及报关数据自身特点,主要采用3种前台工具开发系统。
(1)采用Matlab提供的COM生成器,将算法自动转化为COM组件对象,方便程序调用。
(2)采用Matlab Builder for .Net工具,把应用程序发布为.Net组件,从而可以独立运行。
(3)采用DAQ工具对所有录入语音信号进行采集。
后台数据库采用微软公司开发的SQL Server 2005对各类数据进行存储。该数据库具有较高的可靠性和数据的移植性,是目前使用最多最广泛的一种中大型数据库系统。
4.2 系统实现的基本结构
系统最终目的就是要实现一个可行的企业报关语音识别系统[5~8]。首先要把报关原始词汇要进行二级或三级的拆字处理,并建立字表及字表关系,接下来就进入语音录音程序,包括特征参数提取,建立语音样本库,然后采用HMM的语音训练程序对样本库进行训练,生成HMM的模型库。最后就是进行语音识别过程,将未知语音与HMM模型库进行匹配,找出自己需要的结果进行输出。其中拆词程序是将原始语音词汇拆分为字并建立字表及字关系表,录音程序用于制作各种语音的样本,生成样本库(samples.mat),训练程序读取样本库,训练生成HMM模型库(hmm.mat);识别程序运用HMM模型库对输入测试语音进行识别。HMM模型识别流程图如图4.1所示。
图4.1 HMM模型语音识别程序流程图
4.3 语音信号的采样
语音信号采样的主要目的就是将无线麦克风或吸音器等设备所吸取的声音模拟信号,转换成计算机能够识别和处理的数字语音信号,即需要经过A/D转换。采样过程中,为不造成有用信号的丢失,选择的采样频率必须要大于信号频率的两倍以上。 在设置Anloginput对象时,把触发采样条件设置为“Rising”,触发值设置为0.02,采集样本时长设置为2秒。其数字语音信号的时序图如图4.2所示。
图4.2实时语音采样时序图
4.4 语音信号的预处理
所谓预处理,即经过采样得出的每一个语音信号,还必须对其进行噪声过滤、反混叠失真处理和端点检测处理,突显有效的语音信息。 本文采用了短时能量和短时过零率对语音信号进行了端点检测,通过MATLAB程序实现了整个过程[9]。图4.3是端点检测流程图。
图4.3 端点检测流程图
4.5 语音信号的特征参数提取
语音信号特征参数提取主要采用了MFCC(美尔频率倒谱系数)来实现。采用MFCC进行特征参数提取,可提高识别系统的识别效率和抗噪声能力。MFCC在提取过程中,首先将语音信号的高频部分进行预加重和汉明窗处理,再把它转换为美尔频率,从而去除掉高频噪声,突出低频有效信号。最后经过三角滤波器组和FFT等各种变换,最终取得有效的语音信号特征参数[10]。如图4.4所示。
图4.4美尔特征参数提取计算过程
4.6 HMM语音样本库的建立
由于采用基于HMM的二级单字语音识别的系统,需要对双字以上的词汇进行拆词操作,即要在数据库中建立两个基本表,一個用来存储提取的第一个字,另一个用来存储提取的第二个字。拆词步骤完成后,即为建立语音样本库。具体的操作过程以下:首先通过程序读取拆词所建立的两个字表文件,并将读取结果显示在操作界面上,供用户选择所需录制语音样本的字,等待用户录入语音;其次是将录入的语音经过端点检测后把它的波形显示在程序界面上,并进行回放操作,用户确认无误后再将其存入对应字表的语音库的相应位置。样本库建立模块独立于其它模块,字表及语音录入作为其输入,输出语音样本库写入文件作为模型训练模块的输入。
4.7 HMM语音训练
上述语音样本库建成后,接下来就要建立HMM语音模型库。依据上述两个语音样本库,分别经过训练程序进行训练,产生出两个HMM模型库,从而完成模型库的建立。训练程序选用2个状态的HMM初始模型,读取语音库文件,然后依次调入每个字的语音样本进行训练,生成对应的字的HMM模型,存入模型库,并保持此字所在模型库与语音库及字表的位置序号相同。作为独立于其它模块的程序,训练程序的输入为第一字语音库文件及第二字语音库文件,输出为第一字HMM模型库文件及第二字HMM模型库文件。
HMM的训练的最终目的是得到一个最优的模型 ,使概率 的值取得最大。该过程是根据录入语音的观察值序列 和初始模型参数 ,并采用一定的迭代约束规则,通过Baum-Welch算法进行模型训练,经过多次迭代,直到概率 尽可能达到最大值为止。具体的算法流程图如图4.5所示。
4.8 HMM语音识别
经过前述语音训练之后,将训练的词条作为模型参数存储起来,构成一个模型库,为系统的识别提供依据。HMM语音识别的主要目的就是把未知输入的语音信号与系统中的模板数据进行匹配,找出最终的识别结果并输出。HMM语音识别过程主要由三部分组成:首先是要对输入语音采用MFCC方法进行特征参数提取,获取有用的语音信号,取得观测序列 ;其次是概率计算,采用前向——后向算法或是Viterbi算法,计算观测序列 在HMM训练得出的模型库序列的条件下输出每个序列的概率 ;最后是结果输出,即输出取得概率值最大的词条作为结果输出。图4.6即为HMM语音识别过程的示意图。
图4.5 HMM训练流程图
图4.6 HMM语音识别过程示意图
语音识别程序作为报关系统语音识别的核心,并非独立于报关系统运行,而是作为.Net控件被报关系统调用。其输入为字表、字关系表、字模型库和测试语音,输出为报关系统语音识别结果,并受报关系统控制启动与停止及继续下一次识别。语音识别程序通过对输入的语音进行实时录音及端点检测,求得测试语音的MFCC参数并与语音模型库进行匹配,得到一组结果。对第一字的识别结果与第二字的识别结果求联合概率,再结合字关系表选出联合概率最高的字来组合作为报关系统语音识别的结果。语音识别中第二字的模型库是依据第一字识别结果及字关系表建立的临时模型库。
4.9 系统界面设计
根据报关系统的功能要求,系统的主要界面包括语音录音模块、声音回放模块、特征参数提取模块、语音训练和识别等模块组成。下面主要简介录音模块、声音回放模块和系统的主界面。系统录音模块通过无线麦克风进行录音,采用录音频率11500Hz,采样时长3秒钟,并将录音的结果波形描绘并显示在系统界面上,方便后续的模块使用。声音回放功能模块主要是对录音质量进行重新回放,把握录制效果,如效果较差,可放弃并重录;如感觉效果尚可,则可存入语音样本库。语音录音和回放模块的界面如图4.7所示。
图4.7 语音录音界面
根据以上语音识别各模块的实现过程,最终完成一个基于HMM的二级单字语音识别系统,并进一步将语音识别模块嵌入到报关系统中。图4.8即为具有语音功能的报关系统。
图.8具有语音识别功能的报关系统
5 结束语
本文根据语音识别系统的研究方法,结合企业报关语音识别的要求,介绍了HMM算法并对该算法进行了改进。结合语音识别过程,采用基于HMM的二级单字语音识别的方法,完成了一个HMM的语音识别实验,最后简介了语音采样、端点检测、语音特征参数提取(MFCC)、语音识别之字表和关系表建立、语音库建立、模型库建立及语音识别交互的过程,最后完成了整个报关语音识别系统。
经研究表明,本文改进后的HMM算法能较好地解决报关语音识别系统的问题,识别效率和速度都比较理想,符合系统要求。 参考文献:
[1] 李晓霞,王东木,李学耀.语音识别技术评述[J].计算机应用研究,1999,10:1-3(Li xiaoxia, Wang Dongmu ,Li Xueyao. Voice recognition technology are reviewed [J]. Computer application research, 1999, 10:1-3)
[2] 王稚慧. 基于HMM建模的语音识别算法的研究[D]. 西安:西安建筑科技大学,2005.8-12(Wang Zhihui. Speech recognition algorithm based on HMM modeling research [D]. Xi 'an: xi 'an building university of science and technology, 2005.8-12)
[3] 王明奇. 基于HMM的孤立词语音识别系统的研究[D]. 长沙:中南大学,2007.18-27(Wang Mingji. The isolated word speech recognition system based on HMM[D]. Changsha: central south university, 2007.18-27)
[4] 陳立万. 基于语音识别系统中DTW算法改进技术研究[J]. 微计算机信息,2006,22(2-2):267-267(Chen Liwan. Based on DTW (dynamic time warping) algorithm in speech recognition system to improve technology research [J]. Microcomputer information, 2006, 22 (2 - (2) : 267-267)
[5] 杨熙,苏娟,彭勇群. 孤立词语音识别系统的MATLAB实现[J]. 微计算机信息,2007,23(3-1):288-288(Yang Xi Su Juan, Peng Yongqun. The MATLAB implementation of isolated word speech recognition system [J]. Microcomputer information, 2007, 23 (3, 1) : 288-288)
[6] 江官星. 非特定人孤立词语音识别系统的研究[D].成都:西南交通大学,2006.25-47(Jiang Guanxing. Speaker-independent isolated word speech recognition system research [D]. Chengdu: southwest jiaotong university, 2006.25-47)
[7] 刘金伟,黄樟钦,侯义斌. 基于片上系统的孤立词语音识别算法设计[J]. 计算机工程, 2007,33(13):26-26(LiuJinWei Huang Zhangqin, Hou Yibin. Based on the on-chip system of isolated word speech recognition algorithm design[J]. Computer engineering, 2007 (13) : 26-26)
[8] 李建宁. 汉语孤立词语音识别的研究与实现[D]. 西安:西北大学, 2007.23-49(Li Jianning. Research and implementation of Chinese isolated words speech recognition [D]. Xi 'an: northwest university, 2007.23-49)
[9] 张震宇. 基于Matlab的语音端点检测实验研究[J]. 浙江科技学院学报,2007,19(3):198-198(Zhang. Speech endpoint detection based on Matlab experiment research [J]. Journal of zhejiang institute of science and technology, 2007, 12 (3) : 198-198)
[10] 王昆仑.语音识别中信号特征的提取和选择[J].新疆师范大学学报,2000,19(2):15-18(Wang Kunlun. In the speech recognition signal feature extraction and selection [J]. Journal of xinjiang normal university, 2000, 12 (2) : 15-18)
作者简介:
彭勇 海军工程大学[1] 广州市工商行政管理局[2] 男 硕士研究生,研究方向:控制工程
关键词:隐马尔可夫模型 特征参数提取 实时语音识别 二级单字
中图分类号:TP 文献标识码:A 文章编号:1009-914X(2013)32-247-04
1 引言
应用语音识别方法能解除人机交互过程中的空间限制,在较远距离完成对计算机信息的输入。处理大量信息输入时,语音识别更是体现了灵活性、高效性,同时语音识别还能提高工作效率,给人类生活带来更多便利[1]。国内很多大中型企业的报关料件种类、报关单及报关合同数据繁多,数据录入的工作量大、重复性强、出错率高,严重影响工作效率。虽然现有大词汇量连续语音识别技术已取得较好成绩,亦有相关产品问世,但其针对孤立词识别的准确率不高,也缺少对特定应用词库的针对性。目前基于孤立词语音识别的应用系统不常见,具有语音识别功能的报关系统则更少耳闻。研究“基于HMM的实时语音识别方法”正是为了解决此问题。
2 HMM算法的语音识别
隐马尔可夫模型(HMM)自从1970年发展到现在,该算法就得到了广泛的研究,并已成为世界语音信号处理最常用的算法。目前,世界绝大多数的商业化的语音软件系统以及针对某领域开发的性能优越的语音识别系统,都是采用HMM模型进行开发的,它已形成了一套完整的架构。
2.1 HMM算法的定义及类型
隐马尔可夫模型(HMM)是在马尔可夫链的基础上发展起来的。对于马尔可夫模型而言,每一状态都对应一个可观察的物理事件,所以其状态的输出是有规律的。可是这种模型的限制条件过于苛刻,在许多实际问题中无法应用。实际问题往往更复杂,观察到的事件并不与状态一一对应,而是通过一组概率分布相联系。于是人们将这种模型加以推广,提出了HMM。
HMM是一个基于序列数据的随机模型,每个HMM都由一些代表隐状态的节点组成,这些节点之间由反映不同状态之间互相转移的转移概率相联系,每一个隐状态都能根据不同的概率发出一些可见的符号。隐马尔可夫模型是描述离散时间的数据样本序列的一种强有力的统计工具,具有处理非线性时变信号的能力,也就是说,HMM是一个双重随机过程,其中之一是马尔可夫链,这是一个基本随机过程,用它来描述状态的转移。另一个随机过程用来描述状态与观察序列之间的统计对应关系,用观察值概率来描述。这样,站在观察者的角度,只能看到观察值,其状态转换过程是观察不到的,因而称之为“隐”马尔可夫模型[2~3]。HMM一般假设3个条件:1、当前状态只与上一状态相关;2、状态之间的转移概率跟状态所处的具体时间无关;3、观测值只同当前状态有关。这3个假设大大降低了模型的复杂度。一个隐马尔可夫模型由下列参数描述:
(1) 是隐马尔可夫模型中Markov Chain的状态数目。记 个状态为 , ,…, ,记t时刻Markov Chain所处状态为 ,显然 ∈( , ,…, )。
(2)M 指的是每个状态对应的可能的观察值数目。记M个观察值为 ,记t时刻观察到的观察值为 ,其中, ∈( )。
(3) 指的是初始状态概率矢量 ,其中,
(4)A 表示状态转移概率矩阵, ,其中,
(2.1.1)
(5)B 表示观察值概率矩阵, ,其中,
(2.1.2)
这样,一个隐马尔可夫模型可以表示为
或简单表示成: (2.1.3)
形象地说,一个HMM可分为两部分,一个是Markov Chain,由π、A描述,產生的输出为状态序列;另一个是一个随机过程,由B描述,产生的输出为观察值序列。根据以上的分析,HMM算法需要解决以下问题:
(1)采用前向后向算法。对于给定的观察值序列 和模型 ,如何计算由模型 产生出 的概率 。
(2)采用Viterbi算法。已知观察值序列 和模型 ,计算最佳路径 。
(3)采用Baum-Welch算法。对于给定的观察值序列 ,通过调整模型 的参数,使产生的观测序列O的概率 的值最大。
2.2 HMM算法的语音仿真实验
通过以上算法分析,建立一个基于HMM算法的语音仿真实验系统。再利用录音工具,采用3名工作人员一共录制了600个报关词汇的语音样本,每人每词录6个语音样本,取每个人前3个样本做模型训练使用,后3个样本用来做测试使用。经系统测试,得出如表2-1所示结果。
测试结果显示,采用HMM模型语音识别系统效率较高,可达99.1%以上,但平均每词识别时间相对还是较长,约5.8秒左右。
3 HMM的二级单字语音识别
报关词汇存在许多重字,如直接采用上述算法,识别效率还是较低。而采用HMM的二级单字语音识别方法,则能较好地解决重字多的问题[4]。将报关系统中1200个词汇的词识别,改为二级单字识别,即:将1200个词汇中对每个词进行拆词处理,将第一个字提出来建立一个没有重字的字集,同样将该词的第二个字提出建立一个没有重字的第二个字集,同时要保留这两个字集之间的字词之间关系。经过拆分得到第一个字集438字,第2个字集441字。这样原来完成一次词识别需匹配1200次模型,且每个模型状态数为4,而二级单字识别匹配模型的次数只略大于438,且每个模型的状态数为2,因此可大大提升识别效率。 3.1 词汇拆分程序
通过开发一个拆词程序,将1200个报关词汇保存为Excel格式的电子文档,并将拆好的字集和字建立一一对应的关系。首先通过拆词程序读取Excel格式的词汇表,然后将读取的每个词进行拆分处理,分别将读取出来的第一、第二个字取出,在各自字集表中进行校验是否有重复,如无则自动增加到对应的表中,直到读取最后一个词为止,从而完成了字集一和字集二的建立。详见表3-1。
表3.2为字集关系的另一种表示,它有438行,每行记录对应行标的第一字集中的字,可以关联到的第二字集中的字的字序号。
3.2 建立字集模型库
根据上面的字集表,进而建立HMM的训练模型。将第一个字集的语音样本库进行HMM模型训练,设定模型状态数为2,每个状态高斯密度函数为2个,得到第一个字集的HMM模型HMM1。采用同样的方法对第二个字集的语音样本进行训练,得到第二个字集的HMM模型HMM2。
3.3 二级单字识别
应用实时录音端点检测程序录制测试语音,端点检测后先进行第一个字的识别,应用第一个字集的HMM模型进行匹配,对匹配结果按概率由高到低排序,取得前20个匹配最佳的结果,并记下这20个概率的序列及识别结果字序列,见表3.3。
以第一个字识别结果的字序号作行标,依次从表3.1对应的关系中按顺序取出第2个字的字序号组成一个临时字序号集,并除去该集合中的重复序号,再从字集二的HMM模型中提取与临时字序号相对应的HMM模型,组成用于第二个测试语音字的HMM临时模型,此临时HMM模型便是与第一字识别结果相关联的第二字模型的集合,是字集二HMM模型库的子集。以此临时HMM模型库来对测试语音的第二个字进行识别,并同第一字识别一样,对匹配结果按概率由高到低排序,取得前10个匹配最佳的结果,并记下这10个概率序列及识别结果字序列,然后将识别结果字序列对应到临时字序号集,得到真正的识别字序列,结果见表3.4。
取得测试语音第一字与第二字的联合概率,以第一字识别结果字序列为行,第二字识别结果字序列为列,得到一个联合概率矩阵。将联合概率矩阵与关系矩阵的对应元素相乘便得到存在关系的第一、二字的联合识别概率。最后选出联合识别概率最高的元素行列号对应到第一字识别结果的字序号与第二字识别结果的字序号,并得到识别结果。如表3.3、表3.4作为第一字及第二字的识别结果,其二级单字识别结果为“电压”。
3.4 二级单字识别结果分析
经过上面的分析可知,对于二级单字语音识别方法,第一字集识别的正确率非常重要,如果第一字集识别是错误的,则会影响整个词汇识别错误,由于在识别第二个字集时是要根据第一字集的识别结果进行选取的。以报关系统中的600、900、1200、1500、1800个词汇来进行测试,得出如表3.5所示的词数与字集字数对应关系。
采用5个人(3男2女)进行录音,对每个词进行录音10次,取前5个录音作为模型训练,后5个录音作为测试样本。测试结果如表3.5所示。从表3.6可知,对于第一字识别效率可以达到99.63%,識别时间约1.52秒;对于第二字的识别达到99.13%,识别时间约2.17秒。对于报关系统来说,整体的识别效率和速度基本上能够满足使用的要求。
但是,在实际应用过程中,还须注意以下可能会造成语音识别率降低的问题:
(1)因录音员口音差异,语音样本录音不准,可能会造成同一词3次测试中有1次或2次错误。
(2)因中国语音的同音字比较多,可能会造成在取词的过程中发生错误。
(3)因第一个字识别出现错误,导致整个词识别发生出错。
针对上述错误源,加强语音样本修正,提高系统识别率和速度,系统的可靠性将会大大提高。
4 系统实现的环境和基本结构
以下简介全系统的实现过程(采用DAQ工具对语音信号进行采样,采用Matlab提供COM生成器和Matlab Builder for .Net工具完成整个系统的开发)。
4.1 系统实现的环境
根据报关系统语音识别功能模块要求及报关数据自身特点,主要采用3种前台工具开发系统。
(1)采用Matlab提供的COM生成器,将算法自动转化为COM组件对象,方便程序调用。
(2)采用Matlab Builder for .Net工具,把应用程序发布为.Net组件,从而可以独立运行。
(3)采用DAQ工具对所有录入语音信号进行采集。
后台数据库采用微软公司开发的SQL Server 2005对各类数据进行存储。该数据库具有较高的可靠性和数据的移植性,是目前使用最多最广泛的一种中大型数据库系统。
4.2 系统实现的基本结构
系统最终目的就是要实现一个可行的企业报关语音识别系统[5~8]。首先要把报关原始词汇要进行二级或三级的拆字处理,并建立字表及字表关系,接下来就进入语音录音程序,包括特征参数提取,建立语音样本库,然后采用HMM的语音训练程序对样本库进行训练,生成HMM的模型库。最后就是进行语音识别过程,将未知语音与HMM模型库进行匹配,找出自己需要的结果进行输出。其中拆词程序是将原始语音词汇拆分为字并建立字表及字关系表,录音程序用于制作各种语音的样本,生成样本库(samples.mat),训练程序读取样本库,训练生成HMM模型库(hmm.mat);识别程序运用HMM模型库对输入测试语音进行识别。HMM模型识别流程图如图4.1所示。
图4.1 HMM模型语音识别程序流程图
4.3 语音信号的采样
语音信号采样的主要目的就是将无线麦克风或吸音器等设备所吸取的声音模拟信号,转换成计算机能够识别和处理的数字语音信号,即需要经过A/D转换。采样过程中,为不造成有用信号的丢失,选择的采样频率必须要大于信号频率的两倍以上。 在设置Anloginput对象时,把触发采样条件设置为“Rising”,触发值设置为0.02,采集样本时长设置为2秒。其数字语音信号的时序图如图4.2所示。
图4.2实时语音采样时序图
4.4 语音信号的预处理
所谓预处理,即经过采样得出的每一个语音信号,还必须对其进行噪声过滤、反混叠失真处理和端点检测处理,突显有效的语音信息。 本文采用了短时能量和短时过零率对语音信号进行了端点检测,通过MATLAB程序实现了整个过程[9]。图4.3是端点检测流程图。
图4.3 端点检测流程图
4.5 语音信号的特征参数提取
语音信号特征参数提取主要采用了MFCC(美尔频率倒谱系数)来实现。采用MFCC进行特征参数提取,可提高识别系统的识别效率和抗噪声能力。MFCC在提取过程中,首先将语音信号的高频部分进行预加重和汉明窗处理,再把它转换为美尔频率,从而去除掉高频噪声,突出低频有效信号。最后经过三角滤波器组和FFT等各种变换,最终取得有效的语音信号特征参数[10]。如图4.4所示。
图4.4美尔特征参数提取计算过程
4.6 HMM语音样本库的建立
由于采用基于HMM的二级单字语音识别的系统,需要对双字以上的词汇进行拆词操作,即要在数据库中建立两个基本表,一個用来存储提取的第一个字,另一个用来存储提取的第二个字。拆词步骤完成后,即为建立语音样本库。具体的操作过程以下:首先通过程序读取拆词所建立的两个字表文件,并将读取结果显示在操作界面上,供用户选择所需录制语音样本的字,等待用户录入语音;其次是将录入的语音经过端点检测后把它的波形显示在程序界面上,并进行回放操作,用户确认无误后再将其存入对应字表的语音库的相应位置。样本库建立模块独立于其它模块,字表及语音录入作为其输入,输出语音样本库写入文件作为模型训练模块的输入。
4.7 HMM语音训练
上述语音样本库建成后,接下来就要建立HMM语音模型库。依据上述两个语音样本库,分别经过训练程序进行训练,产生出两个HMM模型库,从而完成模型库的建立。训练程序选用2个状态的HMM初始模型,读取语音库文件,然后依次调入每个字的语音样本进行训练,生成对应的字的HMM模型,存入模型库,并保持此字所在模型库与语音库及字表的位置序号相同。作为独立于其它模块的程序,训练程序的输入为第一字语音库文件及第二字语音库文件,输出为第一字HMM模型库文件及第二字HMM模型库文件。
HMM的训练的最终目的是得到一个最优的模型 ,使概率 的值取得最大。该过程是根据录入语音的观察值序列 和初始模型参数 ,并采用一定的迭代约束规则,通过Baum-Welch算法进行模型训练,经过多次迭代,直到概率 尽可能达到最大值为止。具体的算法流程图如图4.5所示。
4.8 HMM语音识别
经过前述语音训练之后,将训练的词条作为模型参数存储起来,构成一个模型库,为系统的识别提供依据。HMM语音识别的主要目的就是把未知输入的语音信号与系统中的模板数据进行匹配,找出最终的识别结果并输出。HMM语音识别过程主要由三部分组成:首先是要对输入语音采用MFCC方法进行特征参数提取,获取有用的语音信号,取得观测序列 ;其次是概率计算,采用前向——后向算法或是Viterbi算法,计算观测序列 在HMM训练得出的模型库序列的条件下输出每个序列的概率 ;最后是结果输出,即输出取得概率值最大的词条作为结果输出。图4.6即为HMM语音识别过程的示意图。
图4.5 HMM训练流程图
图4.6 HMM语音识别过程示意图
语音识别程序作为报关系统语音识别的核心,并非独立于报关系统运行,而是作为.Net控件被报关系统调用。其输入为字表、字关系表、字模型库和测试语音,输出为报关系统语音识别结果,并受报关系统控制启动与停止及继续下一次识别。语音识别程序通过对输入的语音进行实时录音及端点检测,求得测试语音的MFCC参数并与语音模型库进行匹配,得到一组结果。对第一字的识别结果与第二字的识别结果求联合概率,再结合字关系表选出联合概率最高的字来组合作为报关系统语音识别的结果。语音识别中第二字的模型库是依据第一字识别结果及字关系表建立的临时模型库。
4.9 系统界面设计
根据报关系统的功能要求,系统的主要界面包括语音录音模块、声音回放模块、特征参数提取模块、语音训练和识别等模块组成。下面主要简介录音模块、声音回放模块和系统的主界面。系统录音模块通过无线麦克风进行录音,采用录音频率11500Hz,采样时长3秒钟,并将录音的结果波形描绘并显示在系统界面上,方便后续的模块使用。声音回放功能模块主要是对录音质量进行重新回放,把握录制效果,如效果较差,可放弃并重录;如感觉效果尚可,则可存入语音样本库。语音录音和回放模块的界面如图4.7所示。
图4.7 语音录音界面
根据以上语音识别各模块的实现过程,最终完成一个基于HMM的二级单字语音识别系统,并进一步将语音识别模块嵌入到报关系统中。图4.8即为具有语音功能的报关系统。
图.8具有语音识别功能的报关系统
5 结束语
本文根据语音识别系统的研究方法,结合企业报关语音识别的要求,介绍了HMM算法并对该算法进行了改进。结合语音识别过程,采用基于HMM的二级单字语音识别的方法,完成了一个HMM的语音识别实验,最后简介了语音采样、端点检测、语音特征参数提取(MFCC)、语音识别之字表和关系表建立、语音库建立、模型库建立及语音识别交互的过程,最后完成了整个报关语音识别系统。
经研究表明,本文改进后的HMM算法能较好地解决报关语音识别系统的问题,识别效率和速度都比较理想,符合系统要求。 参考文献:
[1] 李晓霞,王东木,李学耀.语音识别技术评述[J].计算机应用研究,1999,10:1-3(Li xiaoxia, Wang Dongmu ,Li Xueyao. Voice recognition technology are reviewed [J]. Computer application research, 1999, 10:1-3)
[2] 王稚慧. 基于HMM建模的语音识别算法的研究[D]. 西安:西安建筑科技大学,2005.8-12(Wang Zhihui. Speech recognition algorithm based on HMM modeling research [D]. Xi 'an: xi 'an building university of science and technology, 2005.8-12)
[3] 王明奇. 基于HMM的孤立词语音识别系统的研究[D]. 长沙:中南大学,2007.18-27(Wang Mingji. The isolated word speech recognition system based on HMM[D]. Changsha: central south university, 2007.18-27)
[4] 陳立万. 基于语音识别系统中DTW算法改进技术研究[J]. 微计算机信息,2006,22(2-2):267-267(Chen Liwan. Based on DTW (dynamic time warping) algorithm in speech recognition system to improve technology research [J]. Microcomputer information, 2006, 22 (2 - (2) : 267-267)
[5] 杨熙,苏娟,彭勇群. 孤立词语音识别系统的MATLAB实现[J]. 微计算机信息,2007,23(3-1):288-288(Yang Xi Su Juan, Peng Yongqun. The MATLAB implementation of isolated word speech recognition system [J]. Microcomputer information, 2007, 23 (3, 1) : 288-288)
[6] 江官星. 非特定人孤立词语音识别系统的研究[D].成都:西南交通大学,2006.25-47(Jiang Guanxing. Speaker-independent isolated word speech recognition system research [D]. Chengdu: southwest jiaotong university, 2006.25-47)
[7] 刘金伟,黄樟钦,侯义斌. 基于片上系统的孤立词语音识别算法设计[J]. 计算机工程, 2007,33(13):26-26(LiuJinWei Huang Zhangqin, Hou Yibin. Based on the on-chip system of isolated word speech recognition algorithm design[J]. Computer engineering, 2007 (13) : 26-26)
[8] 李建宁. 汉语孤立词语音识别的研究与实现[D]. 西安:西北大学, 2007.23-49(Li Jianning. Research and implementation of Chinese isolated words speech recognition [D]. Xi 'an: northwest university, 2007.23-49)
[9] 张震宇. 基于Matlab的语音端点检测实验研究[J]. 浙江科技学院学报,2007,19(3):198-198(Zhang. Speech endpoint detection based on Matlab experiment research [J]. Journal of zhejiang institute of science and technology, 2007, 12 (3) : 198-198)
[10] 王昆仑.语音识别中信号特征的提取和选择[J].新疆师范大学学报,2000,19(2):15-18(Wang Kunlun. In the speech recognition signal feature extraction and selection [J]. Journal of xinjiang normal university, 2000, 12 (2) : 15-18)
作者简介:
彭勇 海军工程大学[1] 广州市工商行政管理局[2] 男 硕士研究生,研究方向:控制工程