www.366.net

面向儿童的智能聊天机器人设计

2020-02-07 13:02:52 物联网技术 2020年1期

朱向庆 朱万鸿 何昌毅 甘海杰 陈泽锐

摘 要:文中设计可陪伴孩子聊天的机器人,以STM32F103ZET6单片机为控制中心,使用SYN7318语音识别模块、PAJ7620手势识别模块、OpenMV3 Cam M7摄像头模块、WiFi模块、HMI触摸屏和GSM模块等完成语音识别、合成,MP3播放,手势、图像获取及识别,远程语音通话。实验结果证明,所提系统能对语音进行准确的识别,并做出相应的动作;识别到关键词时开启远程亲子互动,家长可通过智能手机远程查看儿童的状态信息及相关图片。系统性能良好,操作简便,成本低廉,适合在智能化市场推广应用。

关键词:聊天机器人;手势识别;语音识别;语音合成;图像获取;语音通话

中图分类号:TP273;TN915文献标识码:A文章编号:2095-1302(2020)01-00-04

0 引 言

目前,国内外出现了众多功能各异的聊天机器人,但是很多聊天机器人缺乏语料库,只能在一定程度上解决人们的问题。在个别领域,人工智能的发展可以很快被应用到聊天机器人身上,但是整体来说还有待加强[1]。而同时兼备语音、图像及手势识别功能的聊天机器人相对较少[2]。

现如今,很多家长经常都会因为工作繁忙,没能照顾孩子,甚至让孩子独自留在家中,导致孩子严重缺乏与家长的交流互动。针对于此现象,专门设计一款可陪伴孩子聊天的机器人。它能够与孩子进行智能对话,模仿家长回答孩子日常生活中所遇到的“为什么”,还可以通过实时监控了解孩子的情绪问题并及时处理。本聊天机器人自带智能摄像头,能实时捕获家里及孩子的情况,家长可通过智能手机远程连接聊天机器人,与小孩进行语音通话。同时,聊天机器人含智能串口触摸屏,可结合语音识别进行相关界面的切换。

1 系统的硬件结构

本系统硬件结构如图1所示,它以STM32F103ZET6微控制器为核心,搭载OpenMV3摄像头模块、USART HMI智能串口触摸屏、GPRS/GSM模块IoT-GA6、WiFi模块ESP8266、手势识别模块PAJ7620、语音识别模块SYN7318和舵机等。

STM32F103ZET6是意法半导体企业(ST企业)推出的一款以ARM Cortex-M3为内核的32位微控制器,拥有144个引脚,112个通用I/O口,512 KB的FLASH ROM及64 KB的SRAM,具有3路12位的A/D转换器,2路12位D/A输出,4个通用定时器,2个高级定时器,2个基本定时器,3路SPI接口,2路I2C接口,5路USART,1个USB从设备接口,1个CAN接口,1个SDIO接口,兼容SRAM,NOR和NAND FLASH接口的16位总线FSMC[3-4]。STM32F103ZET6内部资源丰富,完全满足设计要求。

1.1 SYN7318语音识别模块

语音服务采用龙邱科技的SYN7318 中文语音交互模块,它集成非特定语音识别、语音合成、语音唤醒和MP3音频播放功能[5]。SYN7318中文语音交互模块的UART与STM32串口直接相连,接收命令帧,如控制命令帧、待合成的文本数据,或将语音识别结果发送给STM32单片机。

1.2 手势识别模块

手势识别使用ATK-PAJ7620模块,其内部采用的PAJ7620U2传感器是原相科技(Pixart)的一款内部集成光学阵列式传感器。该模块具有体积小、功能多、反应快等特点,支撑9种手势识别,输出速率高达240 Hz,支撑接近检测和物体大小识别,兼容3.3 V与5 V系统。STM32单片机通过I2C通信协议与ATK-PAJ7620模块通信。

1.3 OpenMV3摄像头模块

聊天机器人采用OpenMV3 CAm M7摄像头模块获取家里的图像信息,OpenMV是低成本、可扩展、基于MicroPython机器视觉的模块,它是一个可编程的摄像头,内置一些图像处理算法,通过MicroPython语言可以实现自定义逻辑[6-7]。OpenMV通过串口与STM32相连,完成数据交换。

1.4 MG90S舵机模块

借助舵机MG90S控制摄像头模块,可以自动切换摄像头视角。MG90S舵机的控制信号是周期为20 ms的脉宽调制(PWM)信号,其中脉冲宽度为0.5~2.5 ms,相对应舵盘的位置为0°~180°,呈线性變化。STM32的PWM输出口PC6连接舵机MG90S的控制线,通过输出不同的占空比控制舵机的旋转角度,完成摄像头的视觉切换。

