掌上计算机语音识别核心软件包的制作方法

文档序号:6416727阅读:193来源:国知局
专利名称:掌上计算机语音识别核心软件包的制作方法
技术领域
本发明是在掌上计算机环境下特定人孤立词语音识别核心软件包的完整解决方法,它包括整体框架的设计,接口的分类,以及实现算法。语音识别问题是一个典型的模式识别问题。
语音识别近几年得到了迅速的发展,在建模、训练、搜索、鲁棒性、自适应等问题研究中都取得很大进展,积累了很多实践经验和理论方法。主流算法中采用的建模方法是基于统计规律的连续密度隐马尔可夫模型,处理大批量的数据,训练和识别过程都需要经过大量、复杂的运算,消耗特别多的存储和计算资源。和个人计算机相比,掌上型计算机运算速度慢,仅相当于386水平,而且内存比较少,一般仅为8M,内置的录音设备信噪比很低,考虑到实际应用的需要,训练样本也不能太多,在这样的环境下开发实用化的语音识别软件包有一定的难度。
本发明的目的在于在资源受限的情况下,针对于掌上计算机专人专用的特点,提供掌上计算机特定人孤立词语音识别核心软件包的完整解决方法,使掌上计算机应用程序中可以很方便的增加语音识别功能。
本发明的技术要点如图1所示它包括底层、过渡层和接口层。底层部分对从录音设备中产生的语音信号预处理,端点检测,提取特征,训练模型,识别/拒识判决。接口层提供应用程序需要的接口函数实现,过渡层连接底层的核心实现到接口层。
本发明采用面向对象的设计方法,全部API都封装在一个接口类中,应用程序只需创建一个该接口的实例,利用接口指针,就可以调用任何接口函数。为了增加应用程序的灵活性,本发明预定义了一个通知类IVCmdNotifySink,该类所有的函数都为虚函数,应用程序必须实现一个从通知类继承下来的类,用来告知识别核心部分检测到语音事件(比如语音开始、结束,以及识别出一个命令等)时该执行什么操作,其定义如下c1assIVCmdNotifySink{publicvirtual void UtteranceBegin(void)=0;/*检测到声音开始*/virtual void UtteranceEnd(void)=0;/*声音结束*/virtual void VUMeter(int Volume)=0;/*音量大小(从0到100)*/virtual void CmdStart(void)=0;/*开始识别语音*/virtual void CmdNotUnderstand(void)=0;/*未听懂,拒识*/virtual void CmdRecognize(SRecogResult result)=0;/*识别结果*/};从图1可以看出应用程序和软件包识别核心之间的关系。
本发明使用了“菜单”的概念,它实际上就是一个命令集合。命令可以随时添加、训练。图2所示为训练命令的界面,每个命令用三个样本,为确保识别结果正确,本发明为录制的训练样本提供回放功能。根据功能,本发明提供的API可以分为以下五类1.启动/结束识别这类接口用于注册通知类和结束整个识别核心,包括两个函数,一个是整个软件包启动时应该调用的注册函数Register,它完成一些初始化操作;另一个是End,它是整个应用程序结束之前被调用,该接口释放内存,并保存有关的模型及参数等设置;2.训练/识别控制识别开始和暂停,以及训练过程;3.模型管理包括增加、删除一个模型,查询某个模型是否存在,按序号检索模型等;4.菜单管理包括创建一个语音菜单,确定当前使用哪一套菜单,同时为当前菜单添加/删除一个命令项目,查询和设置命令项目的当前状态等;5.识别参数配置对于不同的应用环境,比如背景噪声、说话语速等,如果识别算法作相应的调整,将可以达到更高的准确率,声导核心提供了这种灵活性,为不同的应用需求提供了方便,包括是否启用拒识、配置端点检测算法等。参数设置很直观,应用程序开发人员不用知道很多语音识别专业知识。
如图1所示本发明底层核心处理包括录音,预处理,端点检测,特征提取,训练算法,识别/拒识判决等。以下分别讲述1.录音利用掌上机内置的录音设备,语音信号采样率为8K/s,每样本16bit。
2.预处理每帧392个样本,相邻帧重叠半帧。预加重公式为x1[n]=x[n]-0.97*x[n-1]。
3.端点检测基于时域能量,每帧能量是预处理后样本的平方和。实现流程如图3所示,包括以下五个步骤估计背景噪音并计算上下限、标记开始、确信开始、标记末端点和确信结束。
4.特征提取特征参数采用LPC倒谱。预加重后的样本先经过海明窗,然后计算自相关系数,再由标准的Levinson-Durbin迭代算法得出12阶LPC参数,然后迭代出12阶LPC倒谱参数,最后作一阶,二阶差分。特征参数包括规一化的时域能量及其一阶差分、二阶差分,和12阶LPC倒谱参数及其一阶差分、二阶差分共39维参数。特征参数放大一定倍数后用16位整数表示,这样后面的训练和识别能定点实现。LPC倒谱的具体计算公式如下1)海明窗函数 2)自相关系数设经预处理,加窗后的语音信号为s1[n],则自相关系数为 规一化的自相关系数为r[l]=R[l]/R[0]′]]>其中l=0,1,2,…,P3)Levinson-Durbin迭代计算12阶LPC参数E0=r
]]>ki=r[i]-∑αj(i-1)·[i-j]Ei-1,1≤j≤P]]>αj(i)=ki]]>αj(i)=αj(i-1)-ki·αi-j(i-1),1≤j≤i-1]]>Ei=(1-ki2)Ei-1]]>其中P为预测的阶12,最后的a(P)j,1≤j≤P为预测的LPC系数4)倒谱参数h1=a1]]>hn=an+Σk=1n-1(1-kn)anhn-k,1<n≤P]]>其中hi为倒谱系数,an为LPC系数。
5.训练对每个命令录制3个训练样本,建立如图4所示的8个状态,从左到右连续密度隐马尔可夫模型。利用均匀分割结果初始化模型,在现有的模型参数基础上对训练样本用Viterbi算法分割,然后再重新估计模型参数,如此迭代多遍,比如5遍,得到最终模型参数。
6.识别/拒识判决过程采用用标准的Viterbi搜索算法计算未知样本对每个模型的似然比对数得分,然后对得分最好的模型提取3个指标参数,送到如图5所示的神经网络中进行识别/拒识判决,具体过程如下,其中N为应用程序中总的模型个数(1)对未知模式X用标准的Viterbi搜索算法计算N个模型的似然Log得分,并按照帧长进行规一化;(2)对N个得分按照从高到低排序,不妨设得分分别为S1-SN;(3)对第一名计算其三个指标x1,x2,x3x1=S1/mean1,]]>x2=S2/S1]]>x3=(S1-1Mk≠1,Sk≥αSΣ1)/S1]]>其中mean1为模型1训练时样本帧长规一化后的平均得分,α是常数,取值为0.5到0.9之间。指标3是模型1的可信度,大括号中的求和是那些和模型1得分相近的模型得分平均值,相近程度由常数α决定;(4)根据三个指标进行识别/拒识判决y0=x1*W01+x2*W02+x3*W03y1=x1*W11+x2*W12+x3*W13其中W系数是已经训练好的网络权系数。
在y0>y1的情况下,识别为模型1,并提供得分排在前面的多个候选结果。在y0≤y1的情况下,拒识。
7.网络权系数学习算法初始网络权系数随机选取,按照有教师的学习算法调整权系数ΔWi=a(t)[xi(t)-Wi(t)],其中xI(t)为t时刻的输入样本,调整系数a(t)=0.1*(1.0-t/M),M为训练次数。
本发明的优点在于1.最大词汇量可达到200个,占用系统资源少,对一般人名的识别准确率超过95%,同时和口音、方言以及语种无关。定点实现大幅度提高了特征提取和识别速度,在掌上机平台上可以实时处理,达到实用化程度;2.软件包框架设计合理,接口函数完善,可以满足一般类似于语音导航,名片管理,声音拨号等掌上机应用程序要求。同时接口函数界面友好,开发人员不需要了解很多的语音识别专业知识;3.背景噪音动态估计,检测的起始和结束点都有个确认的过程,所以端点检测算法可以适应变化的环境,有很高的精度和鲁棒性;4.用神经网络进行识别/拒识判决时,不用凭经验决定那个因素占的比重大,网络自动调整,综合加权;避免了简单的门限策略;0/1判决指标都是百分比,各个指标在同一个层次上较量,缩小了动态范围,具有一定的普遍意义;指标定义合理,把发音相近的单词考虑进去了,尽可能的利用有用的信息。


