义务二:定期公布潜在项目方案和想法,供大家使用
摘要:
首先简述了语音识别在机器人控制系统中的作用,然后重点介绍如何利用Microsoft Speech SDK工具来开发语音识别软件系统,对机器人进行的语音命令控制和简单的语音人机对话,对设计具有语音识别功能的智能机器人具有参考意义。
关键词:: 机器人语音控制;语音人机交互;Speech SDK
一、Speech SDK语音识别过程详解:
目前,语音识别技术因为其实用性、趣味性成为国内外关注的热点。微软、IBM等公司都相继推出了它们基于PC的语音识别产品。其中,微软Speech SDK完全支持简体中文语音系统的开发,是开发语音软件的一个理想工具。它是基于COM标准开发的,底层协议以COM组件的形式完全独立于应用程序层,为应用程序设计人员屏蔽了复杂的语音技术,充分体现了COM的技术优点。语音识别由识别引擎(Recognition Engine)管理,能实现从语音中识别出汉字;语音合成由语音合成引擎(也即文本到语音引擎TTS Engine)负责,实现语音朗读。程序员只需专注于自己的应用,调用相关的语音应用程序接口(SAPI)来实现语音功能。
该语音框架主要靠SAPI运行来实现应用程序与语音引擎之间的协作,而SAPI提供各种接口来实现不同的语音功能,如识别、朗读、训练等。
下面只介绍与控制命令识别有关的接口:
(1) 语音识别引擎(ISpRecognizer)接口:用于创建语音识别引擎的实例。语音识别引擎对象有两种:独占(InProcRecognizer)的引擎和共享(SharedRecognizer)的引擎。独占的引擎对象只能由创建的应用程序使用,而共享的引擎可以
供多个应用程序共同使用。
(2) 语音识别上下文(ISpRecoContext)接口:主要用于发送和接收与语音识别相关的消息通知,创建语法规则对象。
(3) 语法规则(ISpRecoGrammar)接口:定义引擎需要识别的具体内容,用于创建、载入和激活识别用的语法规则。而语法规则定义了期望识别的单词、短语和句子,通常有两种语法规则:听写语法(DictationGrammer)和命令控制语法(Command and Control Grammer)。命令控制语法主要用于识别用户在语法文件里自定义的一些特定的命令词汇和句子,这些语法规则以XML文件的格式编写,通过(ISpRecoGrammar)接口载入,并激活。
(4) 识别结果(ISpPhr ase)接口:用于获取识别的结果,包括识别的文字,识别的语法规则等。
(5) 语音合成(ISpVoice)接口:主要功能是通过访问TTS引擎实现文本到语音的转换,从而使电脑会说话。
二、机器人语音控制软件系统设计:
语音识别的功能由ISpRecognizer、ISpRecoContext、ISpRecoGrammar、ISpPhrase四个接口实现,而且遵循COM组件的工作原理和Windows应用程序的工作原理(消息驱动机制),软件系统实现分以下几步:
(1) 首先,初始化COM平台;
(2) 定义各个语音接口对象(以特定的顺序),设置识别语法、识别消息,使识别引擎处于工作状态;
(3) 当有语法规则被识别后, ISpRecoContext对象向应用程序发出语音识别消息,从而调用识别消息响应函数;在改消息函数中,通过ISpPhrase接口获取识别的结果。此步可以循环,直到停止语法规则为止。
(4) 应用程序退出时,卸载COM平台。语音识别软件系统流程如图4所示,硬件只需在原来的机器人系统上配置麦克风。
三、程序实例
(1) 编写语法规则文件(Cmd.xml),以定义需要识别的命令。
<GRAMMARLANGID="804">
<DEFINE>
<ID NAME="CMD"VAL="10"/>
</DEFINE>
<RULE NAME="COMMAND"ID="CMD" TOPLEVEL="ACTIVE">
<L>
<p>前进</P>
<p>后退</P>
<p>左转</p>
<p>右转</p>
<P>停止</P>
</L></