基于语音识别的机器人动作控制系统设计

2020-09-29 07:51钱平马建圆李子龙刘锋
电脑知识与技术 2020年17期
关键词:语音识别机器人

钱平 马建圆 李子龙 刘锋

摘要:本文设计了基于语音识别的机器人动作控制系统。该系统机器人动作执行部分以STC15W4K16S4单片机作为核心微控制单元,可实现上位机软件进行动作的设定,以YS-LDV7为语音识别模块,实现语音信号控制机器人的指定动作,达到声控的目的,以SYN6288语音合成模块对接收到的语音指令进行播报。该设计可通过预录的语音指令对机器人进行前进、后退、转弯、舞蹈等动作的声控操作,可为在危险环境的短距离搜救、探测任务或者智能玩具领域内提供相应的参考。

关键词: 语音识别;机器人;动作控制

中图分类号:TP242        文献标识码:A

文章编号:1009-3044(2020)17-0170-03

Abstract: This paper designs a robot motion control system based on speech recognition. The robot part of the system takes STC15W4K16S4 single-chip microcomputer as the core micro-control unit, which can set the actions of the upper computer software, and ys-ldv7 as the speech recognition module to control the designated actions of the robot to achieve the purpose of voice control. The design can perform the forward, backward, turn, dance and other movements of the robot by voice command pre-recorded, which can provide the corresponding reference in the field of short-range search and rescue in dangerous environments, detection missions or intelligent toys.

Key words:speech recognition; Robot; motor control

1  引言

隨着电子技术和移动互联网的不断发展,人工智能语音识别技术得到很大的发展,利用语音识别技术让机器人能够按照人类的语言做出相应指令,语音作为一种人机交互手段应用于产品上,使得产品更加智能化和信息化。而语音控制的小型双足机器人更具有成本低、体积小、机动性能强等优点而被广泛应用,无论是在军事还是电子消费品等民用领域都有广泛的需求。本文研究设计的基于语音识别的机器人动作控制系统对于智能玩具服务机器人[1]等领域提供相应的思路参考。

2  系统整体设计

整个控制系统如图1所示,主控芯片采用STC15W4K16S4,该款芯片具有大容量RAM数据存储器,运行速度比传统8051快7-12倍,宽工作电压,低功耗,具有6通道15位专门高精度PWM,4个超高速串口等丰富的外设满足设计的要求[2]。通过PWM信号控制6个数字舵机,即形成了双足机器人的六个自由度,可以通过软件实现前进、后退、转弯等基本动作,并且可以通过动作的组成形成舞蹈等套系动作。利用YS-LDV7语音识别模块通过串口连接主控芯片,实现语音的输入和识别。利用SYN6288语音合成模块通过主控芯片的串口输出语音信号并有扩音器进行语音的播报。最终达到语音控制双足机器人的动作完成以及所执行动作语音的播报。

2.1系统动作执行单元设计与实现

该系统主要动作载体为6自由度双足机器人,通过上位机软件可以随意调整机器人动作状态,上位机界面如图2所示,其中ID1-ID6为6个电机的编号,可以调整电机的转动幅度,通过改变动作的保持时间可以编排出相关动作,本设计编排出“立正,前进,后退,左转,右转,舞蹈”六个动作系列。通过上位机软件编辑的工作组可生成相应文件并下载到MCU的flash中,保存相应的动作组编号用于动作执行时函数的调用。本设计中对应的六个动作编号分别为0-5,通过void Full Act Run(uint8 actFullnum,uint32 times)函数调用存储在flash中动作组程序,针对不同参数可执行相应的动作。

2.2语音识别模块

该系统采用YS-LDV7语音识别模块主要基于LD3320芯片[3],该模块上采用STC11L08XE芯的单片机并且预留3.3V电源引脚以及串口连接引脚,模块内置咪头。语音识别模块工作原理框图如图3所示,语音模拟信号通过咪头传给LD3320芯片内部,进行频谱分析、特征提取的数字信号传送给语音识别器,然后将识别结果传给STC11L08XE与动态编辑识别列表中的关键词进行匹配,匹配成功即识别完成。该模块采用了ASR非特定人识别技术,在对语音信号特征信息提取后与外部存储器中寻找最佳匹配的关键词[4]。

本系统采用语音识别模块的口令识别模式,即给语音识别模块预设触发指令“xiaoduo(小多)”,也就是说让机器人做出动作之前必须先收到触发指令,Go_falg标志位置1语音模块才会启动下一个识别过程。在关键词语列表中通过函数添加“li zheng(立正)”,“qin jin(前进)”,“hou tui(后退)”,“zuo zhuan (左转)”,“you zhuan(右转)”,“wu dao(舞蹈)”。当识别到合法的语音指令,模块通过串口将语音数据包发送给双足机器人MCU,MCU对接收到的语音包进行解析,提取语音包的信息作为参数给动作执行函数,达到语音控制的目的。语音包的数据包含数据头(0-1位),有效数据(2-5位)和结束标志(6-7位),将根据不同的语音信号发送相应的数据存储到YuYin_data[8]数组中,对应数据如表1所示。

