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