图1为软件包整体框架及应用程序与核心软件包之间的相互关系。
图2为训练命令界面。
图3为端点检测算法流程。
图4为每个命令的隐马尔可夫模型拓扑结构。
图5为识别/拒识判决神经网络拓扑结构。
图6为在软件包基础上开发的识别人名,地名的掌上机应用程序界面。
实施例使用本发明为掌上机应用程序添加语音识别功能非常简单,只需要一个动态库VcmdPpcApi.dll和头文件SpeechApi.h。
本发明采用面向对象的设计方法,所有的接口都集中在动态库VcmdPpcApi.dll中,要使用该动态库,首先需要将其注册到系统中。
应用程序在调用接口函数或使用SpeechApi.h头文件中预定义的结构和常数的源文件中应包含此头文件。
使用本发明开发实际应用程序时一般按照以下几个步骤1.实现一个通知类ⅣCmdNotifySink继承下来的类,并定义一个该类的实例,以便创建好接口实例时调用Register注册接口函数将其地址传过去,初始化整个声导核心。
2.创建接口实例,以得到接口指针。
3.调用Register接口函数注册通知类,识别核心开始启动。
4.按照需要调用不同的API。一般先是创建菜单,确定当前菜单,并添加不同的命令项目,然后可以训练或者识别。
5.在整个程序结束之前,调用接口End保存软件包的有关参数和设置。
图6是一个应用本发明编写的掌上机识别地名和人名的应用程序,它几乎涉及到所有的接口函数。用户可以随意添加、删除、训练和识别菜单命令。识别结果提供多达5个候选,按照模型得分从高到低显示。图2所示为训练命令对话框。所有命令显示在一个列表框中,双击可以训练该命令。
权利要求
1.一种由底层、过渡层、API接口层组成的掌上计算机语音识别核心软件包,其特征在于底层是由计算机内置的录音设备与预处理模块相联,再与端点检测相联,然后联到特征提取模块后分别再联识别/拒识或训练模块,其结果经通过类实现与应用程序界面相联;应用程序界面调用API接口层提供的以下五类接口启动/结束识别、训练/识别、模型管理、菜单管理和识别参数配置;由识别内核组成的过渡层联接底层实现与API接口层。
2.根据权利要求1所述的掌上计算机语音识别核心软件包,其特征在于端点检测算法采用时域能量,检测过程包括以下五个步骤估计背景噪音并计算上下限、标记开始、确信开始、标记末端点和确信结束。
3.根据权利要求1所述的掌上计算机语音识别核心软件包,其特征在于特征参数采用规一化的时域能量及其一阶差分、二阶差分,和12阶LPC倒谱参数及其一阶差分、二阶差分共39维参数。
4.根据权利要求1所述的掌上计算机语音识别核心软件包,其特征在于训练模块对孤立词训练出从左到右连续密度隐马尔可夫模型;利用均匀分割结果初始化模型,多次在现有的模型参数基础上对训练样本用Viterbi算法分割,然后再重新估计模型参数。
5.根据权利要求1所述的掌上计算机语音识别核心软件包,其特征在于识别时用Viterbi搜索算法对待识样本计算每个模型的似然比对数得分,并对得分第一的模型进行识别/拒识判决;在识别情况下,软件包还提供多候选。
6.根据权利要求5所述的掌上计算机语音识别核心软件包,其特征在于识别/拒识判决时对得分第一的模型计算几个指标参数,再经神经网络综合评估;在识别情况下,未知样本识别成得分最高的模型;在拒识情况下,未知样本被认为是集合外的模型。
7.根据权利要求6所述的掌上计算机语音识别核心软件包,其特征在于神经网络采用Kohonen自组织网络,初始网络权系数随机选取,按照有教师的学习算法调整权系数。
全文摘要
掌上计算机语音识别核心软件包是在掌上计算机环境下运行的特定人、限定词汇量孤立词语音识别应用程序接口。语音识别技术属于模式识别领域。本发明对孤立词建立特定人连续密度隐马尔可失模型。软件包接口包括启动和结束识别、训练/识别、模型管理、菜单管理和识别参数配置,采用基于时域能量的端点检测算法,提取LPC倒谱特征参数,采用Viterbi搜索算法识别,并由神经网络进行识别/拒识判决。
文档编号G06F17/00GK1282069SQ9911113
公开日2001年1月31日 申请日期1999年7月27日 优先权日1999年7月27日
发明者邓勇刚, 徐波, 黄泰翼 申请人:中国科学院自动化研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1