摘 要:設計一款能夠識別語音命令并進行簡單語音對話的兒童交互式智能小車,可提高兒童智能玩具的樂趣,培養兒童的創造思維。本文從軟、硬件設計方面具體闡述了特定人語音識別在智能小車上的實現過程,并說明了實驗測試方法。實驗表明:該系統對于小詞匯量、特定人識別系統,具有很好的識別效果。
關鍵詞:語音識別;SPCE061A單片機;語音控制;智能玩具
中圖分類號:TP391 文獻標識碼:A 文章編號:
1 引 言
玩具產業正在經歷著一場科技革命,未來玩具產業將朝著互動性、智能化、教育性、高科技含量的方向發展。傳統玩具功能單一,一般只滿足娛樂的要求。要開發有創意有賣點的玩具,則要強調玩具的多功能性,使它能滿足娛樂、科學、智力和思想教育等多種功能的需要。計算機技術、微電子技術、微傳感技術與機械技術相結合,使得玩具更富有生機和變幻神奇[1]。本系統利用凌陽SPCE061A單片機作為控制核心,使電動小車能夠識別特定人的語音命令,小車接收語音命令后,就能進行識別并產生相應的動作,從而使小車具備了智能性和可娛樂性。這種語音控制的智能小車不僅可以成為兒童的智能玩具,稍加擴展,就可以在多種不適合人作業的場合替代人執行任務,這種語音控制小車具有重要的學術研究價值。
2 系統設計
2.1 系統總體方案設計
本系統采用 SPCE061A單片機實現語音控制小車方案。于SPCE061A 內部具有語音識別和語音播放功能,所以只需要擴展基本的MIC和語音功放即可,該方案結構如圖 2 所示。
2.2 系統硬件設計
凌陽SPCE061A是一款凌陽科技公司研發生產的一款16位單片機。SPCE061A主要包括u`nSP處理器、32K FLASH、定時器與計數器、A/D轉換與D/A轉換器、串行設備I/O、ICE接口、通用異步串行接口等。SPCE061A內的u`nSP處理器的運行速度快,能夠快速地處理復雜的語音信號。因此,SPCE061A單片機非常適用應用于語音識別系統。本系統硬件組成主要包括以下三個部分:SPCE061A 精簡開發板、超聲波模塊、電機驅動電路。硬件系統結構如圖3所示。圖中的語音輸入部分 MIC_IN、按鍵輸入 KEY、聲音輸出部分的功率放大環節等已經做到了精簡開發板——61板上,為用戶使用提供了很大的方便。在電機的驅動方面,采用全橋驅動技術,利用四個 I/O 端口分為兩組分別實現兩個電機的正傳、反轉和停止三態運行[2]。
2.2.1 超聲波模塊設計
超聲波是頻率高于20KHz的機械波,超聲波傳感器由發送器和接收器組成。超聲波測距原理框圖如圖4所示。超聲波發送器向向某一方向發射超聲波,在發射超聲波的同時開始計時,超聲波在空氣中傳播時碰到障礙物就立即返回來,在超聲波接收器收到反射波就停止計時,超聲波傳感器測出超聲波從發射到遇到障礙物返回所經歷的時間,將時間乘以超聲波的速度再除以2就得到了聲源到障礙物之間的距離[3]。
2.2.2 小車驅動電路設計
小車驅動電路如圖5所示。IOB8---IOBll主要是控制小車“前進”、“后退”、“左轉”和“右轉”需要的信號,IOB14和IOB15為控制輸出使能。 O_1、O_2、O_3、O_4為輸出接電機的兩個電機。通過輸出口的電平控制電機的轉向。
2.3 語音處理過程及其軟件設計
語音處理過程包括語音識別與語音提示過程和語音命令模型庫訓練。其中,語音識別與提示的主程序復雜,限于篇幅,我們只對其主程序框圖進行設計。在語音命令模型庫訓練方面,由于SPCE061A配有專用的麥克接口用于語音訓練和辨識階段的語音輸入,16位的定時/計數器用于語音信號的控制采樣,內置的硬件乘法器和內積運算保證了辨識算法的運行。在軟件方面,凌陽科技提供一個語音辨識函數庫bsrv222SDL.lib,它能夠完成特定人語音的連續辨識,包括訓練函數和辨識函數,還可以將訓練好的特征模型導入和導出等[4]。
2.3.1 語音命令模型庫訓練過程
本系統的語音命令模型庫訓練過程框圖如圖6所示。具體過程說明如下:語音輸入是采用SPCE061A系統采集語音信號,當對著傳聲器講話時,隨著傳聲器輸入的聲音產生變化的波形,并在SPCE061A的兩個端口處形成兩路反相的波形,再送到SPCE061A控制器內部的運算放大器進行音頻放大。預處理包括模數轉換、自動增益控制、預加重等處理過程。特征提取就是從原始的語音信號中抽取能夠反映語音本質的特征參數,形成特征矢量序列。語音信號是由很多幀組成,語音信號的一個幀就類擬一個矢量,矢量量化就是將這一個一個幀映射為量化矢量(數碼)。矢量量化以后語音信號經過模板訓練電路進入語音命令模板庫,最后完成整個訓練過程。
2.3.2 語音識別和語音提示
本系統中的語音識別與語音提示過程由預處理、特征提取、矢量量化、模板匹配和語音
提示輸出等部分組成,具體實現的原理框圖如圖7所示。其中預處理、特征提取、矢量量化三個模塊的算法和模型庫訓練時的算法一樣。在本系統中,控制程序和語音命令模板庫保存在SPCE061A的Flash存儲器內中。由于單片機內的Flash存儲器的容量是有限的,如果用戶要使小車的運行過程較多,即控制小車運行有很多的的語音命令,那么,我們要對Flash存儲器容量進行擴充。擴充的方法是將控制小車運行的語音命令模板庫或碼字保存在外部存儲器內,需要的時候再將語音信息調入單片機的Flash存儲器。模板匹配采用隱馬爾科夫模型的識別算法(Viterbi算法),這是一種概率論模型,它已成功地使用在語音識別系統中。語音提示輸出可以使用凌陽公司為用戶編制的API函數[5]。
2.3.3語音識別主程序設計
本系統的主程序流程圖由I/O端口設置、語音訓練、語音識別、語音再訓練四個部分組成。各部分的工作情況如下:
(1)I/O端口設置:由于本系統有16個I/O端口,有些端口用于輸入,有些端口用于輸出,有些端口閑置不用,所以,我們必須對輸入輸出端口進行設置。為了控制小車電機的“前進”、“后退”、“左轉”和“右轉”運行,在本系統的主程序中將IOB8~IOBll設置為輸出端口。將其它端口設置為輸入端口或PWM端口,保證語音信號和控制信號的輸入與輸出。
(2)語音訓練:語音訓練過程就是建立語音模板庫的過程。先判斷小車是不是以前被用戶訓練,如果被用戶訓練過,則不必訓練,并將訓練過的命令加載到SPCE061A的辨識器內,再用相應的語音命令控制小車的運行,使小車處于智能控制狀態;如果小車沒有被用戶訓練過,則系統提示對小車進行語音訓練,根據提示情況將小車訓練成功,最后把訓練好的語音命令存儲到SPCE061A的辨識器內,以便對小車進行語音控制。
(3)語音識別:在語音識別的過程中,如果辨識錯誤,小車會停止運行而處于等待狀態,等待用戶發出進一步的語音控制命令。如果辨識結果正確,小車會語音會發出提示音,告知所進行的動作并執行該動作。保證了小車按用戶預先訓練的語音控制命令正常工作。
(4)語音再訓練:考慮到用戶有再訓練的要求,系統設置了“再訓練”的按鈕。系統不斷地掃描“再訓練”的按鈕,如果用戶按下了該按鈕而被系統檢測到,那么系統清除訓練標志位,等待用戶按“復位鍵”。用戶進行復位后,再重新進行語音訓練與識別。
3 系統調試
3.1 模塊調試
(1)用PROBE下載61單片機的自檢程序,檢測IO、ADC及MIC口是否自檢成功。因為自檢不成功,后面燒寫的程序將無法正常工作。
(2)上述自檢成功后,接下來檢測電機驅動模塊是否正常。編寫一個簡單程序讓IOB8、IOB9、IOB10、IOB11同時輸出高,依次用杜邦線接到驅動電路上的IN1、IN2、IN3、IN4。讓L298N的ENA和ENB接入VCC,然后L298N的輸出端O1~O4接到直流電機的引腳上。下載程序運行,觀察是否兩個電機同時同向轉動,若是同抽轉動,表明電機驅動模塊沒問題。
(3)調試小車轉彎程序。小車轉彎時一個電機正轉另一個反轉。根據L298N的輸入端和單片機的輸出引腳及L298N的輸出實際情況賦值,*P_IOB_Date輸出不同的組合,注意*P_IOB_Date中有且僅有兩位為1(二進制)。
(4)小車定時控制的調試。小車接收到命令后運行的時間由一個定時器控制定時時間到就給*P_IOB_Date=0x0000.小車停止,這樣通過調節定時器的初值就可確定小車運行多長時間自動停止[6]。
3.2 系統整體調試
在模塊程序調試成功后,在組合起來進行整體調試,系統整體調試過程如圖9所示。從PC機上下載好程序,將下載線拔去,按復位鍵進行復位,小車會發出提示信息,要求對它進行訓練。訓練采用應答形式,規定每輸入一條指令讓小車訓練兩次。當訓練模式啟動后,系統播放語音提示,提示用戶語音訓練已啟動,接下來用戶可按照系統提示依次對各條命令進行訓練,在訓練過程中,如訓練成功則由語音提示進行下一條命令進行訓練,若失敗,也會提示用戶繼續訓練此條語音,全部命令訓練完畢后系統將準備進行語音辨識;當向控制器發出語音命令時,聲波通過麥克端口輸入,將相應的信號傳遞到SP-CEO61A處理芯片,經編解碼電路和數字信號處理后,在芯片中通過相關程序與預先植入的語音庫中的命令進行比較辨識,根據辨識的結果進行判斷,轉換為能被系統辨識的信號,從而對被監控系統進行控制。
4 結論
雖然本系統實現了特定的功能,滿足了用戶的要求,但系統并不十分完美,至少還存在兩個方面的問題需要改進:第一,我們使用了凌陽SPCE061A開發板,但開發板上的許多資源沒有被充分利用,造成了資源的浪費,并且購買的開發板的價格偏高,這增加了生產成本;第二,系統在特定人、孤立詞識別領域中有較好的識別效果,但在非特定人、連續詞領域中識別效果會明顯下降。針對以上問題,我們提出的改進措施是:第一,定制專用的PCB板,充分利用資源,降低生產成本;第二,優化語音識別算法,增加系統的適應范圍,提高語音識別效率。我們相信,經過后續的研發,這些問題會得到解決,系統會一步步走向完善。
參考文獻
[1] 姚力寧,應放天,應佳偉.兒童智能玩具的設計策略模型[J].包裝工程,2009,08
[2] 郭娜娜.基于凌陽SPCE061A單片機的音控小車的設計 [J].信息化縱橫,2012,01
[3] 魏曉鋒.基于嵌入式的語音小車的設計與實現[J]長春師范學院學報,2010,06
[4] 李建新.基于SPCE061A的語音手動雙控制開關的設計[J].信息技術,2010,07
[5] 胡瑞強,張毅剛.單片機課程設計教學改革探討[J].實驗科學與技術,2011,10
[6] 梁光勝,叢欣.嵌入式語音識別技術[J].現代計算機,2010,09