内容发布更新时间 : 2024/12/27 5:05:55星期一 下面是文章的全部内容请认真阅读。
龙源期刊网 http://www.qikan.com.cn
基于HMM的实时语音识别方法研究
作者:彭勇
来源:《中国科技博览》2013年第32期
摘要:随着计算机技术和通信技术的快速发展,语音识别技术在国民经济中的各个领域得到了广泛的应用,并有相关产品的问世。但为了提高工作效率和节省企业的成本,有许多特定应用要与语音识别进行融合。针对企业报关系统的特点,采用了一种基于HMM模型的二级单字识别方法,解决了系统识别效率与识别稳定性的问题,使得该语音识别方法最终满足了报关系统的应用要求,并扼要介绍了词汇库维护、新人语音训练及建立语音新模型的过程。 关键词:隐马尔可夫模型 特征参数提取 实时语音识别 二级单字
中图分类号:TP 文献标识码:A 文章编号:1009-914X(2013)32-247-04 1 引言
应用语音识别方法能解除人机交互过程中的空间限制,在较远距离完成对计算机信息的输入。处理大量信息输入时,语音识别更是体现了灵活性、高效性,同时语音识别还能提高工作效率,给人类生活带来更多便利[1]。国内很多大中型企业的报关料件种类、报关单及报关合同数据繁多,数据录入的工作量大、重复性强、出错率高,严重影响工作效率。虽然现有大词汇量连续语音识别技术已取得较好成绩,亦有相关产品问世,但其针对孤立词识别的准确率不高,也缺少对特定应用词库的针对性。目前基于孤立词语音识别的应用系统不常见,具有语音识别功能的报关系统则更少耳闻。研究“基于HMM的实时语音识别方法”正是为了解决此问题。
2 HMM算法的语音识别
隐马尔可夫模型(HMM)自从1970年发展到现在,该算法就得到了广泛的研究,并已成为世界语音信号处理最常用的算法。目前,世界绝大多数的商业化的语音软件系统以及针对某领域开发的性能优越的语音识别系统,都是采用HMM模型进行开发的,它已形成了一套完整的架构。
2.1 HMM算法的定义及类型
隐马尔可夫模型(HMM)是在马尔可夫链的基础上发展起来的。对于马尔可夫模型而言,每一状态都对应一个可观察的物理事件,所以其状态的输出是有规律的。可是这种模型的限制条件过于苛刻,在许多实际问题中无法应用。实际问题往往更复杂,观察到的事件并不与状态一一对应,而是通过一组概率分布相联系。于是人们将这种模型加以推广,提出了HMM。
龙源期刊网 http://www.qikan.com.cn
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算法。已知观察值序列 和模型 ,计算最佳路径 。
龙源期刊网 http://www.qikan.com.cn
(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。