机器人语音控制系统的设计与实现
2010-04-25李家旺
李家旺
(唐山中厚板材有限公司 设备机动部,河北 唐山 063610)
语音识别技术就是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的高级技术。具有远距离控制功能的基于网络的远程机器人,在海洋探测、军事及人类自身不能到达的各种危险和特殊场所具有独特的作用[1]。结合语音识别与网络通信技术,在4自由度的AS-MRobotE机器人平台上,利用其提供的软件编程接口设计了可对其进行语音远程实时控制的系统,并给客户端和服务器提供了新的控制界面。
1 系统组成
语音远程控制机器人系统可以分为本地语音识别发送端和远程机器人控制端,即客户机和服务器[2,3]。它们均是基于Windows系统。语音远程控制机器人系统的整体结构框图,如图1所示。
图1 语音远程控制机器人系统的整体结构框图
2 语音识别原理
语音识别分为训练阶段和识别阶段:第一步是系统“训练”阶段,任务是建立识别基本单元的声学模型;第二步是“识别”阶段。按照一定的准则和测度与系统模型进行比较,通过判决得出识别结果。本系统是基于小识别词汇量的语音识别系统,采用如图2所示的模板匹配法。
图2 基于模板匹配的语音识别原理框图
2.1 语音信号的预处理
系统采用麦克风将语音信号输入给计算机,再进行预加重、分帧加窗处理,然后进行端点检测。其中加窗使用Hamming窗,因为Hamming窗的旁瓣较低,可以有效地克服Gibbs现象。
2.2 特征提取
特征提取是从短时语音帧中提取对语音识别有效的信息。在孤立词语音识别中,用Mel频率的倒谱系数(Mel Frequency Ceqstrum Coefficient,MFCC)作为语音特征取得了较好的效果。MFCC完整的计算过程,如图3所示。
图3 MFCC计算过程示意图
2.3 基于隐马尔科夫模型(HMM)的识别过程
在语音命令识别中,应用HMM包括两个步骤,其中一个重要的步骤就是识别。在进行识别时,为每一个参考模型计算出产生测试观察的概率,且测试信号按最大概率被识别为某个命令。
3 客户-服务器工作模式原理
Windows支持TCP协议,提供标准Socket调用。Socket编程均采用客户机/服务器模式,客户机/服务器模式在操作过程中采用主动请求方式。其TCP传输的客户机/服务器通讯模型,如图4所示。
图4 TCP传输的客户机/服务器通讯模型
4 机器人控制系统
语音远程控制机器人系统的机器人平台是上海广茂达公司生产的AS-MRobotE智能风暴移动机器人。AS-MRobotE函数开发库中已提供了完善的运动系统程序代码。其控制系统是在Windows平台下用C/C++语言为AS-MRobotE开发应用程序的一般方法。编程过程中只需添加m6e_api库为AS-MRobotE开发应用程序库,具体编程过程和说明见其操作手册。
5 人机交互系统的实现
5.1 套接字(Socket)通信机制
Socket是对应TCP/IP协议的典型应用开发接口。它提供了不同主机间进程通信的端点,应用进程之间要通过网络进行通信,必须在网络的每一端建立套接字,通过对套接字的“读”、“写”操作实现网络通信。作为网络应用编程界面,Socket隐藏了网络底层的复杂结构和协议,使得编程人员可以简单地对网络进行操作。
Socket主要有两种通信方式,第一种叫流方式(StreamSocket),也称面向连接方式。在这种方式下,通信进程之间要先建立一种虚拟的连接,这种方式对应的是TCP协议,其传输特点是通信可靠性高,按发送的顺序接收数据;数据被看作是字节流,无长度限制。第二种叫做数据报方式(DatagramSocket),又称无连接方式,它提供无连接服务,对应的是UDP协议,这种方式不提供数据无错保证,数据可能丢失或重复,并且接收顺序混乱,报文的长度是有限的。
Socket的编程原理是基于套接字的系统调用。应用程序首先必须通过系统调用socket()创建套接字。然后,调用bind()将套接字地址与所创建的套接字联系起来。通过connect()和accept()两个系统调用建立套接字的连接,其中connect()用于建立连接,accept()用于使服务器等待来自客户的实际连接。listen()用于面向连接服务器,表明它愿意接收连接。当一个连接建立后,就可以使用系统调用send()和recv()发送和接收数据了。最后调用closesocket()关闭套接字,并释放所分配给套接字的资源[4]。
5.2 客户端的交互界面
图5所示的是系统客户端的界面。该系统实现了语音识别的训练及识别、服务器的IP及端口设置、运行状态的显示,以及发送识别指令等智能控制功能。
图5 语音远程控制机器人客户端的界面
5.3 服务端的交互界面
图6所示为系统服务器的界面。该系统实现了显示本地IP、机器人初始化、本地控制、远程控制状态显示、服务器端口设置,以及指令显示等智能控制功能。
图6 语音远程控制机器人服务端的界面
整个系统的程序设计均基于Windows系统VC++编程语言[5]。
6 结束语
语音远程控制机器人系统采用了使用广泛的Windows系统平台,并且引入了语音识别与网络通信技术,使其控制方式更加智能化。首先是采用基于模板匹配技术的语音识别方法对有限的指令进行识别,不但能够得到比较高的识别率,而且易于实现;然后通过Socket机制实现了远程通信,并最终根据指令实现了对机器人的语音远程控制。实验验证了语音远程控制智能机器人运动的准确性和实时性。本系统具有极其优异的性能价格比、通用性、开放性和扩展性;基于Windows语音远程机器人控制系统在价格、性能和发展潜力上都具有竞争力,代表了未来的发展方向,有较好的应用前景。
[1] 丑武胜,王田苗.基于互联网的机器人远程实验系统[J].高技术通讯,2003,13(8):68-72.
[2] 王雪松,田西兰,王炜强.语音识别技术在机器人控制中的应用[J].仪器仪表学报,2006(s1):299-301.
[3] Luo Zhizeng,Zhao Jingbing.Speech Recognition and Its Application in Voice-based Robot Control System[C].Intelligent Mechatronics and Automationics,2004,Proceedinqs,2004 International Conferenceon IEEE,2004:960-963.
[4] 李现凡,高建荣.基于SOCKET编程接口的局域网即时通信系统的开发实现[J].常州轻工职业技术学院学报,2006(4):44-47.
[5] 黄维通,姚瑞霞.VisualC++程序设计教程[M].北京:机械工业出版社,2003.