錢平 馬建圓 李子龍 劉鋒



摘要:本文設計了基于語音識別的機器人動作控制系統。該系統機器人動作執行部分以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.
【通聯編輯:唐一東】