1.5 GPRS/GSM模块

为实现语音通话服务,使用GPRS/GSM模块IoT-GA6,它支撑2G,3G,4G的移动卡或联通卡,支撑数字音频和模拟音频,支撑标准AT和TCP/IP命令,其尺寸小,功耗低,能提供完善的GPRS/GSM短信、数据传输及语音通话服务。为用户提供远程互动的语音通话功能。GPRS/GSM模块控制方式为串口,它与STM32串口直接相连,以完成数据交换。

1.6 HMI显示屏模块

系统使用USART HMI智能串口触摸屏实现人机交互,该触摸屏具有解析度高、传输速度快、存储空间大、稳点性高、使用方便的优点。触摸屏封装好底层功能以后,通过串口与用户STM32单片机进行交互。

单片机可以随时通过串口发指令通知设备:切换某个页面或者改变某个组件的属性。设备也可以随时通过串口通知操编辑:目前触摸页面上的某个组件或者设备进入某个页面。

1.7 WiFi模块

借助ESP8266 WiFi模块和互联网,当系统连接服务器后,家长可以在手机端远程查看家庭状况,或通过GPRS/GSM模块与小孩通话,进行远程互动。WiFi模块内置乐鑫企业出品的物联网芯片ESP8266。该模块可工作于三种模式:AP模式、Station模式以及混合模式。STM32单片机通过串口连接WiFi模块,使用AT指令进行控制,完成通信[8-9]。

远程服务器工作框架如图2所示,它使用百度智能云服务器及图灵机器人服务器,其中百度智能云负责语音识别,图灵机器人负责回答问题[10]。所有的数据都通过ESP8266模块上传至服务器,完成STM32与服务器的数据交换,实现远程监控及在线语音服务。

2 App设计与实现

为提高系统稳定性和实时性,STM32单片机程序使用FreeRTOS操作系统[11],用Keil μVision 5App编写,编译生成的机器码由ST-LinkV2仿真器下载至单片机[12];OpenMV的程序则采用Python语言设计[13]。

HMI触摸屏使用USART HMIApp编写控件及指令代码,编译生成的*.tft文件放置于SD卡中,SD卡插進HMI触摸屏SD卡槽,HMI触摸屏自带的控制器会自动读取该文件完成烧写功能,烧写完成后断电,拔掉SD卡即可。

2.1 FreeRTOS系统任务设计

FreeRTOS是一个轻量级的操作系统,能够简化应用App的设计,缩短开发时间,并为系统提供实时性和可靠性[14-16]。

图3是FreeRTOS系统各任务流程,开机后初始化各模块及外部设备,并建立多个任务及其运行环境,随即开启任务调度,始终运行高优先级任务。

2.1.1 任务1:语音聊天

任务1首先创建一个语音识别二值信号量,并用于任务同步。当串口接收到语音唤醒指令后,释放该信号量,系统马上任务同步,随即启动录音并把录音文件上传至百度语音服务器进行识别,识别完成后将结果上传至图灵语音聊天服务器进行匹配语音回答,最后播放语音回答。识别结果为相关操作时,将控制系统对应模块。如果系统的WiFi模块未连接上热点,那么将匹配自定义本地库进行语音回答。

2.1.2 任务2:手势识别

任务2负责手势识别,其能够识别向上、向下、向左、向右、向前、向后、顺时针、逆时针和挥动共9种手势,同时还支撑接近识别。当检测到人的相关手势后,会实行相应的动作。例如:当检测到人接近时,自动唤醒系统,并通过SYN7318中文语音交互模块合成提示语;当检测到手势时,实行儿歌的播放、暂停、上一首、下一首等;当检测到人离开时,系统进入睡眠模式,以降低功耗。手势识别每250 ms检测一次,随即切换为接近检测,两种识别模式一直循环下去。

2.1.3 任务3:人机交互

任务3主要是人机交互界面的操控,接收语音及手势的操控指令,进行图形化界面的切换。当触摸显示屏相关界面的按钮时,会同步语音及摄像头模块进行动作。例如,在拨号界面时,号码的输入及修改等操作由上位机编写的固件程序自动处理,只有点击拨号按钮,才向主控器发送拨号指令,主控器根据指令实行相关模块动作,同时显示屏与主控器实时交换数据,同步图形化界面的更新。最后任务挂起200 ms。

2.1.4 任务4:WiFi自动重连

任务4以1 s的时间间隔检查网络状态,当网络断开时,系统自动重连热点;当系统连上互联网后,与服务器交换数据。

