基于VQ的语音遥控系统设计

所属栏目:自动化论文 发布日期:2010-08-31 14:38 热度:

  摘要:矢量量化(VQ)是语音识别中广泛采用的数据压缩和编码方法。在实现孤立词识别系统时VQ算法能简单、快速、有效地实现语音命令的实时识别。本文讨论了VQ(vectorquantization)算法与语音遥控系统设计,实验结果表明基于VQ的语音识别获得了较好的识别结果。
  关键词:语音识别,矢量量化,LPC,数字信号处理
  中图分类号:C91
  1.引言
  家用电器领域发展的一个重要趋势是人机交互将更加友好,使用更为简便。提高家电产品人机交互能力的一个重要手段是采用语音识别和语音合成实现语音交互,其中,语音识别技术实现技术难度相对更大。
  语音识别(SpeechRecognition,SR)主要指让机器听懂人说的话,即准确识别出语音的内容,从而根据其信息,执行人的意图。它输入多维模式识别和智能接口的范畴。[7]目前,语音识别广泛应用于军事领域、安全领域、娱乐领域等。
  语音识别领域发展很迅速,目前语音识别方法有:基于VQ的方法;随机模型法,比如HMM方法;基于人工神经网络的方法等,其中基于VQ的方法利用离散数值表示矢量,能够大大压缩信息量,减少数据存储量;同时无需考虑复杂的统计模型和复杂的时间归整问题,运算相对简单,因此得到了广泛应用。尤其在识别小词汇表孤立词时VQ算法优点更为突出。
  家电领域是小词汇表孤立词识别系统,适合家用电器应用的语音识别算法需要满足两个基本条件:一、简单,就是该算法所需要的硬件资源较少,以节约硬件成本。二、快速,就是能够做到实时识别,没有迟滞性。VQ算法恰好能够满足这两个要求。
  本文将以语音遥控系统设计为例探讨基于VQ算法的语音识别算法。文章的第一部分是引言,简单介绍背景,第二部分介绍VQ算法的背景知识;第三部分介绍基于VQ算法的语音识别系统的设计,包括硬件设计和软件设计;第四部分是实验部分。
  
  2.VQ语音识别算法
  2.1矢量量化(VQ)算法原理
   基于VQ的语音识别采用模式匹配原理。矢量量化是一种高效的数据压缩技术,它将n维欧氏空间Rn中的模拟矢量X依据某种准则用n维空间中的有限个点{Yi|i=1,2,…,M}表示。在矢量量化理论中,X称为输入矢量,Yi称为量化矢量,{Yi|i=1,2,…,M}称为码本或码书,码字的数目M称为码本容量。矢量量化的准则是在给定码本大小M时使量化所造成的失真最小,如果所有的n维矢量都用有限的M个码字表示,并将所有的码字进行编号,那么所有的n维矢量都可以用这些码字的码号表示,从而可以有效的实现数据压缩。
  2.2VQ码本的设计
  码本的设计决定了VQ算法能否给出较低的畸变值和较高的质量。设d(X,Y)为X和Y之间的畸变,码本设计的规则为:第一,X选择码字Yl时遵循“最近邻原则”,即tb.png ;第二,设所有选择码字Yl的输入矢量X的集合为Sl,那么Yl应使此集合中所有矢量与Yl之间的畸变平均值为最小。X与Y之间的畸变等于它们的欧氏距离,则Yl等于Sl中所有矢量的“质心”,即:
                                          tb1.png
  其中Nl是Sl中所包含的矢量个数。
  码本的形成一般采用LBG算法,这是一种最优的矢量量化器设计方法。LBG算法的基本原理是:对所有语音帧向量以初始码本作最短距离分类,即将各语音帧向量归类到初始码本中距离最近的码字中去。所有训练向量归类结束后,分别对归类于某一类的所有语音向量求重心,将对每一类求得的重心代替该类原来的初始码字,得到一个新的码本。再以此码本替代原来的初始码本,重新再进行归类。重复上述过程直至新旧码本间的距离小于给定阈值为止。
  2.3VQ语音识别流程
   采用基于无记忆VQ的语音识别流程如下:
  1) 训练时,将同一字音的各训练序列的各帧特征,进行聚类,可以得到含有规定数目(M)码字的一个标本,称为该字音的码本。对于整个识别系统,词汇表内每个字音具有其单独的码本。
  2) 通过统计确定拒识阈,即如果待识音对某码本的标志距离超过该距离,则将不是该码本相应的字音。拒识阈的选择通常通过大量统计事先确定。过大或者过小将导致误识或者拒识。
  3) 识别时,待识音帧序列的每帧特征与某字音码本的M个码字依次作比较,记下M个距离中的最小距离。整个语音帧序列的各最小帧距离之和作为“判别距离”(标志距离)。经过逐一计算,对与每个字音码本,该待识音都有一个标志距离。如果最小标志距离值小于拒识阈,则最小标志距离所对应的字音作为识别结果。
  
  3.语音遥控系统设计
  本系统由三个部分组成:第一部分为模/数转换部分,接收输入的语音信号,并将其转化成数字采样信号;第二部分为语音识别部分,对输入的数字语音词条信号进行分析,识别出词条信号所代表的命令,由DSP完成;第三部分是系统控制部分,将语音识别结果转换成相应的控制信号,完成具体控制功能。下面对语音识别算法的软件实现及遥控系统控制部分作详细的讨论。
  3.1 硬件设计
   语音遥控的硬件框图如图1所示。它由两个独立的子模块组成:语音信号处理模块和系统控制模块。语音信号处理模块由LM324、ADSP2181、存储器28F020组成。其中LM324对麦克风输入信号进行放大,28F020为存储器,存储的数据为语音识别所需的参数、语音识别算法产生的中间数据、训练后的码本数据、DSP系统的应用程序。ADSP2181是AD公司的16位的定点DSP芯片,是整个语音识别模块的核心,负责语音识别、以及存储器的读写控制。
  系统控制模块由AT89C52单片机、红外接收发送器、电源管理电路、键盘和LCD液晶屏组成。AT89C52是主控芯片,负责整个系统控制,通过扫描用户通过键盘输入的指令,分别完成训练遥控码;控制DSP进行语音训练、识别;将识别结果转换成相应的遥控码,通过红外发光管发射出去。LCD液晶屏的作用是:提示用户操作、显示训练/识别是否成功以及待识音与最近的码本的距离。单片机与DSP之间通过标准的RS232串口协议通讯。系统运行流程如下:
  训练操作如下:1)按下A键,LCD显示“说一个命令”;2)用户说一个命令;3)训练成功,LCD显示“重复命令”;4)用户重复所说命令;5)训练成功,LCD重复1-4,用户接着训练命令;
  识别操作如下:1)按下B键,LCD显示“说一个命令”;2)用户说一个已训练过的命令;3)识别成功,LCD显示“识别成功”,同时相应的遥控码通过红外模块发射出去。
  在训练或者识别过程中,如果用户说话太大或者太小,或者说的太快导致训练或者识别失败,则LCD显示“训练失败”或者“此为非法命令”,表示训练或者识别失败,用户必须重新进行训练或者识别。


                                            tb3.png

                                                                                     图1 语音遥控系统硬件框图 
  3.2 软件设计
  语音遥控系统的软件部分中语音识别模块主要由四个子模块组成:端点检测模块、LPC特征参数的提取模块、似然比计算模块、LBG算法识别模块等构成。端点检测模块将短时能频值作为端点检测的特征参数,从背景噪声中找出语音的起止点。LPC特征参数的提取模块完成LPC参数的计算。似然比计算模块完成似然比距离的计算。LBG算法识别模块实现识别功能。下面先介绍一下软件控制流程,然后介绍两个关键的模块:LPC特征参数的提取模块与LBG算法模块。这两个模块有大量的乘法和除法计算,并且需要完成浮点运算和数据精度的处理。因此这两个模块的设计好坏决定了语音识别的精度。最后介绍一下数据的精度处理。
  3.2.1语音识别控制流程
  语音识别程序流程图如图2所示。训练时:按“A键”进入训练状态,用户训练与遥控码型相对应的语音命令。使用时:按“B键”,进入语音识别状态,等待语音处理模块返回结果,若返回正确的识别结果,则把相应的遥控码发射出去。若连续60秒无正确的命令则系统进入休眠状态,单片机控制电源电路切断DSP和FLASH的电源,单片机本身也进入休眠状态,直至用户按键,唤醒单片机,系统恢复工作。
                                     

                                tb2.png                                              

                                                                       图2  语音识别流程图
  3.2.2LPC特征参数的提取
  本文使用Durbin算法,预测阶数为P=12,为加窗后的数据,N为窗长。
  首先计算自相关    tb4.png
  LPC特征参数的提取的伪代码描述如下:
  I(0)=R(0);K(1)=R(1)/R(0);α(1,1)=K(1);//初始化
  fori=2toP
   I(i-1)=(1-K(i-1)*K(i-1))*I(i-2);//第一循环运算
   K(i)=[R(i)-]/I(i-1);
   α(i,i)=K(i);
   forj=1toi-1
    α(j,i)=α(j,i-1)-K(i)*α(i-j,i-1);//第二循环运算
   end
  end
  forj=1toP
   A(j)=-α(j,P);//输出结果
  end
  A(j)的输出就是LPC系数(A(0)=1)。
  3.2.2LBG算法的软件流程
   LBG算法的实现流程是软件设计中最关键的部分,因为生成的码本是识别阶段的参考模板,直接关系到识别的效果,图3为该算法实现的软件流程图。
  3.2.3数据精度的处理
  用16位的定点DSP实现语音识别算法时,虽然程序的运行速度很快,但是数据精度比较低。这是由于中间过程的累计误差导致了运算结果不正确。为了提高数据的运算精度,在程序中采用了扩展精度处理方法,即在精度要求比较高的地方,中间变量采用32位甚至48位来表示。这样,在指令条数增加不多的情况下运算精度大大提高了。
  语音识别中采用大量浮点运算操作,采用定点DSP需要解决利用定点数来表示浮点的问题。本文采用数的定标方法来实现。数的定标就是决定小数点在定点数中的位置。Q表示法是一种常用的定标方法,设定点数是X,浮点数是Y,则Q法表示的定点数与浮点数的转换关系为:
  浮点数Y转换为定点数X:X=(int)Y*(2^Q);2^Q表示2的Q次方
  定点数X转换为浮点数Y:Y=(float)X*(2^-Q);2^-Q表示2的-Q次方
  
       tb.png  
  4.实验
  家电遥控系统不需要很大的词汇表,因此选择了面向空调遥控的六个常用命令单词进行测试,每个命令进行六次识别,这里码本和待识别音来自同一人。实验结果如下:

                    tb1.png
   中间对应方格内的小数表示待识音与码本库中最近的一个码本的距离,在对“取暖”命令进行第三次识别时出现错误(error信息),是由于该最近距离大于预定的阈值。
  实验表明,基于VQ的语音识别算法识别正确率为97.2%,VQ识别算法完全可以实现语音遥控的要求。基于VQ的语音识别技术在智能化家电网络中具有广泛的应用前景。
  
  参考文献
  1桂苹,吴镇扬,赵力,王维新基于VQ的说话人自动识别系统的实现电声技术2003年第10期
  2.杨行峻,迟惠生语音信号数字处理北京电子工业出版社1995
  3.万春基于DTW的语音识别应用系统研究与实现集美大学学报2002年第2期
  4.梁虹语音识别中的VQ聚类方法云南大学学报(自然科学版)1998年第6期
  5.庞雄昌,楼顺天语音识别及其定点DSP实现现代电子技术2003年第19期
  6.赵力编著语音信号处理机械工业出版社2005年
  7.魏艳娜,王社国一种新的基于遗传算法的VQ码本优化方法现代电子技术2006年第13期
  8.周季华,史媛媛,刘润生语音识别在家电遥控器中的应用电子技术应用2002年第8期
  
  
  

文章标题:基于VQ的语音遥控系统设计

转载请注明来自:http://www.sofabiao.com/fblw/ligong/zidonghua/3241.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3