蒋泽润,黄明,吉祥(北方工业大学电子信息工程学院,北京,100144)
基于安卓系统语音识别控制智能小车的设计
蒋泽润,黄明,吉祥
(北方工业大学电子信息工程学院,北京,100144)
在智能小车的控制系统中嵌入语音识别技术后,控制者可以用语音控制智能小车,这是多功能、综合控制系统的发展方向。本文选用安卓平台进行开发,设计语音识别模块,将识别后的信号通过蓝牙进行通信;控制端选用安卓手机,其传输数据到受控端的蓝牙模块,最终实现对智能小车的控制;在程序控制上,安卓平台和受控单片机分别选用App Inventor2和Arduino进行编程。本文对开发者颇具指导意义。
语音识别;安卓手机;蓝牙通信;智能小车;App Inventor2;Arduino
若在智能小车的设计中融入语音识别技术,便可以通过语音控制来进行人机交互,让小车实现预设动作[1]。随着智能手机迅速发展,基于安卓手机系统的语言识别技术来控制智能小车[2],可让控制系统更加方便实用,使小车如同听懂指令一般的实现语音驾驶的功能,在自动控制类的产品市场中具有发展前景。
本系统通过编写安卓应用程序进行语音识别,对识别后的语音信号进行处理后,通过蓝牙通信传输给小车。当智能小车接受信息后进行相应的处理,实现基本的行动和不同应用情况下的特定功能。系统整体框图如图1所示。
图1 系统整体框架
2.1语音识别端选择
语音识别部分可供选择的方案较多。大多相关的研究均以凌阳单片机SPCE061A来实现语音识别[3],虽然具有语言识别功能,但其使用较为繁琐,资源有限,不便于本系统开发;除此之外,PC和手机端的微软Windows系统集成的语音识别功能,虽理论上能用于本系统,可试用之后发现识别效果不佳。相比之下,笔者在此选用了安卓手机作为语音识别的硬件基础,因为其现如今使用普遍,且安卓平台开源,可移植性好。加之,安卓应用平台相关的语音识别软件颇多,它们识别度精准、识别效果颇佳,语音识别范围及数量较上述两种方案有极大的增加,更省去了繁琐的语音训练过程,更符合本系统的设计[4]。
2.2无线传输-蓝牙通信
由于在语音识别端选择了安卓手机作为人机交互的语音输入,比较合适的便是用蓝牙通信来进行数据的传输。因为手机内部已集成蓝牙模块,调用方便,并且蓝牙传输本身优点突出,如抗干扰能力强、稳定性高、低功耗、低成本等特点,更利于本系统的控制。
在受控端蓝牙接收方面选择了集成度高,使用方便的HC-0305模块,此模块可按需求切换主从机,波特率可调,符合本系统的需求。
2.3智能小车主控单片机
主控单片机在本系统主要起:1.接受通过手机蓝牙传递过来的命令;2.处理命令让小车实现预设的动作。在此选择了设计小巧,功能完善的AVR单片机ATmega8A,因为可将其合理的布局在小车上,不觉突兀且不会增加太多小车的负重。
2.4小车组件
小车由底盘、舵机、电机以及电机驱动板组装而成,在此笔者选用了具有较高性能的飞思卡尔竞赛专用智能小车组件,以满足本系统的设计需求。
舵机选用的是杜曼遥控模型公司的微型舵机伺服器DM-S0160,可由PWM信号的占空比来控制舵机的位置。舵机适用于那些需要角度不断变化并可以保持的控制系统,小车的转向前轮就是很好的应用。
驱动电机采用RS-380SH直流伺服电机。驱动电机的转动速度同样受PWM信号占空比的控制,拥有良好的可调性,非常适合小车在各种条件下的速度要求。
驱动板用的是双H桥直流电机驱动板L298N,此驱动板体积小,重量轻,具有强大的驱动能力。它拥有2A的峰值电流和46V的峰值电压,两路直流电机接口和四线两相步进电机接口,非常适用于智能小车的电机控制。
2.5系统供电
系统需要供电主要是受控端的单片机、驱动板、舵机和电机。在此选用了7.2V,2000mAh的镍镉充电电池供电,将其安装在小车上可为单片机和驱动板直接供电。7.2V电压通过驱动板便可为小车的舵机和电机正常供电。
3.1安卓应用实现语音识别
笔者编写的安卓应用程序在本系统的主要功能是:1.实现语音识别功能;2.处理语音信号进行传输。
在语音识别部分,笔者通过调用科大讯飞公司的安卓应用(讯飞语音+)来完成相应的功能。因为讯飞语音+能够为第三方应用提供讯飞强大的语音服务,包括语音合成、语音识别、语义理解,不仅能做到中文语音识别,同时也能通过英文识别控制,甚至各种方言。第三方应用只需要调用讯飞语音标准接口就可以使用这些服务。最主要的原因正如上文所提及:其识别度精准、识别效果拔群,对本系统的开发有着极其重要的帮助。
在蓝牙通信部分,本程序通过调用手机蓝牙,并连接受控端上的HC-0305蓝牙模块传输控制命令。
在安装此应用后,任何一台安卓手机都可以实现对智能小车的语音控制,不拘泥于某台特定的设备,具有较好的移植性和通用性。
3.2受控端单片机控制智能小车
受控端部分需要用到AVR单片机的串口进行数据传输、定时器进行PWM波输出和IO口进行高低电平输出,以此来接受蓝牙传输的数据并控制小车。程序基本思路如图2所示。
值得一提的是,笔者在本系统的编程方式上的选择颇具有教育意义,非常适合中小学生以及无相关编程背景知识的爱好编程人士,来进行相关程序的开发。
首先,在安卓应用的编程环境选择上,笔者选用的是MIT开发的图形化编程软件App Inventor2[5]。部分程序解释如下:
①定义变量
②配置手机蓝牙并连接外部蓝牙设备
③调用讯飞语音识别功能,处理识别后的信息并用蓝牙发送
④调用手动操作界面
由上面的图形化编程的程序可见,想要编写出简单实用的安卓应用程序也并非遥不可及。只要我们肯钻研,没有安卓或Java的编程基础,编出一个类似于本系统的控制程序也不是问题。
其次,在选择受控端AVR单片机的编程环境上,也秉承着简练原则,通过使用库函数极其丰富的Arduino进行编程[6]。这在保证系统的功能完整实现的前提下,大大缩短了整个开发的周期。Arduino的语言也正如上文所说:简洁、易懂,能让没有C语言编程基础或刚开始学习的学生快速上手。值得关注的是,它与App Inventor2有着异曲同工之妙:在节约了开发者的时间精力的同时,还增加了着更加优秀的教育意义。
蓝牙通信成功建立之后,说出指定的语音命令,安卓应用程序便可准确的识别出所说的语音信号,并传输给智能小车进行相应的动作。程序部分测试如图3所示。
图3 程序部分测试
在分别说出预设的(前进、后退、加速、停止、左转、右转、直行)语音命令后,安卓应用均能准确地识别出命令并传输给小车实现相应的功能。测试结果如表1所示。
表2 系统测试结果
为了避免突发情况下的语音识别功能无法正常工作,笔者还给系统加入了手动控制的功能,可在主程序界面进行跳转。操作界面如图4所示。
图4 操作界面和实物展示
从整个系统的搭建上来说,用安卓平台作为人机交互端来进行开发,是个很新颖的抉择。因为安卓平台资源丰富、移植性强、开发方便且功能强大,主要还省去了昂贵的硬件开发费用,却更好的实现了系统所需的功能,使得整个系统看起来精致小巧却功能齐全。
从编程方式来说,选择图形化编程软件App Inventor2以及语言简单易懂的Arduino编程环境,让整个系统在完善的基础上还拥有了一般相关研究所不具备的教育意义。
当然,由于研究的时间有限,笔者虽实现了语音识别控制小车的基本系统功能,却只涉足了语音识别控制系统这个领域的冰山一角。不可否认的是,通过这样一个创新的思路,确为今后的语音识别控制系统的研究开拓了崭新的天地,在语音识别精度与广度的提高上及其系统控制方法的领域中添上了新的一笔。
致谢:本课题受到大学生科学研究与创业行动计划项目、北方工业大学学生科技活动项目的资助与支持。
[1]李红霞,罗琪翔.语音控制的智能小车的设计[J].工业控制计算机,2015, 28(8): 143-146.
[2]李新科,高潮,郭永彩,何卫华.基于语音识别和红外光电传感器的自循迹智能小车设计[J].传感器与微系统,2011,30(12):105-108.
[3]王和顺,黄惟公,邓成中.基于SPCE061A的语音识别系统的研究〔J〕.计算机工程与设计,2004, 25(12): 2222-2224.
[4]Sarbjeet Singh, Sarbjeet Singh, MandeepKour, MandeepKour. Voice Recognition in Automobiles[J]. International Journal of Computer Applications,2010,6(6):7-11.
[5]黄仁祥,金琦,易伟.人人都能开发安卓APP[M].北京:机械工业出版社, 2014.11.
[6]LawrenceRabiner, Biing-Hwang Juang. Fundamentals of Speech Recognition[M]. Prentice Hall, 1993.
蒋泽润(1994-),本科。研究方向:模拟小信号采集及嵌入式控制系统。
黄明(1977-),北方工业大学讲师。研究方向:宽带模拟小信号采集及处理。
吉祥(1996-),本科。研究方向:宽带小信号采集系统设计。
Design Intelligent Car of Speech Recognition Control basis on Arduino System
ZerunJiang, MingHuang, XiangJi
(Northern Industrial University Electronic Information Engineering College, Beijing, 100144, China)
In the control system of intelligent car embedded speech recognition technology, the controller can use voice control intelligent car.This is the development direction of multi-functional, comprehensive control system.This article selected the Arduino platform for development, designed the speech recognition module,thenidentifyed the signal through the bluetooth communication. ChoosingArduino control end,ittransmited data in other to control the bluetooth module, finally realized the control of the smartcar.On the process control, the Arduino platform and controlled microcontroller was programedby Inventor2 and ArduinoApp.This paper has theguidefor developers.
Speech Recognition; Android Mobile Phone; BluetoothCommunication; SmartCar; App Inventor2;Arduino
TP311
A
2095-8412 (2016) 03-354-04