.引言
隨著計算機技術的發(fā)展,單片機作為計算機的一個分支,廣泛用于工業(yè)控制、智能儀器、家用電氣、高科技玩具等領域。語音技術的發(fā)展,縮短了人機界面的距離,增強了互動性和智能性。具有語音識別功能的智能遙控小車,集語音識別、無線遙控、機械控制于一體。以單片機為主控元件,完成前進、后退、轉彎等預定的工作,但是一般的單片機不具備語音處理功能,需外掛專門的語音識別芯片,如采用集成語音識別芯片RSC-364來完成語音識別 [1],RSC-364是Sensory公司的一款8位MCU,很方便與51單片機連接,但是需要外接編解碼電路,使得電路復雜化。采用凌陽公司具有語音處理功能的SPCE061A作為控制核心可以方便的實現(xiàn)語音控制[2~3],但由于將SPCE061A單片機置于小車車體內, 在小車運行時,電機及周圍環(huán)境的噪音,會干擾對語音命令的識別,且距離稍遠便會出現(xiàn)小車“聽不到任何聲音”。本文采用凌陽SPCE061A單片機結合紅外線發(fā)射芯片TX-2B組成遙控部分,克服了芯片處于小車車體內會受到噪音影響的缺陷,對要實現(xiàn)遠距離無線語音控制的設備具有一定的參考價值。
1.系統(tǒng)總體結構
本系統(tǒng)主要包括語音識別模塊、紅外遙控模塊、電機驅動模塊。系統(tǒng)總體結構框圖如圖1所示。凌陽SPCE061A單片機負責語音識別,接收到有效語音信號,將語音信號轉換成數(shù)字信號傳送給紅外線發(fā)射芯片TX-2B,TX-2B發(fā)射的信號由紅外接收芯片RX-2B接收后,經(jīng)解碼控制電機驅動電路,從而實現(xiàn)對小車的遠距離語音遙控。 圖1系統(tǒng)總體結構框圖
500)this.style.width=500;" border="0" />
1.1語音識別
凌陽SPCE061A單片機是一個16位結構的控制器,具有DSP運算功能,內置8通道10位A/D及2路D/A轉換器,較高的處理速度使其能夠具有數(shù)字語音識別的能力。軟件編程采用C語言和匯編語言混合編程,集兩種語言之優(yōu)點于一體,簡化了編程過程[4~5]。SPCE061A將語音模擬信號直接轉換成電壓信號,再經(jīng)內置自動增益控制,內部ADC模塊將信號轉換為數(shù)字信號,經(jīng)編碼后存入存儲器,與存儲器中的原語音數(shù)字信號編碼匹配,進行模式識別,若識別成功,則相應的命令由61AIOA 0~IOA 3傳送給紅外發(fā)射芯片TX-2B的控制端。
1.2 紅外遙控
TX-2B/ RX-2B是士蘭公司生產(chǎn)的配對使用的紅外線發(fā)射和接收芯片,是一款專用于玩具小車的成對遙控芯片,采用CMOS工藝制造,功耗小,工作電壓1.5-5V。TX-2B/RX-2B內部己含有編碼電路和解碼電路,無需在后續(xù)的電路中對接收到的信號進行軟件編程解碼,因此硬件電路簡單。紅外發(fā)射電路如圖2所示,TX-2B中的1、4、5、14引腳分別為右轉(RIGHT)、后退(BACKWORD)、前進(FORWORD)、左轉(LEFT)控制端,接收從061A的IOA 0~IOA 3 發(fā)送的信號。紅外接收電路如圖3所示,RX-2B包括內置放大器、運算器及鎖存器等。外接250 kΩ電阻形成RC振蕩器,與發(fā)射電路的頻率匹配。RX-2B接收信號后,經(jīng)解碼后將右轉、左傳、后退、前進的控制信號由對應的引腳6、7、10、11輸出,傳送給電機驅動電路,控制小車產(chǎn)生相應的動作。
500)this.style.width=500;" border="0" />
1.3 電機驅動電路
小車為四輪結構,兩個前輪為轉向機構,控制小車左轉、右轉;兩個后輪為前進、后退驅動輪。兩個電機均采用直流小電機,驅動采用 H橋式功率驅動電路,該電路可以很方便的實現(xiàn)電機的正、反轉的變化 [6],從而控制小車的左右轉、前進、后退的狀態(tài)變化。由于電路簡單,這里不再贅述。
2.系統(tǒng)軟件設計SPCE061A提供了很好的語音播放和錄制機制以及簡單的API接口編程,大大簡化了小車的軟件設計。在此主要闡述,語音辨識(包括:語音訓練、語音識別)以及定時中斷控制部分的軟件設計。
2.1 語音辨識
凌陽SPCE061A將語音識別功能做成模塊,通過API函數(shù)調用來實現(xiàn),內帶的SACM-LIB解決了語音文件占用存儲空間大的問題。本設計采用SD模式,小車只能識別特定使用者的語音命令,語音辨識的過程包括語音訓練和語音識別 [7]。具體包括以下幾個步驟:
2.1.1 RAM初始化 調用int BSR_Delete SDGroup(0),用于SRAM初始化。當返回值為0,代表擦除成功。否則返回-1。
2.1.2 語音訓練調用int BSR_Train (int WordID, int TraindMode),用于上電后的語音命令訓練。 BSR_TRAIN_TWICE 表示每條指令訓練兩次。訓練成功,返回值為0。
2.1.3 語音辨識
調用int BSR_InitRecognizer(int AudioSource),用于語音識別器初始化。語音識別器打開8KH Z采樣頻率的FIQ_TMA中斷,開始將采樣的語音數(shù)據(jù)填入語音識別器的數(shù)據(jù)隊列中。
2.1.4 啟動實時監(jiān)控調用函數(shù)VoidBSR_EnableCPUIndicator(void) 啟動實時監(jiān)控,保證辨識器正常執(zhí)行。
2.1.5 獲取識別結果調用int BSR_GetResult(void),用于完成語音識別,并返回語音識別結果。返回值為0,無命令識別;返回值-1,識別器停止、未初始化;返回值-2,識別不合格;識別成功返回命令的序號。
2.1.6 停止識別調用void BSR_StopRecognizer(void),用于停止識別。調用此函數(shù)時,F(xiàn)IQ_TMA中斷關閉。
小車語音訓練流程圖如圖4所示。語音識別部分在main函數(shù)中,A口的設置即小車的邏輯控制部分放在InitIO.asm文件中。
500)this.style.width=500;" border="0" />
2.2 定時中斷 小車的運動控制采用語音控制和中斷定時控制相結合,通過語音觸發(fā)小車動作,小車行駛中可通過語音指令改變小車的運動狀態(tài)。在每一次動作觸發(fā)的同時啟動定時器,如果小車由于某些原因不能正常的接收語音指令,則定時時間一到,中斷服務程序就會發(fā)出指令讓小車停下來。
3.結束語
設計完成的小車經(jīng)測試,遙控有效距離可達 5米,對特定使用者語音識別可達95%以上,在有效范圍內小車能夠實時響應使用者的語音命令,實現(xiàn)前進、后退、左轉及右轉,且在每一次狀態(tài)改變時會有語音應答,增強了互動性。在 10秒內若沒有語音命令發(fā)布,小車會自動停止。
本設計的創(chuàng)新點在于采用了具有語音處理功能的凌陽 SPCE061A單片機與專用的紅外遙控芯片TX-2B結合形成遙控電路,將聲控與紅外遙控相結合,增強了小車抗噪音能力,也增加了小車的可控距離,并且系統(tǒng)的實現(xiàn)方便簡單。