錢平 馬建圓 李子龍 劉鋒
摘要:本文設(shè)計(jì)了基于語音識(shí)別的機(jī)器人動(dòng)作控制系統(tǒng)。該系統(tǒng)機(jī)器人動(dòng)作執(zhí)行部分以STC15W4K16S4單片機(jī)作為核心微控制單元,可實(shí)現(xiàn)上位機(jī)軟件進(jìn)行動(dòng)作的設(shè)定,以YS-LDV7為語音識(shí)別模塊,實(shí)現(xiàn)語音信號(hào)控制機(jī)器人的指定動(dòng)作,達(dá)到聲控的目的,以SYN6288語音合成模塊對(duì)接收到的語音指令進(jìn)行播報(bào)。該設(shè)計(jì)可通過預(yù)錄的語音指令對(duì)機(jī)器人進(jìn)行前進(jìn)、后退、轉(zhuǎn)彎、舞蹈等動(dòng)作的聲控操作,可為在危險(xiǎn)環(huán)境的短距離搜救、探測(cè)任務(wù)或者智能玩具領(lǐng)域內(nèi)提供相應(yīng)的參考。
關(guān)鍵詞: 語音識(shí)別;機(jī)器人;動(dòng)作控制
中圖分類號(hào):TP242 ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):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 ?引言
隨著電子技術(shù)和移動(dòng)互聯(lián)網(wǎng)的不斷發(fā)展,人工智能語音識(shí)別技術(shù)得到很大的發(fā)展,利用語音識(shí)別技術(shù)讓機(jī)器人能夠按照人類的語言做出相應(yīng)指令,語音作為一種人機(jī)交互手段應(yīng)用于產(chǎn)品上,使得產(chǎn)品更加智能化和信息化。而語音控制的小型雙足機(jī)器人更具有成本低、體積小、機(jī)動(dòng)性能強(qiáng)等優(yōu)點(diǎn)而被廣泛應(yīng)用,無論是在軍事還是電子消費(fèi)品等民用領(lǐng)域都有廣泛的需求。本文研究設(shè)計(jì)的基于語音識(shí)別的機(jī)器人動(dòng)作控制系統(tǒng)對(duì)于智能玩具服務(wù)機(jī)器人[1]等領(lǐng)域提供相應(yīng)的思路參考。
2 ?系統(tǒng)整體設(shè)計(jì)
整個(gè)控制系統(tǒng)如圖1所示,主控芯片采用STC15W4K16S4,該款芯片具有大容量RAM數(shù)據(jù)存儲(chǔ)器,運(yùn)行速度比傳統(tǒng)8051快7-12倍,寬工作電壓,低功耗,具有6通道15位專門高精度PWM,4個(gè)超高速串口等豐富的外設(shè)滿足設(shè)計(jì)的要求[2]。通過PWM信號(hào)控制6個(gè)數(shù)字舵機(jī),即形成了雙足機(jī)器人的六個(gè)自由度,可以通過軟件實(shí)現(xiàn)前進(jìn)、后退、轉(zhuǎn)彎等基本動(dòng)作,并且可以通過動(dòng)作的組成形成舞蹈等套系動(dòng)作。利用YS-LDV7語音識(shí)別模塊通過串口連接主控芯片,實(shí)現(xiàn)語音的輸入和識(shí)別。利用SYN6288語音合成模塊通過主控芯片的串口輸出語音信號(hào)并有擴(kuò)音器進(jìn)行語音的播報(bào)。最終達(dá)到語音控制雙足機(jī)器人的動(dòng)作完成以及所執(zhí)行動(dòng)作語音的播報(bào)。
2.1系統(tǒng)動(dòng)作執(zhí)行單元設(shè)計(jì)與實(shí)現(xiàn)
該系統(tǒng)主要?jiǎng)幼鬏d體為6自由度雙足機(jī)器人,通過上位機(jī)軟件可以隨意調(diào)整機(jī)器人動(dòng)作狀態(tài),上位機(jī)界面如圖2所示,其中ID1-ID6為6個(gè)電機(jī)的編號(hào),可以調(diào)整電機(jī)的轉(zhuǎn)動(dòng)幅度,通過改變動(dòng)作的保持時(shí)間可以編排出相關(guān)動(dòng)作,本設(shè)計(jì)編排出“立正,前進(jìn),后退,左轉(zhuǎn),右轉(zhuǎn),舞蹈”六個(gè)動(dòng)作系列。通過上位機(jī)軟件編輯的工作組可生成相應(yīng)文件并下載到MCU的flash中,保存相應(yīng)的動(dòng)作組編號(hào)用于動(dòng)作執(zhí)行時(shí)函數(shù)的調(diào)用。本設(shè)計(jì)中對(duì)應(yīng)的六個(gè)動(dòng)作編號(hào)分別為0-5,通過void Full Act Run(uint8 actFullnum,uint32 times)函數(shù)調(diào)用存儲(chǔ)在flash中動(dòng)作組程序,針對(duì)不同參數(shù)可執(zhí)行相應(yīng)的動(dòng)作。
2.2語音識(shí)別模塊
該系統(tǒng)采用YS-LDV7語音識(shí)別模塊主要基于LD3320芯片[3],該模塊上采用STC11L08XE芯的單片機(jī)并且預(yù)留3.3V電源引腳以及串口連接引腳,模塊內(nèi)置咪頭。語音識(shí)別模塊工作原理框圖如圖3所示,語音模擬信號(hào)通過咪頭傳給LD3320芯片內(nèi)部,進(jìn)行頻譜分析、特征提取的數(shù)字信號(hào)傳送給語音識(shí)別器,然后將識(shí)別結(jié)果傳給STC11L08XE與動(dòng)態(tài)編輯識(shí)別列表中的關(guān)鍵詞進(jìn)行匹配,匹配成功即識(shí)別完成。該模塊采用了ASR非特定人識(shí)別技術(shù),在對(duì)語音信號(hào)特征信息提取后與外部存儲(chǔ)器中尋找最佳匹配的關(guān)鍵詞[4]。
本系統(tǒng)采用語音識(shí)別模塊的口令識(shí)別模式,即給語音識(shí)別模塊預(yù)設(shè)觸發(fā)指令“xiaoduo(小多)”,也就是說讓機(jī)器人做出動(dòng)作之前必須先收到觸發(fā)指令,Go_falg標(biāo)志位置1語音模塊才會(huì)啟動(dòng)下一個(gè)識(shí)別過程。在關(guān)鍵詞語列表中通過函數(shù)添加“l(fā)i zheng(立正)”,“qin jin(前進(jìn))”,“hou tui(后退)”,“zuo zhuan (左轉(zhuǎn))”,“you zhuan(右轉(zhuǎn))”,“wu dao(舞蹈)”。當(dāng)識(shí)別到合法的語音指令,模塊通過串口將語音數(shù)據(jù)包發(fā)送給雙足機(jī)器人MCU,MCU對(duì)接收到的語音包進(jìn)行解析,提取語音包的信息作為參數(shù)給動(dòng)作執(zhí)行函數(shù),達(dá)到語音控制的目的。語音包的數(shù)據(jù)包含數(shù)據(jù)頭(0-1位),有效數(shù)據(jù)(2-5位)和結(jié)束標(biāo)志(6-7位),將根據(jù)不同的語音信號(hào)發(fā)送相應(yīng)的數(shù)據(jù)存儲(chǔ)到Y(jié)uYin_data[8]數(shù)組中,對(duì)應(yīng)數(shù)據(jù)如表1所示。
2.3語音合成模塊
本系統(tǒng)采用的是SYN6288語音合成模塊[5],該模塊采用STC89LE52(STC51內(nèi)核)進(jìn)行編程實(shí)現(xiàn),用戶只需要配置好單片機(jī)的串口函數(shù),進(jìn)行修改移植。高模塊板載電源接口和串口收發(fā)接口,內(nèi)置推挽式DAC,可直接驅(qū)動(dòng)揚(yáng)聲器,進(jìn)行聲音播報(bào),達(dá)到與人交互的目的。圖4為語音合成模塊的連接框圖,機(jī)器人主控芯片通過串口與SYN6288語音合成模塊進(jìn)行數(shù)據(jù)收發(fā),語音合成模塊將收到數(shù)字信號(hào)通過功率放大接到揚(yáng)聲器進(jìn)行語音播報(bào),能實(shí)現(xiàn)中文的合成播報(bào)。該模塊部分可實(shí)現(xiàn)機(jī)器人接收到的動(dòng)作指令的語音播報(bào)以及錯(cuò)誤信息的播報(bào),給操作者提供給友好的交互平臺(tái)。
若語音識(shí)別模塊接收到并能正確解析處語音包時(shí),將對(duì)應(yīng)的語音包播報(bào)出來,如當(dāng)解析到“l(fā)i zheng(立正)”指令時(shí),利用void SYN_FrameInfo(uint8_t Music,uint8_t *HZdata)文本合成函數(shù)播報(bào)“準(zhǔn)備立正”。
3 ?系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件設(shè)計(jì)的編程環(huán)境是KEIL μVision5.14,建立51單片機(jī)的工程項(xiàng)目。流程圖如圖5所示,開始是系統(tǒng)初始化,單片機(jī)的包括串口,PWM,flash,中斷,定時(shí)等外設(shè)的初始化以及語音識(shí)別模塊和語音合成模塊的初始化。然后檢查整個(gè)系統(tǒng)電量是否過低起到一個(gè)低壓保護(hù)的作用,電壓過低蜂鳴器就會(huì)鳴叫,整個(gè)工作處于一個(gè)while循環(huán)中,檢測(cè)是否有語音信號(hào)的輸入,如果沒有語音信號(hào)的接收,整個(gè)系統(tǒng)處理低功耗狀態(tài),當(dāng)有收到“xiaoduo(小多)”的觸發(fā)語音信號(hào)后開始識(shí)別相應(yīng)的語音解析語音包,如果未能解析出相應(yīng)的正確語音,系統(tǒng)會(huì)播報(bào)“語音錯(cuò)誤”,當(dāng)解析出正確的語音信號(hào),信號(hào)會(huì)傳給語音合成模塊進(jìn)行相應(yīng)的語音播報(bào),窄足機(jī)器人就會(huì)執(zhí)行相應(yīng)的動(dòng)作程序,達(dá)到語音控制的功能和目的。
關(guān)鍵的任務(wù)代碼如下所示:
void TaskRun (void)
{
TaskTimeHandle ();
CheckBatteryVoltage ();
TaskPCMsgHandle ();
TaskBLEMsgHandle ();
TaskRobotRun ();
if( IsYuYin )
{
if(YuYinData[0] == 0x00) {
switch(YuYinData[1]) {
case 0x00: ? ? ? ? ? ?// 立正動(dòng)作
SYN_FrameInfo(0,"開始立正");
FullActRun(0,1);
case 0x01: ? ? ? ? ? ?// 前進(jìn)動(dòng)作
SYN_FrameInfo(0,"開始前進(jìn)");
FullActRun(1,1);
case 0x02: ? ? ? ? ? ?// 后退動(dòng)作
SYN_FrameInfo(0,"開始后退");
FullActRun(2,1);
case 0x03: ? ? ? ? ? ?// 左轉(zhuǎn)動(dòng)作
SYN_FrameInfo(0,"開始左轉(zhuǎn)");
FullActRun(3,1);
case 0x04: ? ? ? ? ? ?// 右轉(zhuǎn)動(dòng)作
SYN_FrameInfo(0,"開始右轉(zhuǎn)");
FullActRun(4,1);
case 0x05: ? ? ? ? ? ?// 舞蹈動(dòng)作
SYN_FrameInfo(0,"開始舞蹈");
FullActRun(5,1);
break;
default:
break;
}
}
其中,void SYN_FrameInfo(uint8_t Music,uint8_t *HZdata)為中文語音文本合成函數(shù),uint8_t Music參數(shù)為背景音樂,0表示沒有背景音樂,uint8_t *HZdata參數(shù)為合成文本的內(nèi)容;void FullActRun(uint8 actFullnum,uint32 times)為機(jī)器人執(zhí)行動(dòng)作函數(shù),uint8 actFullnum參數(shù)為執(zhí)行動(dòng)作編號(hào),uint32 times參數(shù)為執(zhí)行動(dòng)作的次數(shù)。
4 結(jié)束語
本文設(shè)計(jì)的是基于語音是被的機(jī)器人動(dòng)作控制系統(tǒng),以STC15W4K16S4單片機(jī)作為機(jī)器人運(yùn)動(dòng)和動(dòng)作主控芯片,通過語音識(shí)別模塊YS-LDV7識(shí)別語音信號(hào)中的特征參數(shù),并根據(jù)識(shí)別出的語音信號(hào)使機(jī)器人做出相應(yīng)動(dòng)作以及通過語音合成模塊SYN6288對(duì)相應(yīng)動(dòng)作進(jìn)行實(shí)時(shí)播報(bào)。該系統(tǒng)通過硬件和軟件的設(shè)計(jì)和配合,在測(cè)試中達(dá)到了語音控制機(jī)器人動(dòng)作的良好效果,為語音識(shí)別技術(shù)的應(yīng)用進(jìn)行了實(shí)踐,也為危險(xiǎn)環(huán)境探測(cè)和智能玩具領(lǐng)域產(chǎn)品提供了思路和參考。
參考文獻(xiàn):
[1] 管紅,張帥,類紅樂.智能語音機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2011,7(30):7498-7500.
[2] 劉立軍.基于STC15W4K60S4單片機(jī)LED開關(guān)電源控制器的設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2017,30(1):130-131.
[3] 車劉鑫,李崇斌,鐘卓霖,等.語音控制機(jī)器人的設(shè)計(jì)[J].電子制作,2018(23):3-5,100.
[4] 潘鋒.智能語音控制系統(tǒng)設(shè)計(jì)與研究[J].電子設(shè)計(jì)工程,2019,27(22):6-9,14.
[5] 常國權(quán),彭云峰.基于STC15單片機(jī)和SYN6288的機(jī)床語音報(bào)警系統(tǒng)設(shè)計(jì)[J].電子器件,2015,38(3):616-620.
【通聯(lián)編輯:唐一東】