基金项目:江苏省高等学校2008年实践创新计划项目(立项编号:53)杨帅(1981-):男,汉族,辽宁锦州人,研究生,硕士,研究方向为总线及嵌入式系统,现以公开发表学术论文30余篇。基于SPCE061A智能小车机器人语音辨识系统的研究摘要:设计了以SPCE061A控制器为开发平台的智能小车机器人语音辨识系统,介绍了SPCE061A的内部资源和语音辨识原理,详细阐述了基于SPCE061A的语音辨识系统通过调用库函数在智能小车上的实现过程,包括初始化RAM、调用训练模块、初始化辨识器、启动实时监控、辨识处理等几个阶段。实验结果表明智能小车语音辨识系统运行良好。关键词:智能小车;SPCE061A;语音辨识中图分类号:TP273文献标识码:AResearchonSpeechRecognitionSystemofIntelligentControlRobot-carbasedonSPCE061AYANGShuai1、2XUELan1、2GAOAn-bang1、2XUHou-min1(1.DepartmentofElectricEngineering.HuaianCollegeofInformationandTechnology,Huaian223003,China;2.JiangsuEngineeringTechnicalResearchandDesignCenterforEquipmentManufacturingofElectronicProducts,Huaian223003,China;)Abstract:Speechrecognitionsystemofintelligentcontrolrobot-carbasedonSPCE061Aisdesigned,alsotheinternalresourcesofSPCE061Aandtheprincipleofspeechrecognitionarepresented.Realizationprocessofspeechrecognitionsystemthroughcallinglibraryfunctioninintelligentcontrolrobot-carbasedonSPCE061Aisintroducedindetail,includinginitializationofRAM、trainingmodulecall、initializationofidentifier、startingreal-timemonitoringanddentificationprocessing.Theexperimentalresultsshowthatspeechrecognitionsystemofintelligentcontrolrobot-carcanoperatewell.Keywords:intelligentcontrolrobot-car;SPCE061A;speechrecognition1.引言随着科技的发展,智能设备大量涌现,其中智能汽车作为典型代表之一,对其进行研究开发也相当普遍,当然人与这些智能化设备之间快捷可靠的交互方式很多,其中语音辨识技术以其独特的趣味性成为了人与智能系统交互方式中的热点。本文所设计的智能小车利用语音辨识技术,实现自动前进、后退、左拐、右拐和停车。2.智能车语音辨识系统的开发平台SPCE061A采用语音辨识技术构建的智能小车的语音辨识系统实现了小车的自动行驶,而SPCE061A控制器是构建语音辨识系统的开发平台。SPCE061A是一款16位独具语音特色的控制器,片内采用的μ‘nSPTM(microcontrollerandsignalprocessor)核心处理器,具有较高的处理速度,能够完成16位算术逻辑运算、16×16位硬件乘法运算和DSP内积滤波运算、能够快速处理复杂的数字信号,不需要额外的专用语音控制芯片,就能实现语音的编解码等,既节省了设计成本,又能满足一定的控制要求[1]。控制器采用模块化架构,集成了ICE(在线仿真)、锁相环振荡器、时基控制器、7通道10位AD转换器、单通道AD+AGC(自动增益)转换器、双通道10位DA转换器、通用异步通信接口、串行输入输出接口、电压监控等模块,其结构如图1所示。3.语音辨识的基本原理语音辨识是建立在对人的语音交互过程的基础上,它是一种多维模式辨识过程,分为训练和辨识两个阶段,其基本原理图如图2所示。辨识过程主要包括语音信号的预处理、特征提取、语音模型库、模式匹配、后处理等几个环节。预处理包括滤波、采样和量化、加窗、端点检测、预加重等过程,然后对预处理后的语音信号样本进行分析处理,从中提取出语音特征信息,建立特征模型;之后开始模式匹配,将输入语音信号的特征与已有的特征模型进行对比,如果两者达到一定的匹配度,则输入的语音被辨识【2】。机器语音辨识处理的过程与人对语音辨识处理的过程基本上是一致的,目前主流的语音辨识技术是基于统计模式辨识的基本理论。16位微控制器μnSPTM+ICEROMRAM锁相环振荡器CPU时钟低电压监测/低电压复位16位定时器/计数器+时基+中断控制7通道10位ADC单通道ADC+AGC双通道10位DAC串行接口+异步通信接口通用输入输出IOA15-IOA0IOB15-IOB0MICDA1DA2ENSCKSDASPCE061A语音输入特征提取语音特征模型语音输入特征提取模型匹配后处理辨识结果训练阶段辨识阶段图1SPCE061A控制器的结构图图2语音辨识原理图4.基于SPCE061A的语音辨识系统在智能小车上的实现智能小车的语音控制系统以SPCE061A控制器和语音输入电路、语音输出电路为硬件基础,语音输入电路如图3所示,其中VMIC提供传声器的电源,VSS是系统的模拟地,VCM为参考电压,1脚和2脚分别是传声器X1的正极、负极的输入引脚,连接SPCE061A的MICP、NICN管脚上。当对着传声器讲话时,1脚和2脚将随着传声器输入的声音产生变化的波形,并在SPCE061A的两个端口处形成两路反相的波形,送到SPCE061A控制器内部的运算放大器进行音频放大,经过放大的音频信号,通过ADC转化器转化为数字量,保存到相应的寄存器中。语音输出电路如图4所示,其中VDDH为参考电压,VSS是系统的模拟地。音频信号由SPCE061A的DAC引脚输出送到电路的9端,通过音量电位器R9的调节端送到集成音频功率放大器SPY0030,经音频放大后,音频信号从SPY0030输出经J2端口外接扬声器播放声音。图3语音输入电路图4语音输出电路SPCE061A配有专用的麦克接口用于语音训练和辨识阶段的语音输入,16位的定时/计数器用于语音信号的控制采样,内置的硬件乘法器和内积运算保证了辨识算法的运行。在软件方面,凌阳科技提供一个语音辨识函数库bsrv222SDL.lib,它能够完成特定人语音的连续辨识,包括训练函数和辨识函数,还可以将训练好的特征模型导入和导出等【3】。由于语音命令的特征模型要保存到RAM中,所以首先擦除SPCE061A中的RAM,用于语音训练做准备。训练模式启动后,系统播放语音提示,提示用户语音训练已启动,接下来用户可按照系统提示依次对各条命令进行训练,在训练过程中,如训练成功则由语音提示进行下一条命令进行训练,若失败,也会提示用户继续训练此条语音,全部命令训练完毕后系统将准备进行语音辨识;当向控制器发出语音命令时,声波通过麦克端口输入,将相应的信号传递到SPCEO61A处理芯片,经编解码电路和数字信号处理后,在芯片中通过相关程序与预先植入的语音库中的命令进行比较辨识,根据辨识的结果进行判断,转换为能被系统辨识的信号,从而对被监控系统进行控制【4】。语音辨识的过程如图3所示。开始清除RAM存储器语音训练是否成功语音辨识器的初始化启动实时监控获取辨识结果产生控制信号是否初始化RAMBSR_DeleteSDGroup(0)调用训练模块TrainWordintWordIDintRespondID初始化辨识器BSR-intRecognizerBSR_MIC启动实时监控BSR_EnableCPUIndicator辨识处理BSR_GetResult图3语音辨识流程图图4语音辨识结构框图智能小车的语音辨识系统在SPCE061A上的实现过程可分为以下五个阶段,如图4所示。(1)初始化RAM语音命令的特征模型被保存在SPCE061A的内部RAM中,如果所需的RAM空间被旧的特征模型数据占满,新特征模型则无法保存到RAM中,利用BSR_DeleteSDGroup(0)函数可以把RAM空间中所有的特征模型删除,释放出所需的空间。当RAM擦除成功BSR_DeleteSDGroup(0)函数返回0,否则返回-1。(2)调用训练模块语音训练过程通过调用函数intBSR_Train(intCommandID,intTraindMode)来完成,CommandID为命令序号,范围从0x100到0x105,并且对于每组训练语句都是唯一的。TraindMode为训练次数,为1表示使用者训练一次,为2表示训练者训练两次。为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音,训练次数是2时,两次一定会有一些差异,所以一定要保证两次训练结果尽量接近。当intBSR_Train返回0时表明语音训练成功。(3)初始化辨识器用来定义语音输入来源,可以通过调用函数voidBSR_InitRecognizer(intAudioSource)完成,其中参数AudioSource为0时表示MIC语音输入,为1时表示LINE_IN模拟电压输入。当主程序调用该函数时,语音辨识器便打开8kHz采用频率的FIQ_TMA中断,并将采样得到的语音数据填入语音辨识器的数据队列中【5】。(4)启动实时监控实时监控是用来观察语音辨识是否正常工作,如果辨识正常则会产生脉宽为16ms连续稳定方波,否则会产生不稳定的波形,此时需要删除命令或优化程序,否则将会丢失语音数据,产生辨识出错信息。完成此功能可以通过调用BSR_EnableCPUIndicator()函数来完成。(5)辨识处理由函数intBSR_GetResult()完成语音辨识处理,当无命令辨识出来时,函数返回0;辨识器停止未初始化或辨识未激活返回-1;当辨识不合格时返回-2;当辨识出来时返回命令的序号。5.实验与结论实验中智能小车的正确辨识率在90%以上,实验过程中发现影响小车正常辨识的主要因素主要包括周围环境的噪音、人与小车的距离等,这些需要在今后的工作改正。需要说明的是在训练过程中中,每条语音命令的长度不要超过13s,训练后得到的语音模型保存在RAM中,每条命令占用96Word。由于RAM空间有限,同时可辨识的语音命令为5条,为了运行复杂的辨识程序,必须通过扩展必要的存储芯片完成系统的功能。这种语音控制的智能小车机器人不仅可以将来为人服务,稍加扩展,就可以在多种不适合人作业的场合替代人执行任务,因此这种语音控制小车机器人具有重要的学术研究价值。参考文献:1.罗亚非.凌阳16位单片机应用基础[M].北京:北京航空航天大学出版社,2006.2.张震宇,王华.基于凌阳单片机的语音识别技术及应用[J].微计算机信息,2007,23(82):120-122.3.汪敏.凌阳16位单片机实验与实践[M].北京:北京航空航天大学出版社,2007.4.刘萌.基于凌阳SPCE061A单片机的语音识别系统设计[J].电子测量,2008(7):30-31.5.李小白.凌阳16位单片机C语言开发[M].北京航空航天大学出版社,2006.手机号:15950382730Email:lnyangshuai@163.com通讯地址:江苏省淮安市大学城信息学院电气工程系杨帅收邮编:223003