基于凌陽SPCE061A單片機的音控小車的設計
語音識別主要分為“訓練”和“識別”兩個階段。在訓練階段,單片機對采集到的語音樣本進行分析處理,從中提取出語音特征信息,建立一個特征模型;在識別階段,單片機對采集到的語音樣本也進行類似的分析處理,提取出語音的特征信息,然后將這個特征信息模型與已有的特征模型進行對比,如果二者達到了一定的匹配度,則輸入的語音被識別。
語音識別小車過程分為以下4大部分:
(1)初始化部分:初始化操作將 IOB8~IOB11 設置為輸出端,用以控制電機。必要時還要有對應的輸入端設置。整個小車的行駛狀態(tài)由2個電機來控制,電機1控制左拐和右拐,電機2控制前進、倒退。具體行使狀態(tài)控制如表1所示。本文引用地址:http://www.butianyuan.cn/article/173580.htm
(2)訓練部分:訓練部分完成的工作就是建立語音模型。程序一開始判斷小車是否被訓練過,如果沒有訓練過則要求對其進行訓練,整個訓練過程共有 5 次,依次為:名稱―前進―倒車―左拐―右拐。在訓練成功之后將訓練的模型存儲到 FLASH,在以后使用時不需要重新訓練;如果已經訓練過會把存儲在 FLASH 中的模型調出來裝載到辨識器中。
(3)識別部分:在識別環(huán)節(jié)當中,如果辨識結果是名字,停止當前的動作并進入待命狀態(tài),然后等待動作命令。如果辨識結果為動作指令,小車會語音告知相應動作,并執(zhí)行該動作,在運動過程中可以通過呼叫小車的名字使小車停下來。
(4)重訓操作:考慮到有重新訓練的需求,設置了重新訓練的按鍵(61 板的 KEY3),循環(huán)掃描該按鍵,一旦檢測到此鍵按下,則將擦除訓練標志位(0xe000 單元),并等待復位。復位后,程序重新執(zhí)行,當檢測到訓練標志位為 0xffff 時會要求重新對其進行訓練。小車訓練流程圖如圖5所示[5]。
2. 2系統(tǒng)的軟件設計流程圖
系統(tǒng)的軟件設計流程如圖6所示。本設計采用C語言和匯編語言聯(lián)合編程的方法。其中,C語言作為主程序編程,可以充分利用C語言的優(yōu)點,調用其他程序模塊。匯編語言主要用在子程序的模塊中,利用它的中斷、延時等方面的優(yōu)點。匯編語言的主要優(yōu)點是占用硬件資源少、程序直接對硬件操作加快了處理速度。本設計的所有程序均在凌陽單片機集成開發(fā)環(huán)境IDE中進行。本系統(tǒng)的軟件部分采用模塊化程序結構,其軟件設計主要包括初始化、系統(tǒng)主程序、語音提示程序、小車微調程序等部分。
本文設計并制作的小車以凌陽單片機為控制核心,完成了語音辨識功能,并在實現(xiàn)語音控制的基礎上擴展了SPCE061AI/O接口,實現(xiàn)了緊急避障微調功能,能夠按照語音指令很好地完成前進、倒車、左轉、右轉以及倒庫。能夠識別人的語音命令,并根據(jù)命令的含義執(zhí)行相應的動作。整個部分設計合理,小車運行正常。
評論