朱向慶 朱萬鴻 何昌毅 甘海杰 陳澤銳
摘 要:文中設(shè)計(jì)可陪伴孩子聊天的機(jī)器人,以STM32F103ZET6單片機(jī)為控制中心,使用SYN7318語音識(shí)別模塊、PAJ7620手勢(shì)識(shí)別模塊、OpenMV3 Cam M7攝像頭模塊、WiFi模塊、HMI觸摸屏和GSM模塊等完成語音識(shí)別、合成,MP3播放,手勢(shì)、圖像獲取及識(shí)別,遠(yuǎn)程語音通話。實(shí)驗(yàn)結(jié)果證明,所提系統(tǒng)能對(duì)語音進(jìn)行準(zhǔn)確的識(shí)別,并做出相應(yīng)的動(dòng)作;識(shí)別到關(guān)鍵詞時(shí)開啟遠(yuǎn)程親子互動(dòng),家長(zhǎng)可通過智能手機(jī)遠(yuǎn)程查看兒童的狀態(tài)信息及相關(guān)圖片。系統(tǒng)性能良好,操作簡(jiǎn)便,成本低廉,適合在智能化市場(chǎng)推廣應(yīng)用。
關(guān)鍵詞:聊天機(jī)器人;手勢(shì)識(shí)別;語音識(shí)別;語音合成;圖像獲取;語音通話
中圖分類號(hào):TP273;TN915文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-1302(2020)01-00-04
0 引 言
目前,國(guó)內(nèi)外出現(xiàn)了眾多功能各異的聊天機(jī)器人,但是很多聊天機(jī)器人缺乏語料庫,只能在一定程度上解決人們的問題。在個(gè)別領(lǐng)域,人工智能的發(fā)展可以很快被應(yīng)用到聊天機(jī)器人身上,但是整體來說還有待加強(qiáng)[1]。而同時(shí)兼?zhèn)湔Z音、圖像及手勢(shì)識(shí)別功能的聊天機(jī)器人相對(duì)較少[2]。
現(xiàn)如今,很多家長(zhǎng)經(jīng)常都會(huì)因?yàn)楣ぷ鞣泵?,沒能照顧孩子,甚至讓孩子獨(dú)自留在家中,導(dǎo)致孩子嚴(yán)重缺乏與家長(zhǎng)的交流互動(dòng)。針對(duì)于此現(xiàn)象,專門設(shè)計(jì)一款可陪伴孩子聊天的機(jī)器人。它能夠與孩子進(jìn)行智能對(duì)話,模仿家長(zhǎng)回答孩子日常生活中所遇到的“為什么”,還可以通過實(shí)時(shí)監(jiān)控了解孩子的情緒問題并及時(shí)處理。本聊天機(jī)器人自帶智能攝像頭,能實(shí)時(shí)捕獲家里及孩子的情況,家長(zhǎng)可通過智能手機(jī)遠(yuǎn)程連接聊天機(jī)器人,與小孩進(jìn)行語音通話。同時(shí),聊天機(jī)器人含智能串口觸摸屏,可結(jié)合語音識(shí)別進(jìn)行相關(guān)界面的切換。
1 系統(tǒng)的硬件結(jié)構(gòu)
本系統(tǒng)硬件結(jié)構(gòu)如圖1所示,它以STM32F103ZET6微控制器為核心,搭載OpenMV3攝像頭模塊、USART HMI智能串口觸摸屏、GPRS/GSM模塊IoT-GA6、WiFi模塊ESP8266、手勢(shì)識(shí)別模塊PAJ7620、語音識(shí)別模塊SYN7318和舵機(jī)等。
STM32F103ZET6是意法半導(dǎo)體公司(ST公司)推出的一款以ARM Cortex-M3為內(nèi)核的32位微控制器,擁有144個(gè)引腳,112個(gè)通用I/O口,512 KB的FLASH ROM及64 KB的SRAM,具有3路12位的A/D轉(zhuǎn)換器,2路12位D/A輸出,4個(gè)通用定時(shí)器,2個(gè)高級(jí)定時(shí)器,2個(gè)基本定時(shí)器,3路SPI接口,2路I2C接口,5路USART,1個(gè)USB從設(shè)備接口,1個(gè)CAN接口,1個(gè)SDIO接口,兼容SRAM,NOR和NAND FLASH接口的16位總線FSMC[3-4]。STM32F103ZET6內(nèi)部資源豐富,完全滿足設(shè)計(jì)要求。
1.1 SYN7318語音識(shí)別模塊
語音服務(wù)采用龍邱科技的SYN7318 中文語音交互模塊,它集成非特定語音識(shí)別、語音合成、語音喚醒和MP3音頻播放功能[5]。SYN7318中文語音交互模塊的UART與STM32串口直接相連,接收命令幀,如控制命令幀、待合成的文本數(shù)據(jù),或?qū)⒄Z音識(shí)別結(jié)果發(fā)送給STM32單片機(jī)。
1.2 手勢(shì)識(shí)別模塊
手勢(shì)識(shí)別使用ATK-PAJ7620模塊,其內(nèi)部采用的PAJ7620U2傳感器是原相科技(Pixart)的一款內(nèi)部集成光學(xué)陣列式傳感器。該模塊具有體積小、功能多、反應(yīng)快等特點(diǎn),支持9種手勢(shì)識(shí)別,輸出速率高達(dá)240 Hz,支持接近檢測(cè)和物體大小識(shí)別,兼容3.3 V與5 V系統(tǒng)。STM32單片機(jī)通過I2C通信協(xié)議與ATK-PAJ7620模塊通信。
1.3 OpenMV3攝像頭模塊
聊天機(jī)器人采用OpenMV3 CAm M7攝像頭模塊獲取家里的圖像信息,OpenMV是低成本、可擴(kuò)展、基于MicroPython機(jī)器視覺的模塊,它是一個(gè)可編程的攝像頭,內(nèi)置一些圖像處理算法,通過MicroPython語言可以實(shí)現(xiàn)自定義邏輯[6-7]。OpenMV通過串口與STM32相連,完成數(shù)據(jù)交換。
1.4 MG90S舵機(jī)模塊
借助舵機(jī)MG90S控制攝像頭模塊,可以自動(dòng)切換攝像頭視角。MG90S舵機(jī)的控制信號(hào)是周期為20 ms的脈寬調(diào)制(PWM)信號(hào),其中脈沖寬度為0.5~2.5 ms,相對(duì)應(yīng)舵盤的位置為0°~180°,呈線性變化。STM32的PWM輸出口PC6連接舵機(jī)MG90S的控制線,通過輸出不同的占空比控制舵機(jī)的旋轉(zhuǎn)角度,完成攝像頭的視覺切換。
1.5 GPRS/GSM模塊
為實(shí)現(xiàn)語音通話服務(wù),使用GPRS/GSM模塊IoT-GA6,它支持2G,3G,4G的移動(dòng)卡或聯(lián)通卡,支持?jǐn)?shù)字音頻和模擬音頻,支持標(biāo)準(zhǔn)AT和TCP/IP命令,其尺寸小,功耗低,能提供完善的GPRS/GSM短信、數(shù)據(jù)傳輸及語音通話服務(wù)。為用戶提供遠(yuǎn)程互動(dòng)的語音通話功能。GPRS/GSM模塊控制方式為串口,它與STM32串口直接相連,以完成數(shù)據(jù)交換。
1.6 HMI顯示屏模塊
系統(tǒng)使用USART HMI智能串口觸摸屏實(shí)現(xiàn)人機(jī)交互,該觸摸屏具有解析度高、傳輸速度快、存儲(chǔ)空間大、穩(wěn)點(diǎn)性高、使用方便的優(yōu)點(diǎn)。觸摸屏封裝好底層功能以后,通過串口與用戶STM32單片機(jī)進(jìn)行交互。
單片機(jī)可以隨時(shí)通過串口發(fā)指令通知設(shè)備:切換某個(gè)頁面或者改變某個(gè)組件的屬性。設(shè)備也可以隨時(shí)通過串口通知操作者:目前觸摸頁面上的某個(gè)組件或者設(shè)備進(jìn)入某個(gè)頁面。
1.7 WiFi模塊
借助ESP8266 WiFi模塊和互聯(lián)網(wǎng),當(dāng)系統(tǒng)連接服務(wù)器后,家長(zhǎng)可以在手機(jī)端遠(yuǎn)程查看家庭狀況,或通過GPRS/GSM模塊與小孩通話,進(jìn)行遠(yuǎn)程互動(dòng)。WiFi模塊內(nèi)置樂鑫公司出品的物聯(lián)網(wǎng)芯片ESP8266。該模塊可工作于三種模式:AP模式、Station模式以及混合模式。STM32單片機(jī)通過串口連接WiFi模塊,使用AT指令進(jìn)行控制,完成通信[8-9]。
遠(yuǎn)程服務(wù)器工作框架如圖2所示,它使用百度智能云服務(wù)器及圖靈機(jī)器人服務(wù)器,其中百度智能云負(fù)責(zé)語音識(shí)別,圖靈機(jī)器人負(fù)責(zé)回答問題[10]。所有的數(shù)據(jù)都通過ESP8266模塊上傳至服務(wù)器,完成STM32與服務(wù)器的數(shù)據(jù)交換,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控及在線語音服務(wù)。
2 軟件設(shè)計(jì)與實(shí)現(xiàn)
為提高系統(tǒng)穩(wěn)定性和實(shí)時(shí)性,STM32單片機(jī)程序使用FreeRTOS操作系統(tǒng)[11],用Keil μVision 5軟件編寫,編譯生成的機(jī)器碼由ST-LinkV2仿真器下載至單片機(jī)[12];OpenMV的程序則采用Python語言設(shè)計(jì)[13]。
HMI觸摸屏使用USART HMI軟件編寫控件及指令代碼,編譯生成的*.tft文件放置于SD卡中,SD卡插進(jìn)HMI觸摸屏SD卡槽,HMI觸摸屏自帶的控制器會(huì)自動(dòng)讀取該文件完成燒寫功能,燒寫完成后斷電,拔掉SD卡即可。
2.1 FreeRTOS系統(tǒng)任務(wù)設(shè)計(jì)
FreeRTOS是一個(gè)輕量級(jí)的操作系統(tǒng),能夠簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短開發(fā)時(shí)間,并為系統(tǒng)提供實(shí)時(shí)性和可靠性[14-16]。
圖3是FreeRTOS系統(tǒng)各任務(wù)流程,開機(jī)后初始化各模塊及外部設(shè)備,并建立多個(gè)任務(wù)及其運(yùn)行環(huán)境,隨即開啟任務(wù)調(diào)度,始終運(yùn)行高優(yōu)先級(jí)任務(wù)。
2.1.1 任務(wù)1:語音聊天
任務(wù)1首先創(chuàng)建一個(gè)語音識(shí)別二值信號(hào)量,并用于任務(wù)同步。當(dāng)串口接收到語音喚醒指令后,釋放該信號(hào)量,系統(tǒng)立即任務(wù)同步,隨即啟動(dòng)錄音并把錄音文件上傳至百度語音服務(wù)器進(jìn)行識(shí)別,識(shí)別完成后將結(jié)果上傳至圖靈語音聊天服務(wù)器進(jìn)行匹配語音回答,最后播放語音回答。識(shí)別結(jié)果為相關(guān)操作時(shí),將控制系統(tǒng)對(duì)應(yīng)模塊。如果系統(tǒng)的WiFi模塊未連接上熱點(diǎn),那么將匹配自定義本地庫進(jìn)行語音回答。
2.1.2 任務(wù)2:手勢(shì)識(shí)別
任務(wù)2負(fù)責(zé)手勢(shì)識(shí)別,其能夠識(shí)別向上、向下、向左、向右、向前、向后、順時(shí)針、逆時(shí)針和揮動(dòng)共9種手勢(shì),同時(shí)還支持接近識(shí)別。當(dāng)檢測(cè)到人的相關(guān)手勢(shì)后,會(huì)執(zhí)行相應(yīng)的動(dòng)作。例如:當(dāng)檢測(cè)到人接近時(shí),自動(dòng)喚醒系統(tǒng),并通過SYN7318中文語音交互模塊合成提示語;當(dāng)檢測(cè)到手勢(shì)時(shí),執(zhí)行兒歌的播放、暫停、上一首、下一首等;當(dāng)檢測(cè)到人離開時(shí),系統(tǒng)進(jìn)入睡眠模式,以降低功耗。手勢(shì)識(shí)別每250 ms檢測(cè)一次,隨即切換為接近檢測(cè),兩種識(shí)別模式一直循環(huán)下去。
2.1.3 任務(wù)3:人機(jī)交互
任務(wù)3主要是人機(jī)交互界面的操控,接收語音及手勢(shì)的操控指令,進(jìn)行圖形化界面的切換。當(dāng)觸摸顯示屏相關(guān)界面的按鈕時(shí),會(huì)同步語音及攝像頭模塊進(jìn)行動(dòng)作。例如,在撥號(hào)界面時(shí),號(hào)碼的輸入及修改等操作由上位機(jī)編寫的固件程序自動(dòng)處理,只有點(diǎn)擊撥號(hào)按鈕,才向主控器發(fā)送撥號(hào)指令,主控器根據(jù)指令執(zhí)行相關(guān)模塊動(dòng)作,同時(shí)顯示屏與主控器實(shí)時(shí)交換數(shù)據(jù),同步圖形化界面的更新。最后任務(wù)掛起200 ms。
2.1.4 任務(wù)4:WiFi自動(dòng)重連
任務(wù)4以1 s的時(shí)間間隔檢查網(wǎng)絡(luò)狀態(tài),當(dāng)網(wǎng)絡(luò)斷開時(shí),系統(tǒng)自動(dòng)重連熱點(diǎn);當(dāng)系統(tǒng)連上互聯(lián)網(wǎng)后,與服務(wù)器交換數(shù)據(jù)。
2.1.5 任務(wù)5:圖像識(shí)別
任務(wù)5主要用于圖像識(shí)別后的相應(yīng)操作。系統(tǒng)的圖像識(shí)別功能可以識(shí)別小孩的面部表情和行為動(dòng)作,進(jìn)而進(jìn)行對(duì)應(yīng)的交流。當(dāng)OpenMV檢測(cè)某個(gè)自定義人臉(如孩子“哭”的表情)時(shí),就會(huì)將該表情信息傳遞到單片機(jī),接收到表情的單片機(jī)會(huì)將其與對(duì)應(yīng)的操作進(jìn)行匹配并做出對(duì)應(yīng)處理,如播放愉快的兒歌。用戶可以自定義錄入孩子不同時(shí)候的表情,再選擇不同的界面并播放不同的歌曲。每識(shí)別完一次表情,任務(wù)掛起2 s。
2.2 OpenMV程序設(shè)計(jì)
OpenMV是基于Python的嵌入式機(jī)器視覺模塊,它成本低、易拓展,開發(fā)環(huán)境友好,除了用于圖像處理外,還可以用Python調(diào)用其硬件資源,進(jìn)行I/O控制,與現(xiàn)實(shí)世界進(jìn)行交互。OpenMV的程序采用Python語言設(shè)計(jì),它負(fù)責(zé)圖像捕獲、追蹤和識(shí)別,并將圖像信息上傳到服務(wù)器。OpenMV程序流程如圖4所示,在程序開始時(shí),初始化ESP8266并捕獲攝像頭的圖像信息。若未捕獲到孩子的面部或動(dòng)作信息,會(huì)自動(dòng)調(diào)節(jié)舵機(jī),再次進(jìn)行圖像捕獲;若捕獲到孩子的面部或動(dòng)作信息,則將其與本地庫圖像進(jìn)行快速對(duì)比,直到匹配到最合適的庫,并輸出該庫的信息,通過串口傳輸?shù)絾纹瑱C(jī)。另外,當(dāng)OpenMV接收到服務(wù)器回傳的“監(jiān)控”信號(hào)后,會(huì)將此時(shí)捕獲的孩子圖像傳輸?shù)竭h(yuǎn)程服務(wù)器端,供家長(zhǎng)遠(yuǎn)程查看。
3 實(shí)驗(yàn)結(jié)果
圖5為硬件實(shí)物。實(shí)驗(yàn)結(jié)果證明,系統(tǒng)能夠正常運(yùn)行,可實(shí)現(xiàn)語音聊天,并且根據(jù)結(jié)果做出相應(yīng)的動(dòng)作。系統(tǒng)手勢(shì)識(shí)別準(zhǔn)確率高,圖像識(shí)別、語音通話、遠(yuǎn)程控制、監(jiān)控等運(yùn)行良好。語音識(shí)別率達(dá)到98%,識(shí)別后語音回答有2~3 s的延遲;圖像識(shí)別率達(dá)到95%,響應(yīng)延遲1~2 s。
4 結(jié) 語
本文通過互聯(lián)網(wǎng)、云服務(wù)器、圖像識(shí)別、語音識(shí)別和語音合成等技術(shù),成功研制出可陪伴孩子成長(zhǎng)的機(jī)器人。實(shí)驗(yàn)證明采用互聯(lián)網(wǎng)方式,語音及圖像的識(shí)別率都得到明顯提高。由于人的表情圖像具有動(dòng)態(tài)性,其識(shí)別效果良好。系統(tǒng)性能良好、實(shí)時(shí)性較高、成本較低,適合在智能化市場(chǎng)上推廣應(yīng)用。
參 考 文 獻(xiàn)
[1]朱思坤.聊天機(jī)器人對(duì)話一致性和可延續(xù)性的研究[D].重慶:重慶大學(xué),2018.
[2]王浩暢,李斌.聊天機(jī)器人系統(tǒng)研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(12):1-6.
[3]張勇.ARM Cortex-M3嵌入式開發(fā)與實(shí)踐:基于STM32F103[M].北京:清華大學(xué)出版社,2017.
[4]朱向慶,何昌毅,朱萬鴻,等.基于STM32單片機(jī)的通信技術(shù)實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2019,36(8):81-84.
[5]劉堯,祝小雅,胡安正.基于SYN7318語音識(shí)別的智能家居嵌入式控制系統(tǒng)設(shè)計(jì)與開發(fā)[J].電子制作,2019(12):18-19.
[6]劉義亭,董夢(mèng)超,黃家才,等.基于OpenMV的目標(biāo)跟蹤系統(tǒng)設(shè)計(jì)[J].南京工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,17(1):39-44.
[7]梅妍玭,傅榮.基于OpenMV的3D定位識(shí)別系統(tǒng)[J].新技術(shù)新工藝,2018(2):50-52.
[8]常欣,王琦.用STM32和ESP8266實(shí)現(xiàn)的可擴(kuò)展物聯(lián)網(wǎng)系統(tǒng)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2018,18(12):58-61.
[9]張延順,景加榮,黃濤,等.基于ESP8266的分子泵無線監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].工業(yè)儀表與自動(dòng)化裝置,2019(3):106-110.
[10]林承師.基于Java平臺(tái)與圖靈聊天機(jī)器人的接入實(shí)現(xiàn)[J].信息與電腦(理論版),2018(21):113 -116.
[11]朱迪.FreeRTOS實(shí)時(shí)操作系統(tǒng)任務(wù)調(diào)度優(yōu)化的研究與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),2015.
[12]夏傳東.淺談ST-LINK調(diào)試器的時(shí)間線調(diào)試技巧[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017,17(8): 25-28.
[13]劉鵬,張燕,李肖俊,等.Python語言[M].北京:清華大學(xué)出版社,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的智能用電監(jiān)控系統(tǒng)[J].電子設(shè)計(jì)工程,2017,25(21):157 -160.
[16]劉火良,楊森.FreeRTOS內(nèi)核實(shí)現(xiàn)與應(yīng)用開發(fā)實(shí)戰(zhàn)指南:基于STM32[M].北京:機(jī)械工業(yè)出版社,2019.