摘要:文章将口令识别与无线通信、
机器人控制相结合,实现了基于口令识别的智能车无线控制系统。该系统包含接收和识别口令的主机,发送指令和接收指令的通信模块以及带有特定功能的智能车。主机识别口令后,以无线传送方式将指令发送给智能车,智能车按指令实现相应功能。主机和智能车都基于嵌入式系统。主机硬件电路由三星S3C6410处理器和外围电路组成,口令识别部分采用连续隐马尔科夫模型算法。实验表明,该系统有良好的稳定性和实用性。
关键词:口令识别;无线通信;连续隐马尔科夫模型
引言
语音是人类交流信息zui自然、zui方便、zui有效的方法。用语音与机器交互是人类一直梦寐以求的事情。经过十几年的发展,基于隐马尔科夫模型的语音识别已经达到了应用要求。通过语音口令识别完成与机器交流变得顺其自然。人们与机器交流,大多是为了控制机器运作或获取其运行状态。目前应用广泛的总线控制系统,网络控制系统大多要求有数据线传送指令。无线通信技术让这种控制摆脱了地域的束缚。通过语音口令识别,机器“听懂”语音并将其“翻译”成指令,然后通过无线通信传输指令、控制远程智能车模式有着很好的应用前景。基于口令识别的控制系统与嵌入式系统有效结合,与未使用嵌入式系统比较更有便捷易用,显示出其优势作用。基于口令识别的无线控制嵌入式系统在可广泛应用于侦查、自动化控制领域。
本文给出基于口令识别的智能车无线控制的嵌入式系统。该系统首先获取语音口令并识别。识别口令完成后,解析成便于无线传输的控制指令帧。控制指令帧通过无线网络被传输到远程智能车。这种模式与单一的口令识别控制系统或无线控制系统相比,更有应用价值和实际意义。整个系统有三个模块,即主机模块、通信模块和智能车模块。主机实现语音信号采集和口令识别。主机是以S3C6410为核心的嵌入式系统,运行广泛应用的WinCE6.0操作系统。通信模块负责主机与智能车之间的通信。通信模块基于ZigBee设计,用TI公司CC2530F256芯片作为主芯片。智能车是基于51单片机控制的嵌入式系统,会根据主机指令运行。
本文以下内容分安排如下,第二节详细介绍了系统要求和系统硬件结构,主要包括主机板、智能车板的硬件设计,ZigBee通信模块设计。第三节详细介绍系统软件设计,主要包括口令识别算法设计,主机软件设计,无线数据发送方法,智能车程序设计以及通信设计。第四节给出实验结果以及总结。
1、系统硬件设计
对于一个基于口令识别的无线控制系统,主要有以下几个要求。
(1)完成语音口令识别功能,系统需要对人发出的口令迅速做出识别并实现。
(2)为了更快地响应用户口令,系统要有满足迅速反应的硬件和优化的算法,使得口令识别快捷稳定。
(3)通信模块要具有安全性,使得传送的指令保密又能安全到达对方。
在主机中使用稳定的嵌入式WINCE6.0操作系统。通信模块使用基于IEEE802.15.4标准的局域网协议Zigbee.ZigBee是一种便宜的,可加密,低功耗的近距离无线组网通讯技术。
本文中,主机嵌入式系统是以ARM11芯片三星公司S3C6410作为主处理器。系统集成了256MDDRRAM,NANDFlash2GB存储器。S3C6410处理器主频为533Mhz,zui高可达667Mhz,具有低功耗、高性能等特点。主处理器通过支持AC97标准的WM9714音频芯片接受音频输入。该芯片由ADC/DAC,话筒混频器,可编程增益放大器(PGA)和锁相环组成。还提供PCM/I2C接口和AC'97接口。
本系统硬件框图如图1所示:
通信模块有发射端和接收端。发射端在主机中,通过主机的串口与其连接。接收端在智能车中,也通过串口和智能车控制器连接。发射端和接收端都由TI公司CC2530F256芯片作为核心加扩展的外围模块组成。CC2530系列芯片是TI公司为嵌入式系统低功耗无线通信提供的解决方案。该系列芯片花费很小的代价可以建立健壮的一对多、多对多的网络。
智能车上有以51单片机为核心的控制电路板。89S51单片机主要接受和解析接收端的指令、控制电机、反馈状态等。系统的硬件性能满足需求的计算要求和安全性要求。
2、系统软件设计
2.1算法设计
口令识别系统框架如图2所示
口令识别系统包括预处理,参数提取,口令训练和口令识别模块。预处理包括端点检测,分帧和加窗。另外,预处理部分对于高频信号部分进行加重处理,便于后续阶段信号参数提取。参数提取模块从语音信号中提取zui能反映语音信息的语音特征,然后通过这些特征参数组成特征参数矢量序列,供后面处理。口令训练模块是通过大量口令特征参数训练口令模板。口令识别模块是将口令特征参数与口令模板匹配,得出识别结果。
2.2软件设计
软件设计分为两个方面。主机方面,口令识别和指令发送在Microsoft公司的嵌入式操作系统WindowsCE6.0上开发。开发工具为*推荐的VisualStudio2005。有好的交互界面对于应用程序来说是很有必要的,控制软件开发使用了MFC图形界面。在智能车方面,是用的Keil开发工具开发了代码,完成了接受指令和电机的驱动。
2.2.1主机程序
主机主要工作有口令识别、发送指令两部分。在系统上,为这两部分开两个进程。主机程序流程图如下:
主机程序两个进程分别负责口令识别和口令发送。口令识别进程口令识别过程中对语音信号提取MFCC特征参数。用隐马尔科夫模型对口令建模、训练和识别。对每条语音口令信号,先切除*,进行预加重处理,然后通过Hamming窗分帧。帧长和帧移分别为20ms和10ms,对每一帧语音信号提取12阶MFCC和△MFCC-共24维参数作为特征矢量。
2.2.2指令发送方法
主机的另一个任务是指令发送。发送指令通过单独进程控制。该进程工作主要有:
(1)首先调用WindowsCEAPI函数CreateFile()打开串口。主机以独占的方式打开串口2。
(2)之后通过调用API函数SetCommState()来设定串口波特率。主机设置串口波特率9600,数据位8位,停止位1位,无奇偶校验。
(3)通过调用write()函数来写需要串口发送的指令。通过read()函数来读取串口发送过来的数据。
(4)程序结束后,调用CloseHandle()函数来关闭串口。
以上口令识别算法和指令发送已进行多次优化,满足系统对算法的要求。
2.2.3智能车程序
智能车部分主要任务为接受指令和控制电机。
程序从main函数开始后,首先初始化单片机内部寄存、配置串口、电机复位等。之后就等待串口数据的输入。该过程是一个接受指令、解析指令、执行指令、读取车状态、发送状态的一个循环。接受指令是单片机通过串口接受无线模块发送过来的指令数据。解析指令是指根据设定的协议,单片机判断指令数据完整性并提取关键数据。执行指令是指单片机根据关键数据执行相应代码,例如:向前走、停止、左转等。读取车状态是指单片机读取车上温度传感器的数据。发送状态是指小车打包状态数据并发送的过程。
2.3通信设计
通信设计主要是通信协议的设计。作为应用在嵌入式系统中的通信协议,应该满足完整性、便捷性等。本文设计的通信帧结构如图4所示。
传输的帧有七个字节组成,其中开头和结尾两个字节是帧头和帧尾。第二第三字节是目标地址,第四第五字节是数据。第六字节是校验位。在传输过程中发生的一些小错误。通过接受的帧的校验位来排除,有一定的抗干扰性。
3、实验与总结
3.1实验结果
本文中取常用口令“前进”,“后退”,“左转”等8个单词为一组,进行实验。共设置三组实验。*组试验中,测试系统口令识别的准确率,分别用说话者A,B,C,D四个人进行以上口令识别,实验结果中系统识别率达到了90%。第二组试验中,测试无线系统的传输距离。本文将无线模块接收端和客户端相分离,至到接收端无法接受到发送端的数据位置。实验结果是传送数据可以穿过一面墙,传输距离可到达30m。第三组实验为综合测试,即应用测试。试验中,测试者可以很方便的控制智能车运动和状态。
3.2总结
口令识别的应用使人对机器人控制更加方便。本文在广泛应用的WinCE嵌入式平台上实现了智能车无线控制系统。实验结果表明,口令识别率达到了90%。在主机正确识别的口令中,智能车的误操作概率为零。与之前孤立的口令识别系统或控制系统相比,本系统首先应用方便,口令识别准确率高。其次,接口模块化,通过改变无线数据传送方式可以增加多个节点控制,便于管理。基于口令识别的无线控制系统具有很好的便捷性和扩展性。尤其是基于嵌入式的该系统,具有很广泛的应用前景。