2.1.5 任务5:图像识别

任务5主要用于图像识别后的相应操作。系统的图像识别功能可以识别小孩的面部表情和行为动作,进而进行对应的交流。当OpenMV检测某个自定义人脸(如孩子“哭”的表情)时,就会将该表情信息传递到单片机,接收到表情的单片机会将其与对应的操作进行匹配并做出对应处理,如播放愉快的儿歌。用户可以自定义录入孩子不同时候的表情,再选择不同的界面并播放不同的歌曲。每识别完一次表情,任务挂起2 s。

2.2 OpenMV程序设计

OpenMV是基于Python的嵌入式机器视觉模块,它成本低、易拓展,开发环境友好,除了用于图像处理外,还可以用Python调用其硬件资源,进行I/O控制,与现实世界进行交互。OpenMV的程序采用Python语言设计,它负责图像捕获、追踪和识别,并将图像信息上传到服务器。OpenMV程序流程如图4所示,在程序开始时,初始化ESP8266并捕获摄像头的图像信息。若未捕获到孩子的面部或动作信息,会自动调节舵机,再次进行图像捕获;若捕获到孩子的面部或动作信息,则将其与本地库图像进行快速对比,直到匹配到最合适的库,并输出该库的信息,通过串口传输到单片机。另外,当OpenMV接收到服务器回传的“监控”信号后,会将此时捕获的孩子图像传输到远程服务器端,供家长远程查看。

3 实验结果

图5为硬件实物。实验结果证明,系统能够正常运行,可实现语音聊天,并且根据结果做出相应的动作。系统手势识别准确率高,图像识别、语音通话、远程控制、监控等运行良好。语音识别率达到98%,识别后语音回答有2~3 s的延迟;图像识别率达到95%,响应延迟1~2 s。

4 结 语

本文通过互联网、云服务器、图像识别、语音识别和语音合成等技术,成功研制出可陪伴孩子成长的机器人。实验证明采用互联网方式,语音及图像的识别率都得到明显提高。由于人的表情图像具有动态性,其识别效果良好。系统性能良好、实时性较高、成本较低,适合在智能化市场上推广应用。

参 考 文 献

[1]朱思坤.聊天机器人对话一致性和可延续性的研究[D].重庆:重庆大学,2018.

[2]王浩畅,李斌.聊天机器人系统研究进展[J].计算机应用与App,2018,35(12):1-6.

[3]张勇.ARM Cortex-M3嵌入式开发与实践:基于STM32F103[M].北京:清华大学出版社,2017.

[4]朱向庆,何昌毅,朱万鸿,等.基于STM32单片机的通信技术实验系统设计[J].实验技术与管理,2019,36(8):81-84.

[5]刘尧,祝小雅,胡安正.基于SYN7318语音识别的智能家居嵌入式控制系统设计与开发[J].电子制作,2019(12):18-19.

[6]刘义亭,董梦超,黄家才,等.基于OpenMV的目标跟踪系统设计[J].南京工程学院学报(自然科学版),2019,17(1):39-44.

[7]梅妍玭,傅荣.基于OpenMV的3D定位识别系统[J].新技术新工艺,2018(2):50-52.

[8]常欣,王琦.用STM32和ESP8266实现的可扩展物联网系统[J].单片机与嵌入式系统应用,2018,18(12):58-61.

[9]张延顺,景加荣,黄涛,等.基于ESP8266的分子泵无线监控系统设计与实现[J].工业仪表与自动化装置,2019(3):106-110.

[10]林承师.基于Java平台与图灵聊天机器人的接入实现[J].信息与电脑(理论版),2018(21):113 -116.

[11]朱迪.FreeRTOS实时操作系统任务调度优化的研究与实现[D].南京:南京邮电大学,2015.

[12]夏传东.浅谈ST-LINK调试器的时间线调试技巧[J].单片机与嵌入式系统应用,2017,17(8): 25-28.

[13]刘鹏,张燕,李肖俊,等.Python语言[M].北京:清华大学出版社,2019.

[14] GUAN F,PENG L,PERNEEL L,et al. Open source FreeRTOS as a case study in real-time operating system evolution [J]. Journal of systems and software,2016,118: 19-35.

[15]刘迎澍,杨珂,丁纬航.基于FreeRTOS的智能用电监控系统[J].电子设计工程,2017,25(21):157 -160.

[16]刘火良,杨森.FreeRTOS内核实现与应用开发实战指南:基于STM32[M].北京:机械工业出版社,2019.

?
XML 地图 | Sitemap 地图