基于Speech SDK的机器人语音交互系统设计
2010-01-18陈景帅周风余
陈景帅,周风余
(山东大学 控制科学与工程学院,济南 250061)
基于Speech SDK的机器人语音交互系统设计
陈景帅,周风余
(山东大学 控制科学与工程学院,济南 250061)
介绍了一种基于Microsoft Speech SDK 5.1的机器人语音交互系统,利用Speech SDK 5.1提供的应用程序编程接口SAPI进行语音识别,对识别结果在逻辑程序中处理,使用Interphonic 5.0语音合成技术替代TTS技术来合成语音,实现了AHRR-I接待机器人的语音对话和语音控制。
接待机器人;Speech SDK;语音识别;语音控制;SAPI
机器人和人通过自然语言的沟通是基于语音技术中的语音识别技术和语音合成技术来实现人与计算机之间的信息交互[1-2]。赋予机器人以生物式的语音识别功能,是人类与机器人交流信息的一种最自然、最方便的手段[3]。目前,基于 Microsoft Speech SDK设计的语音对话系统往往采用SDK的语音识别和语音合成技术,中文对话声音单一,不够逼真。本文介绍了一种开发方法,对话效果能满足实际要求,系统已在AHRR-I智能接待机器人中试用(见图1)。该智能接待机器人会说话、唱歌、跳舞,能问候客人并交谈,行动自如,自主避让。
图1 AHRR-I接待机器人试用
1 系统介绍
语音交互系统运行于机载工控机,主要包括语音对话、信息推介、人脸识别、多模式运行等模块。系统界面如图2,采用触摸屏操作。接待机器人检测到游客的到来,主动停下,向参展的观众发出问候。通过机器人语音交互系统,观众可与机器人进行上千句的对话,还可以通过语音来控制机器人跳舞唱歌,如果观众离去,机器人会与观众再见。当与机器人交谈过的参观者再次光临时,接待机器人能通过之前的图像采集对人脸进行自动辨识,给予熟人特别问候和致意。
本系统基于Microsoft Speech SDK 5.1设计,语音识别率高,能满足实际要求。本文对系统实现的关键技术给出了描述。系统主程序界面如图2所示。
图2 系统主程序界面
2 系统关键技术实现
Microsoft Speech SDK 5.1是提供了一套语音应用程序开发的软件开发资源包,完全支持简体中文语音系统的开发,是开发语音软件的一个理想工具。它是基于COM标准开发的,底层协议以COM组件的形式完全独立于应用程序层,为应用程序设计人员屏蔽了复杂的语音技术,开发人员可以方便使用资源包中的资源开发语音识别和语音合成的应用程序。该软件开发包结构如图3所示。
图3 Speech SDK开发包结构
2.1 语音识别
语音识别是处理自然语言到数据的转换,语音识别技术也可以称为Speech-to-Text的识别。语音识别系统的处理过程首先是用户通过语音输入设备(比如麦克风)输入语音信号,然后通过语音接收卡(一般为声卡)接收语音数据转化为数字信号传入语音识别引擎进行处理,语音识别引擎处理完成后交给相关逻辑程序去处理相关应用[4]。语音识别类的封装和语音识别算法实现流程如图4。
图4 语音识别类封装及算法实现流程
语音识别的工作原理遵循COM组件的工作原理和一般Windows应用程序的工作原理(消息驱动机制),本文介绍语音识别类主要成员函数在VC++6.0 环境下的实现[5-6]。
2.1.1 COM初始化及释放
2.1.2 主要成员函数
2.1.3 截获识别消息,获取识别结果
截获识别消息(WM_RECOEVENT),识别的结果放在 CSpEvent的 ISpRecoResult中,然后根据识别的结果做相应的处理[9-10]。
2.2 语音对话及语音控制
计算机语音合成技术是将产生类似于人类语言的声音进行处理的技术。Speech SDK5.1提供的语音合成技术对中文使用效果较差,而且只有男声。本文采用了Interphonic 5.0语音合成系统,该系统以先进的大语料库和语音韵律描述体系为基础,合成音质可媲美真人发音。首先利用 Interphonic合成WAV格式语音,当引擎识别出语句后,在逻辑程序处理中播放相应WAV文件。用Windows提供的API函数 sndPlaySound可以实现小型WAV文件的播放。但是,当WAV文件大于100 K时,sndPlaySound函数就不能正常播放。在机器人说话时,为了避免外界声音对识别程序的干扰造成误识别或多次识别,需要在播放对话时先关闭语音识别。当机器人说完以后,重新开启语音识别,这就需要能够判断WAV文件何时播放结束。
本文定义CPlayWave类可以实现大型WAV文件的播放,并可在播放完成后发回通知消息。
2.2.1 打开和关闭波形音频设备
在C P l a y W a v e类的构造函数中打开波形音频设备。
2.2.2 主要成员函数包括Play和Stop函数
Play函数,采取异步播放,指定 MCI_NOTIFY标志并设置dwCallback成员来实现播放文件结束后返回通知消息。
在语音识别的逻辑程序处理部分,加入机器人的控制命令,即可以实现对机器人的语音控制,如前进、后退、左转、右转、跳舞等[11-12]。限于篇幅,本文不再介绍语音控制与机器人的底层程序接口。
3 结束语
本文讨论了 VC++6.0环境下调用Speech SDK实现语音识别的一种方法,并开发了机器人语音交互系统。经过测试,在机器人运行环境中,Speech SDK命令语音识别模式的识别率非常高,能够满足机器人语音交互实际应用的要求。系统已在AHRR-I智能接待机器人中试用。
[1] 梁振.计算机语音技术—在微软 Speech平台[EB/OL].http://www.microsoft.com/china/community/Column/106.mspx.
[2] Marin R,Vila P,Sanz P J,et al.Automatic speech recognition to teleoperate a robot via Web[J].Intelligent Robots and System,2002(2):1278-1283.
[3] Kotelly B.The art and business of speech recognition[M].USA:Pearson,2003.
[4] 初琦.Speech SDK在语音机器人开发中的应用[J].北京工业职业技术学院学报,2008,7(4):32-36.
[5] 邓福元,王建新,陈天赐.基于语音识别技术的军事标图系统设计与实现[J].企业技术开发,2008,27(11):10-12.
[6] 冯琳.语音识别系统在医院信息系统中的应用[J].中国数字医学,2007,2(12):50-52.
[7] 于洪涛.运用Authorware制作英语人机对话课件[J].内蒙古民族大学学报:自然科学版,2007,22(2):143-145.
[8] 林茜,欧建林,蔡骏.基于Microsoft Speech SDK的语音关键词检出系统的设计和实现[J].心智与计算,2007,1(4):433-441.
[9] 朱素英,殷建平,彭智朝.基于数据库查询的自然语言接口研究[J].计算机工程与设计,2008,29(4):6423-6426.
[10] 郭家清,白宇,蔡东风.刘纪元基于语音标签的语音浏览器[J].沈阳航空工业学院学报,2007,24(2):35-37.
[11] 张田芳,刘幺和,谭保华.基于语音识别的远程机器人控制系统[J].湖北工业大学学报,2007,22(2):45-47.
[12] 王雪松,田西兰,王炜强.语音识别技术在机器人控制中的应用[J].仪器仪表学报,2006,27(6):768-770.
Design of Speech Interactive System for Robots Based on Speech SDK
CHEN Jing-shuai,ZHOU Feng-yu
(School of Control Science and Engineering,Jinan 250061,China)
A speech interactive system based on Microsoft Speech SDK5.1 is reported.The speech recognition is designed using speech application program interface provided by Speech SDK5.1.Recognize result is dealt with in logical program.Then the speech is synthesized by Interphonic 5.0 speech synthesis system instead of TTS technology.Thus,voice chat and voice control of AHRR-I receptionist robot can be realized.
receptionist robot;speech SDK;speech recognition;voice control;SAPI
TP 242
A
1005-0310(2010)01-0025-05
2010-01-08
国家863计划课题(2009AA04Z220)
陈景帅(1983—),男,山东滨州人,山东大学控制科学与工程学院硕士研究生,主要研究领域为机器人控制与微机电系统。
(责任编辑 李亚青)