基于ARM的实时语音识别系统在家庭监护机器人 1
0赞进入90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。许多发达国家如美国、日本、韩国以及IBM、Apple、 AT&T、NTT等著名公司都为语音识别系统的实用化开发研究投以巨资。IBM公司于1997年开发出汉语ViaVoice语音识别系统,次年又 开发出可以识别上海话、广东话和四川话等地方口音的语音识别系统ViaVoice’98。目前市场上已经出现了语音识别电话、语音识别记事本等产品,如美 国VPTC公司的Voice Organizer和法国的Parrot等。
我国语音识别研究工作开始的较晚,但近年来发展得很快,一直紧跟国际水平,国家也很重视,并把大词汇量语音识别的研究列入“8 63”计划,由中科院声学所、自动化所、清华大学电子工程系及北京大学等单位研究开发,取得了高水平的科研成果,如中科院自动化所研制的非特定人、连续语 音听写系统和汉语语音人机对话系统,其字准确率或系统响应率可达90%以上。鉴于中国未来庞大的市场,国外也非常重视汉语语音识别的研究。美国、新加坡等 地聚集了一批来自大陆、台湾、香港等地的学者,研究成果已达到相当高水平。
1 系统设计
文中是家庭监护机器人项目中的语音识别系统设计部分,设计目的是设计出一种可以识别语音的、协助监护家庭行动不方便人员的机器人。为实现该语音识别系统,设计了语音识别系统总体结构框图,如图1所示。
1.1 硬件设计
文中所研究和设计的功能,都是应用在移动机器人上的。因而系统的研究设计需要考虑到体积小、省电、便于移动的特性,并需具有便于家庭用户操作的友好显示界 面。对于语音识别部分,需要用到用于语音识别算法处理的处理器、语音采集电路和语音输出电路,如图2所示。其中语音识别算法运算的处理器主要负责算法的运 算处理,相当于机器人的大脑;语音采集电路负责采集外部的声音信号,相当于机器人的耳朵;语音输出电路负责输出话语声音,相当于机器人的嘴巴。
1)语音识别算法处理器选择
根据系统设计功能的要求,目前常用的语音识别芯片种类一般有:单片机(MCU)、DSP和SoC(System on Circuit)。考虑到普通单片机(MCU)资源的紧缺及运行速度较慢的缺点,因而在本系统设计将不考虑使用单片机(MCU)作为语音识别的处理器。 DSP包含用作数字信号处理的专用部件,运算能力强、精度高,但目前DSP的价格比较高,同时考虑到本系统的特性,需要选择一种既有较强的运算能力,合适 于语音识别的功能,并且能实现较好的用户操作界面,并带有文件系统(用于识别地图)的功能,因而选择DSP并不是明智之举。目前Texas Instruments公司新推出的一款芯片OMAP3530,它具有双内核 armCortexTM-A8的内核和TMS320C64+TM DSP内核,属于高性能的OMAP35x架构系列产品,满足了系统设计的各种功能特性要求。
2)语音编解码芯片选择
机器人选择一款合适的语音处理芯片是非常重要的。考虑到系统中用到了各种电源,并需要对电源进行管理,因此选择TI公司配套的TPS 65930芯片来作为系统语音识别部分的音频编解码处理功能的硬件平台是非常合适的。该芯片是一个集成了电源管理、ADC、嵌入式电源控制(EPC)、全功能的音频编解码器于一体的芯片,满足了系统所有电源管理和音频编解码的需要,为设计的PCB板节省了空间,同时减少了多电源硬件设计的负责布线烦恼。
3)电路设计
本文的设计是用在移动机器人上的,因而需要语音的输入、识别处理及语音输出的功能。对于语音的输入采集,本文使用声音传感器麦克风及外围电路来实现。对于语音输出部分,使用功率放大器结合喇叭来使用。设计语音部分原理图如图3所示。
1.2 软件设计
HTK(Hidden Markov Model Toolkit)是一套专门的建立和处理隐马可夫模型(HMMs)的实验工具包,由英国剑桥大学工程系(Cambridge University Engineering Department,CUED)开发的,主要应用于语音识别领域,也可以应用于语音合成、字符识别和DNA排序等研究领域。HTK经过剑桥大学、 Entropic公司及Microsoft公司的不断增强和改进,使其在语音识别领域处于世界领先水平。
基于HTK的语言识别时,识别结果适用只能显示在DOS或终端上,而且不利于将结果保存、移植或者二次开发利用。在本语音识别系统中使用了HTK接口工具 ATK(AnApplication Toolkit for HTK)。ATK是由英国剑桥大学开发的开源语音识别工具,是对HTK的C++多线程封装,跟HTK一样,它支持Linux和Windows,它包括HTK(HTKLib)、AHTK、AGram、ANGram、ADict、AHMMs、AResource、arman、ARec、ACode、ASour ce、ATee、AComponent、ABuffer、APacket、Asyn、FLite(SYNLib)、ALog模块部件。