2.3语音合成模块

本系统采用的是SYN6288语音合成模块[5],该模块采用STC89LE52(STC51内核)进行编程实现,用户只需要配置好单片机的串口函数,进行修改移植。高模块板载电源接口和串口收发接口,内置推挽式DAC,可直接驱动扬声器,进行声音播报,达到与人交互的目的。图4为语音合成模块的连接框图,机器人主控芯片通过串口与SYN6288语音合成模块进行数据收发,语音合成模块将收到数字信号通过功率放大接到扬声器进行语音播报,能实现中文的合成播报。该模块部分可实现机器人接收到的动作指令的语音播报以及错误信息的播报,给操作者提供给友好的交互平台。

若语音识别模块接收到并能正确解析处语音包时,将对应的语音包播报出来,如当解析到“li zheng(立正)”指令时,利用void SYN_FrameInfo(uint8_t Music,uint8_t *HZdata)文本合成函数播报“准备立正”。

3  系统软件设计

本系统软件设计的编程环境是KEIL μVision5.14,建立51单片机的工程项目。流程图如图5所示,开始是系统初始化,单片机的包括串口,PWM,flash,中断,定时等外设的初始化以及语音识别模块和语音合成模块的初始化。然后检查整个系统电量是否过低起到一个低压保护的作用,电压过低蜂鸣器就会鸣叫,整个工作处于一个while循环中,检测是否有语音信号的输入,如果没有语音信号的接收,整个系统处理低功耗状态,当有收到“xiaoduo(小多)”的触发语音信号后开始识别相应的语音解析语音包,如果未能解析出相应的正确语音,系统会播报“语音错误”,当解析出正确的语音信号,信号会传给语音合成模块进行相应的语音播报,窄足机器人就会执行相应的动作程序,达到语音控制的功能和目的。

关键的任务代码如下所示:

void TaskRun (void)

{

TaskTimeHandle ();

CheckBatteryVoltage ();

TaskPCMsgHandle ();

TaskBLEMsgHandle ();

TaskRobotRun ();

if( IsYuYin )

{

if(YuYinData[0] == 0x00) {

switch(YuYinData[1]) {

case 0x00:            // 立正动作

SYN_FrameInfo(0,"开始立正");

FullActRun(0,1);

case 0x01:            // 前进动作

SYN_FrameInfo(0,"开始前进");

FullActRun(1,1);

case 0x02:            // 后退动作

SYN_FrameInfo(0,"开始后退");

FullActRun(2,1);

case 0x03:            // 左转动作

SYN_FrameInfo(0,"开始左转");

FullActRun(3,1);

case 0x04:            // 右转动作

SYN_FrameInfo(0,"开始右转");

FullActRun(4,1);

case 0x05:            // 舞蹈动作

SYN_FrameInfo(0,"开始舞蹈");

FullActRun(5,1);

break;

default:

break;

}

}

其中,void SYN_FrameInfo(uint8_t Music,uint8_t *HZdata)為中文语音文本合成函数,uint8_t Music参数为背景音乐,0表示没有背景音乐,uint8_t *HZdata参数为合成文本的内容;void FullActRun(uint8 actFullnum,uint32 times)为机器人执行动作函数,uint8 actFullnum参数为执行动作编号,uint32 times参数为执行动作的次数。

4 结束语

本文设计的是基于语音是被的机器人动作控制系统,以STC15W4K16S4单片机作为机器人运动和动作主控芯片,通过语音识别模块YS-LDV7识别语音信号中的特征参数,并根据识别出的语音信号使机器人做出相应动作以及通过语音合成模块SYN6288对相应动作进行实时播报。该系统通过硬件和软件的设计和配合,在测试中达到了语音控制机器人动作的良好效果,为语音识别技术的应用进行了实践,也为危险环境探测和智能玩具领域产品提供了思路和参考。

参考文献:

[1] 管红,张帅,类红乐.智能语音机器人的设计与实现[J].电脑知识与技术,2011,7(30):7498-7500.

[2] 刘立军.基于STC15W4K60S4单片机LED开关电源控制器的设计[J].工业控制计算机,2017,30(1):130-131.

[3] 车刘鑫,李崇斌,钟卓霖,等.语音控制机器人的设计[J].电子制作,2018(23):3-5,100.

[4] 潘锋.智能语音控制系统设计与研究[J].电子设计工程,2019,27(22):6-9,14.

[5] 常国权,彭云峰.基于STC15单片机和SYN6288的机床语音报警系统设计[J].电子器件,2015,38(3):616-620.

【通联编辑:唐一东】

猜你喜欢
语音识别机器人
机器人,让未来走近你
通话中的语音识别技术
基于LD3320的非特定人识别声控灯系统设计