版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p><b> 摘要</b></p><p> 引言。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(1)</p><p>
2、 概述。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(1)</p><p> 系統(tǒng)設(shè)計(jì)思路。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(1)</p><p
3、> 語(yǔ)音識(shí)別機(jī)器人的設(shè)計(jì)及技術(shù)要求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(2)</p><p> 設(shè)計(jì)要求。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(2)</p><p> 技術(shù)要求。。。。。。。。。。。。。。。。。。。。。。。
4、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(2)</p><p> 總體設(shè)計(jì)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(3)</p><p> 硬件設(shè)計(jì)。。。。。。。。。。。。。。。。。。。。。。。。。。
5、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(3)</p><p> 硬件控制系統(tǒng)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(3)</p><p> 電源模塊。。。。。。。。。。。。。。。。。。。。。。。。。。
6、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(4)</p><p> 電機(jī)驅(qū)動(dòng)模塊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(4)</p><p> 語(yǔ)音模塊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
7、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(5)</p><p> 算法和軟件設(shè)計(jì)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(6)</p><p> 算法。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
8、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(6)</p><p> 軟件設(shè)計(jì)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(6)</p><p> 擦除Flash 模塊。。。。。。。。。。。。。。。。。。。。。。。。。。。
9、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(8)</p><p> 位操作模塊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(9)</p><p> 語(yǔ)音識(shí)別函數(shù)的設(shè)計(jì)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
10、。。。。。(9)</p><p> 走路、跳舞等其他函數(shù)模塊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(11)</p><p> 功能測(cè)試及測(cè)試結(jié)果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(11)</p><p> 功能測(cè)
11、試。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(11)</p><p> 測(cè)試結(jié)果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(11)</p><p> 結(jié)語(yǔ)。。。。
12、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(12)</p><p> 參考文獻(xiàn)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(12)</p><
13、;p> Abstract。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(13)</p><p> 附錄。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。(1
14、3)</p><p> 基于凌陽(yáng)單片機(jī)的語(yǔ)音識(shí)別機(jī)器人的設(shè)計(jì)</p><p> 摘要:基于凌陽(yáng)SPCE061A單片機(jī)在語(yǔ)音識(shí)別處理方面的優(yōu)勢(shì),設(shè)計(jì)完成了一個(gè)基于SPCE061A為核心的語(yǔ)音識(shí)別機(jī)器人控制系統(tǒng)。在經(jīng)過(guò)訓(xùn)練后使機(jī)器人具有語(yǔ)音識(shí)別能力,可根據(jù)訓(xùn)練人的特定命令完成一系列動(dòng)作。</p><p> 關(guān)鍵詞:SPCE061A單片機(jī);凌陽(yáng)單片機(jī);語(yǔ)音識(shí)別;機(jī)器
15、人</p><p><b> 1 引言</b></p><p> 隨著計(jì)算機(jī)處理能力的不斷提高,語(yǔ)音識(shí)別技術(shù)得到了迅速發(fā)展,支持語(yǔ)音識(shí)別的各種產(chǎn)品紛紛面世。人類(lèi)實(shí)現(xiàn)了用語(yǔ)音命令控制電視、空調(diào)、燈光、自動(dòng)窗簾等的使用,使人們的生活“隨音所欲”,更加舒適,更加便捷。研究工業(yè)控制和信息家電領(lǐng)域的語(yǔ)音識(shí)別技術(shù),開(kāi)發(fā)實(shí)用的語(yǔ)音識(shí)別和控制系統(tǒng),對(duì)于語(yǔ)音識(shí)別技術(shù)的普及與應(yīng)用具有
16、十分重要的意義。</p><p><b> 2 概述</b></p><p> 本文介紹了一個(gè)以凌陽(yáng)公司的微控制器SPCE061A單片機(jī)為控制核心,附加一定外圍電路組成的語(yǔ)音控制機(jī)器人系統(tǒng)。</p><p> 2.1 系統(tǒng)設(shè)計(jì)思路</p><p> 針對(duì)機(jī)器人的特點(diǎn),本文結(jié)合凌陽(yáng)單片機(jī)的優(yōu)點(diǎn)來(lái)進(jìn)行設(shè)計(jì)。該設(shè)計(jì)分硬
17、件和軟件兩部分,首先編寫(xiě)出相應(yīng)的控制程序,在軟件上進(jìn)行編譯、仿真,正確無(wú)誤了,下載到實(shí)驗(yàn)箱中進(jìn)行二次驗(yàn)證,全部沒(méi)有問(wèn)題了,最后開(kāi)始硬件電路板的設(shè)計(jì)。因此在本設(shè)計(jì)中軟件部分是最為重要的環(huán)節(jié),在后續(xù)章節(jié)有詳細(xì)說(shuō)明。在軟件設(shè)計(jì)中秉承匯編語(yǔ)言的快速直接的特點(diǎn),C語(yǔ)言的代碼清晰、易于維護(hù)、模塊化較好的特點(diǎn),首先編寫(xiě)主程序,然后編寫(xiě)各個(gè)單獨(dú)的控制模塊的程序,最后綜合在一起,構(gòu)成完整的語(yǔ)音控制機(jī)器人程序。</p><p>
18、當(dāng)然使用其他單片機(jī)也可以設(shè)計(jì)機(jī)器人語(yǔ)音識(shí)別系統(tǒng),但是凌陽(yáng)單片機(jī)更適于機(jī)器人開(kāi)發(fā),它以16位計(jì)算機(jī)為核心,集成不同規(guī)模的RAM、ROM和其他豐富的功能電路,我們可以根據(jù)自己需要選擇集成了特定功能電路的凌陽(yáng)單片機(jī)。凌陽(yáng)單片機(jī)指令系統(tǒng)提供出具有較高運(yùn)算速度的16位,16位的乘法運(yùn)算指令和內(nèi)積運(yùn)算指令,為其應(yīng)用添加了DSP功能,由此凌陽(yáng)適合進(jìn)行語(yǔ)音識(shí)別。在我國(guó)凌陽(yáng)單片機(jī)在學(xué)校比較常見(jiàn),有較多的應(yīng)用實(shí)例可作為參考,這些是其他單片機(jī)所不具備的優(yōu)勢(shì),
19、因此選擇凌陽(yáng)單片機(jī)來(lái)設(shè)計(jì)。</p><p> 單片機(jī)一般支持匯編語(yǔ)言,但是全部采用匯編語(yǔ)言編程工作量又大, 而采用高級(jí)語(yǔ)言編程速度達(dá)不到要求??紤]到匯編語(yǔ)言沒(méi)有高級(jí)語(yǔ)言要占用較大的存儲(chǔ)空間和較長(zhǎng)的運(yùn)行時(shí)間等缺點(diǎn),它的運(yùn)行速度快是高級(jí)語(yǔ)言所不能比擬的,我們此時(shí)可以采用"混合"編程,彼此相互調(diào)用,進(jìn)行參數(shù)傳遞,共享數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)信息,是一種有效的編程方法。這種方法可以發(fā)揮各種語(yǔ)言的優(yōu)勢(shì)和特點(diǎn),充
20、分利用現(xiàn)有的多種實(shí)用程序、庫(kù)程序等使軟件的開(kāi)發(fā)周期大大縮短。除了匯編語(yǔ)言,SPACE61A的開(kāi)發(fā)環(huán)境還支持C語(yǔ)言,提供了C函數(shù)庫(kù),并支持C和匯編函數(shù)的相互調(diào)用,所以設(shè)計(jì)采用凌陽(yáng)SPCE061A單片機(jī)。 </p><p> 2.2 語(yǔ)音識(shí)別機(jī)器人的設(shè)計(jì)及技術(shù)要求</p><p> 2.2.1 設(shè)計(jì)要求</p><p> 利用SPCE061A 單片機(jī)、機(jī)器人機(jī)體(
21、包括2 個(gè)用于走路的電機(jī)、1 個(gè)用于頭部旋轉(zhuǎn)的電機(jī)、1個(gè)用于加速1 個(gè)用于彈射的電機(jī)等),要求語(yǔ)音識(shí)別機(jī)器人具有下述功能:</p><p> (1)通過(guò)語(yǔ)音命令對(duì)其進(jìn)行控制。</p><p> (2)兩種跳舞模式。</p><p> (3)走步功能、轉(zhuǎn)向功能、轉(zhuǎn)頭功能。</p><p> (4)發(fā)射飛盤(pán)功能。</p>&
22、lt;p><b> 2.2.2技術(shù)要求</b></p><p> 要求智能機(jī)器人可以識(shí)別15 條命令。</p><p> 要求智能機(jī)器人具有2 種跳舞模式。</p><p><b> 3 總體設(shè)計(jì)</b></p><p> 整個(gè)系統(tǒng)采用SPCE061A做為控制核心,外加音頻輸入輸出模
23、塊和電機(jī)驅(qū)動(dòng)模塊,對(duì)機(jī)器人的電機(jī)、燈(眼睛)、揚(yáng)聲器等進(jìn)行控制。系統(tǒng)的總體框圖如圖1所示。</p><p><b> 圖1 系統(tǒng)整體框圖</b></p><p> 電源模塊:為機(jī)器人提供動(dòng)力來(lái)源;</p><p> 驅(qū)動(dòng)模塊:將單片機(jī)信號(hào)進(jìn)行功放,驅(qū)動(dòng)電機(jī);</p><p> 語(yǔ)音模塊:識(shí)別、處理語(yǔ)音信號(hào),在跳舞
24、過(guò)程中伴音;</p><p> 機(jī)器人模塊:設(shè)計(jì)為人形,是完成一系列動(dòng)作的載體;</p><p><b> 4 硬件設(shè)計(jì)</b></p><p> 4.1 硬件控制系統(tǒng)</p><p> 控制系統(tǒng)主要由 61 板與機(jī)器人驅(qū)動(dòng)電路構(gòu)成。61 板作為整個(gè)系統(tǒng)的主控板,驅(qū)動(dòng)電路驅(qū)動(dòng)電機(jī)。在主控板61板的控制下完成各個(gè)動(dòng)
25、作。另外增加了特定人語(yǔ)音識(shí)別的功能,通過(guò)命令來(lái)控制機(jī)器人,使機(jī)器人 智能化,圖2為SPCE061A與機(jī)器人的連接圖。</p><p> 圖2 SPCE061A與機(jī)器人的連接圖</p><p><b> 4.2 電源模塊</b></p><p> SPCE061A的內(nèi)核供電為3.3V,而I/O端口可接3、3V也可以接5V。本系統(tǒng)需要的端口高
26、電平為5V,所以采用4節(jié)干電池供電(5V左右)。5V直流電壓直接通過(guò)SPYO029(相當(dāng)于一般3.3V穩(wěn)壓器)穩(wěn)壓到3.3V,為整個(gè)系統(tǒng)提供了5V和3.3V兩種電平的電壓。SPYO029是凌陽(yáng)公司設(shè)計(jì)的電壓調(diào)整IC,采用CMOS工藝,具有靜態(tài)電流低、驅(qū)動(dòng)能力強(qiáng)、線(xiàn)性調(diào)整出色等特點(diǎn)。SPY0029的最大輸入電壓+7V,最大輸出電流50mA。</p><p> 4.3 電機(jī)驅(qū)動(dòng)模塊</p><p
27、> 機(jī)器人驅(qū)動(dòng)電路圖3如所示:</p><p> 圖3 機(jī)器人驅(qū)動(dòng)電路圖</p><p> 機(jī)器人驅(qū)動(dòng)電路采用功率較大的三極管搭成H 橋來(lái)驅(qū)動(dòng)電機(jī),可以實(shí)現(xiàn)電機(jī)的正向旋轉(zhuǎn)與電機(jī)的反向旋轉(zhuǎn)。這些電機(jī)包括2 個(gè)用于走路的電機(jī)與一個(gè)頭部轉(zhuǎn)向的電機(jī)。另外用了一個(gè)三極管驅(qū)動(dòng)單向旋轉(zhuǎn)的電機(jī),包括加速電機(jī)與發(fā)射電機(jī),驅(qū)動(dòng)電路比較簡(jiǎn)單。</p><p><b>
28、; 4.4 語(yǔ)音模塊</b></p><p> 為簡(jiǎn)化結(jié)構(gòu),語(yǔ)音模塊直接裝在單片機(jī)電路板上。凌陽(yáng)SPCE061A 單片機(jī)在語(yǔ)音識(shí)別和處理方面有其獨(dú)到之處,而且開(kāi)發(fā)環(huán)境簡(jiǎn)單。外界的模擬信號(hào)必須經(jīng)過(guò)數(shù)字化處理才能轉(zhuǎn)換成機(jī)器所能識(shí)別的信號(hào),即語(yǔ)音的壓縮編碼技術(shù)。語(yǔ)音壓縮編碼中的數(shù)據(jù)量表達(dá)式為:數(shù)據(jù)量=[(采樣頻率* 量化位數(shù))/8]* 聲道數(shù)。</p><p> 壓縮編碼的目的
29、是通過(guò)對(duì)數(shù)據(jù)的壓縮,達(dá)到高效率的存儲(chǔ)可轉(zhuǎn)換數(shù)據(jù),即在保證一定音質(zhì)的條件下以最小數(shù)據(jù)量來(lái)表達(dá)可傳遞聲音信息。常用的音頻形式和壓縮算法有: 波形編碼、參量編碼和混合編碼三種。</p><p> 語(yǔ)音識(shí)別功能如圖4 所示。</p><p> 圖4 語(yǔ)音識(shí)別功能圖</p><p><b> 5.算法和軟件設(shè)計(jì)</b></p><
30、;p><b> 5.1 算法</b></p><p> (1)接收到控制信號(hào)時(shí),首先由單片機(jī)對(duì)信號(hào)作出判斷;</p><p> (2)前進(jìn)時(shí)或停止時(shí),均由單片機(jī)發(fā)出指令驅(qū)動(dòng)相關(guān)電動(dòng)機(jī)實(shí)現(xiàn)動(dòng)作;</p><p> (3)轉(zhuǎn)彎時(shí),單片機(jī)只向一個(gè)電動(dòng)機(jī)發(fā)出脈沖實(shí)現(xiàn)轉(zhuǎn)彎,轉(zhuǎn)到所需角度后,發(fā)出停止信號(hào);</p><p&g
31、t; (4)當(dāng)頭部需轉(zhuǎn)動(dòng)時(shí),單片機(jī)向頭部電機(jī)發(fā)出正轉(zhuǎn)或反轉(zhuǎn)信號(hào),動(dòng)作執(zhí)行完畢由單片機(jī)控制結(jié)束;</p><p> (5)在需要播放聲音的時(shí)候,單片機(jī)調(diào)用聲音處理程序,查找相應(yīng)譯碼隊(duì)列并播放。</p><p><b> 5.2 軟件設(shè)計(jì)</b></p><p> 將所有的動(dòng)作和聲音信息全部保存在控制系統(tǒng)中,并通過(guò)單片機(jī)統(tǒng)一控制,從而實(shí)現(xiàn)機(jī)
32、器人自動(dòng)控制。程序流程如圖5 所示。</p><p><b> 圖5 流程圖</b></p><p> 判斷是否為第一次下載根據(jù) FLASH 中的標(biāo)志位來(lái)進(jìn)行判斷。將訓(xùn)練好的語(yǔ)音模型導(dǎo)出存儲(chǔ)到 FLASH中使用庫(kù)函數(shù) BSR_ExportSDWord(uiCommandID);進(jìn)行操作,然后再調(diào)用讀寫(xiě) FLASH 中的函數(shù)進(jìn)行。在進(jìn)行語(yǔ)音識(shí)別時(shí),首先讀取 FLAS
33、H 將語(yǔ)音模型取得,然后調(diào)用 BSR_ImportSDWord(uiCommandID);函數(shù)將語(yǔ)音資源載入內(nèi)存。在識(shí)別出命令后,執(zhí)行相關(guān)動(dòng)作,相關(guān)動(dòng)作操作就是操作電機(jī)的正向或反向旋轉(zhuǎn)同 時(shí)配合延時(shí)與播放聲音組合起來(lái)形成不同的動(dòng)作。</p><p> 5.2.1 擦除Flash 模塊</p><p> 在程序中按照操作SPCE061A 的flash 的步驟擦寫(xiě)flash,在程序中寫(xiě)成3
34、 個(gè)函數(shù)用于操作flash,如下:</p><p> F_FlashWrite1Word()</p><p> 語(yǔ)法:void F_FlashWrite1Word(int addr,int Value)</p><p> 描述:寫(xiě)一個(gè)字到FLASH 中</p><p> 參數(shù):1、被寫(xiě)數(shù)據(jù)的存儲(chǔ)地址</p><p&
35、gt;<b> 2、被寫(xiě)數(shù)據(jù)</b></p><p><b> 返回:無(wú)</b></p><p> F_FlashWrite()</p><p> 語(yǔ)法:F_FlashWrite(int sector,int &num,int size)</p><p><b> 描述:
36、順序?qū)懚鄠€(gè)字</b></p><p> 參數(shù):1、被寫(xiě)數(shù)據(jù)的起始地址</p><p><b> 2、被寫(xiě)數(shù)據(jù)</b></p><p><b> 3、寫(xiě)數(shù)據(jù)的數(shù)量</b></p><p><b> 返回:無(wú)</b></p><p>
37、F_FlashErase()</p><p> 語(yǔ)法:void F_FlashErase(sector)</p><p> 描述:擦除256 字節(jié)</p><p> 參數(shù): 擦除頁(yè)的起始地址</p><p><b> 返回:無(wú)</b></p><p> 5.2.2 位操作模塊</p
38、><p> 由于SPCE061A 沒(méi)有位操作指令,而在程序控制電機(jī)的時(shí)候需要經(jīng)常操作某一位,為了方便程序的編寫(xiě),增強(qiáng)可讀性,編寫(xiě)了位操作模塊。</p><p> 函數(shù)void Set_IOB_Bit(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int);</p><p> 參數(shù)依次為IO
39、 的位、Dir、Attrib、Data、Buffer</p><p> 例如操作IOB11 為同相低電平輸出為Set_IOB_Bit(11,1,1,0,0);</p><p> 5.2.3 語(yǔ)音識(shí)別函數(shù)的設(shè)計(jì)</p><p> SPACE61A是將 A/D、編碼算法、解碼算法、存儲(chǔ)及 D/A 作成相應(yīng)的模塊,對(duì)于每個(gè)模塊都有其應(yīng)用程序接口 API, 用戶(hù)只需了
40、解每個(gè)模塊所要實(shí)現(xiàn)的功能及其參數(shù)的內(nèi)容,然后調(diào)用該 API 函數(shù)即可實(shí)現(xiàn)語(yǔ)音處理功能。</p><p> 在本系統(tǒng)的軟件設(shè)計(jì)當(dāng)中,將語(yǔ)音播放的程序設(shè)計(jì)為語(yǔ)音播放模塊,可方便地調(diào)用;語(yǔ)音播放程序分為兩部分,一是播放流程控制,一是中斷播放服務(wù)程序。流程圖如圖6、圖7所示:</p><p> 圖6 SACM_S480自動(dòng)播放流程圖</p><p> 圖7 中斷服務(wù)程
41、序流程圖</p><p> 5.2.4 走路、跳舞等其他函數(shù)模塊</p><p> 這些函數(shù)就是控制電機(jī)的通與斷的組合完成不用的動(dòng)作,在需要的時(shí)候播放語(yǔ)音,實(shí)現(xiàn)一定的效果,具體請(qǐng)參考函數(shù)原形。(見(jiàn)附件程序所示)</p><p> 6. 功能測(cè)試及測(cè)試結(jié)果:</p><p><b> 6.1 功能測(cè)試</b><
42、;/p><p> 為測(cè)試機(jī)器人的穩(wěn)定性,在實(shí)驗(yàn)室光滑地板上進(jìn)行了一系列試驗(yàn)。應(yīng)用方案的驗(yàn)證步驟如下:</p><p> 步驟一:?jiǎn)?dòng)u’nSP IDE。打開(kāi)機(jī)器人應(yīng)用實(shí)例程序,編譯、鏈接確認(rèn)沒(méi)有錯(cuò)誤。</p><p> 步驟二:下載程序代碼到機(jī)器人的61 板上。</p><p> 步驟三:打開(kāi)機(jī)器人的電源,進(jìn)行語(yǔ)音訓(xùn)練,訓(xùn)練過(guò)程按照下面進(jìn)
43、行:</p><p> 按順序訓(xùn)練以下15 條指令:“名稱(chēng)”,“開(kāi)始”,“準(zhǔn)備”,“跳舞”,“再來(lái)一曲”,“開(kāi)始”,“向前走”,“倒退”,“右轉(zhuǎn)”,“左轉(zhuǎn)”,“準(zhǔn)備”,“向左瞄準(zhǔn)”,“向右瞄準(zhǔn)”,“發(fā)射”,“連續(xù)發(fā)射”。每條指令要訓(xùn)練兩遍。當(dāng)一條指令被正確識(shí)別時(shí)會(huì)提示進(jìn)入下一條;如沒(méi)有被識(shí)別會(huì)要求重復(fù)該指令,直到正確識(shí)別為止。</p><p> 步驟三:如果訓(xùn)練成功則進(jìn)入語(yǔ)音識(shí)別狀態(tài),
44、如果訓(xùn)練沒(méi)有成功則重復(fù)訓(xùn)練。由于SPCE061A 的FLASH存儲(chǔ)器只有32K,所以15 條指令需要分組存放。在這里分成3 組,每組5 條指令。在不同組指令中交換需要根據(jù)出發(fā)名稱(chēng),所以在識(shí)別狀態(tài),要執(zhí)行動(dòng)作首先需要出發(fā)名稱(chēng),就是訓(xùn)練的第一條命令,然后可識(shí)別第一組的其余四條命令。在觸發(fā)第一條指令,然后再觸發(fā)第二條指令,就可以識(shí)別第三條指令。</p><p><b> 6.2 測(cè)試結(jié)果</b>
45、</p><p> 本文設(shè)計(jì)的機(jī)器人的左右腿和脖子的最大轉(zhuǎn)彎角度為90度。機(jī)器人可以識(shí)別15條命令:完成2種跳舞方式。機(jī)器人在直線(xiàn)行走時(shí),速度在不大于0.3m/s可穩(wěn)定行走;頭部轉(zhuǎn)速可調(diào),但不能太高,否則會(huì)引起震動(dòng),影響平衡;各動(dòng)作基本可按程序流暢播放。在有噪聲環(huán)境下,識(shí)別率有所下降,有待于進(jìn)一步開(kāi)發(fā)。</p><p><b> 7.結(jié)語(yǔ)</b></p>
46、;<p> 機(jī)器人高級(jí)整合控制論、機(jī)械電子、計(jì)算機(jī)、材料和仿生學(xué),它既可以接受人類(lèi)指揮,又可以運(yùn)行預(yù)先編排的程序,也可以根據(jù)以人工智能技術(shù)制定的原則綱領(lǐng)行動(dòng)。在工業(yè)、醫(yī)學(xué)、農(nóng)業(yè)、建筑業(yè)甚至軍事等領(lǐng)域中均有重要用途。結(jié)合凌陽(yáng)單片機(jī)的語(yǔ)音識(shí)別功能,對(duì)機(jī)器人采用特定人語(yǔ)音識(shí)別對(duì)機(jī)器人進(jìn)行控制完成一系列動(dòng)作,可以進(jìn)而開(kāi)發(fā)使其協(xié)助或取代人類(lèi)工作的工作,例如生產(chǎn)業(yè)、建筑業(yè),或是危險(xiǎn)的工作。</p><p>&
47、lt;b> 參 考 文 獻(xiàn)</b></p><p> [1] 張培仁,張志堅(jiān),高修峰.十六位單片微處理器原理及應(yīng)用(凌陽(yáng)SPCE061A)[M].北京:清華大學(xué)出版社,2005.4.</p><p> [2] 譚浩強(qiáng).C程序設(shè)計(jì)[M].第三版.北京:清華大學(xué)出版社,2005(2007重?。?</p><p> [3] 羅亞非等.凌陽(yáng)16位單
48、片機(jī)應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2003.</p><p> [4] 李晶皎.嵌入式語(yǔ)音技術(shù)及凌陽(yáng)16位單片機(jī)應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003.</p><p> [5] 屠澄軼,基于凌陽(yáng)單片機(jī)的通用型語(yǔ)音控制系統(tǒng)[J].世界電子元器件:設(shè)計(jì)應(yīng)用,2010.8:57-59.</p><p> [6] 張震宇.王華.基于凌陽(yáng)單
49、片機(jī)的語(yǔ)音識(shí)別技術(shù)及應(yīng)用[J].微計(jì)算機(jī)信息,2007,23(23).</p><p> [7] 徐波.語(yǔ)音技術(shù)的現(xiàn)狀及展望[J].科學(xué)新聞周刊,2004,(4).</p><p> [8] 凌陽(yáng)科技大學(xué)計(jì)劃資料.http://www.unsp.com.cn/</p><p> [9] 單片機(jī)學(xué)習(xí)論壇:http://www.unsp.com.cn/dvbbs/
50、</p><p> [10]電子工程世界:http://www.eeworld.com.cn/</p><p> The design of speech recognition robot based on Sunplus Microcontroller</p><p> Zhang Xiaodan</p><p> Abstrac
51、t:This paper chose SPCE061A which has the advantages of Speech recognition processing as the key control unit to design a system for robots.The robot equiped with this system can be trained to have the ability to identif
52、y a series of given orders and compelet the actions.</p><p> Key words:SPCE061A;Speech recognition processing;Speech recognition processing system;robot</p><p><b> 附錄</b></p>
53、<p><b> 源程序:</b></p><p> #include "bsrSD.h"</p><p> #include "robot.h"</p><p> extern void RobotSystemInit(void);</p><p> ex
54、tern unsigned int IsFirstDownLoad(void);</p><p> extern void FormatFlash(void);</p><p> extern void TrainFiveCommand(void);</p><p> extern void SaveFiveCommand(unsigned int uiAdd
55、r);</p><p> extern void ImportFiveCommand(unsigned int uiAddr_Import);</p><p> extern unsigned int TrainWord(unsigned int WordID,unsigned int SndIndex);</p><p> extern void PlayS
56、nd(unsigned int SndIndex);</p><p> extern void Robot_DanceAgain(unsigned int n);</p><p> extern void Robot_Dance(unsigned int n);</p><p> extern void Robot_Go(unsigned int n);<
57、;/p><p> extern void Robot_Backup(unsigned int n);</p><p> extern void Robot_TurnLeft(unsigned int n);</p><p> extern void Robot_TurnRight(unsigned int n);</p><p> ext
58、ern void Robot_HeadTurnLeft(unsigned int n);</p><p> extern void Robot_HeadTurnRight(unsigned int n);</p><p> extern void Robot_Shoot_Prepare(unsigned int n);</p><p> extern void
59、 Robot_Shoot2(unsigned int n);</p><p> extern void Robot_Shoot_Five(unsigned int n);</p><p> extern void F_FlashWrite1Word(unsigned int,unsigned int);</p><p> extern void F_Flash
60、Erase(int);</p><p> extern void Delay(unsigned int);</p><p> int main(void)</p><p><b> {</b></p><p> unsigned int uiFlagFirst;//是否為第一次下載</p>
61、<p> unsigned int uiRes;//識(shí)別結(jié)果</p><p> unsigned int uiActivated;//是否出于待命狀態(tài)</p><p> unsigned int uiTimerCount;//時(shí)間是否超時(shí)</p><p> unsigned int uiBS_Team;//用于標(biāo)識(shí)
62、現(xiàn)在是第幾組命令在內(nèi)存當(dāng)中</p><p> unsigned int uiKey;//存儲(chǔ)鍵盤(pán)值,按下將重新訓(xùn)練</p><p> RobotSystemInit();</p><p> uiActivated = 0;</p><p> uiFlagFirst = IsFirstDownLoad();//判斷是否為
63、第一次下載程序</p><p> if(uiFlagFirst == 1)</p><p><b> {</b></p><p> FormatFlash();//格式化需要存儲(chǔ)命令的存儲(chǔ)器</p><p> TrainFiveCommand();//訓(xùn)練需要的五條命令(一組)</p&
64、gt;<p> SaveFiveCommand(0xf700);//存儲(chǔ)五條命令</p><p> PlaySnd(OK);//播放Ok,Let's go,表示一組命令存儲(chǔ)結(jié)束</p><p> PlaySnd(LETUSGO);</p><p> TrainFiveCommand();</p><p
65、> SaveFiveCommand(0xf900);</p><p> PlaySnd(FOLLOWME);</p><p> TrainFiveCommand();</p><p> SaveFiveCommand(0xfb00);</p><p> PlaySnd(HO);</p><p> Pl
66、aySnd(HOO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOOO);</p><p> PlaySnd(HO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOO);</p><p> PlaySn
67、d(HOOO);</p><p> uiFlagFirst = 0xaaaa;</p><p> F_FlashWrite1Word(0xfd00,0xaaaa);</p><p><b> }</b></p><p> ImportFiveCommand(0xf700);</p><p>
68、; uiBS_Team = 0;</p><p><b> Loop:</b></p><p> BSR_InitRecognizer(BSR_MIC);//初始化識(shí)別器</p><p><b> while(1)</b></p><p><b> {</b>
69、;</p><p> *(unsigned int *)0x7012 = 1; //清看門(mén)狗</p><p><b> //開(kāi)始識(shí)別命令</b></p><p> uiRes = BSR_GetResult();//取得識(shí)別結(jié)果</p><p> if(uiRes > 0)</p>
70、<p><b> {</b></p><p> if(uiActivated)</p><p><b> {</b></p><p> uiTimerCount = 0;</p><p> switch(uiRes)</p><p><b>
71、; {</b></p><p> case NAME_ID:</p><p> switch(uiBS_Team)</p><p><b> {</b></p><p> case 0://第一組的第一個(gè)命令(杰克)</p><p> //播放Ok,Les'
72、s go,Yeah</p><p> PlaySnd(OK);</p><p><b> break;</b></p><p> case 1://第二組的第一個(gè)命令(開(kāi)始)</p><p> PlaySnd(OK);</p><p> PlaySnd(LETUSGO);<
73、/p><p> PlaySnd(YEAH);</p><p> //播放Ok,Les's go</p><p><b> break;</b></p><p> case 2://第三組的第一個(gè)命令(準(zhǔn)備)</p><p> PlaySnd(OK);</p>&
74、lt;p><b> //播放Ok</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> break;</b></p><p> case Command_One_ID:&l
75、t;/p><p> switch(uiBS_Team)</p><p><b> {</b></p><p> case 0://第一組的第二個(gè)命令(開(kāi)始)</p><p> //導(dǎo)入第二組命令,修改uiBS_Team為1,播放Wo,Ho,Hoo,Hooo,跳出循環(huán)</p><p>
76、 ImportFiveCommand(0xf900);</p><p> uiBS_Team = 1;</p><p> PlaySnd(HO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOOO);</p>
77、<p> goto Loop;</p><p><b> break;</b></p><p> case 1://第二組的第二個(gè)命令(向前走)</p><p> //播放喀咔聲音,控制電機(jī)向前走</p><p> Robot_Go(1);</p><p> Play
78、Snd(WALK);</p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><b> break;</b></p><p> case 2://第三組的第二個(gè)
79、命令(向左瞄準(zhǔn))</p><p> //播放旋轉(zhuǎn)聲音,頭部電機(jī)向左轉(zhuǎn)</p><p> Robot_HeadTurnLeft(1);</p><p> PlaySnd(TURNHEAD);</p><p> PlaySnd(TURNHEAD);</p><p> PlaySnd(TURNHEAD);</
80、p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><b> break;</b></p><p><b> }</b></p>&l
81、t;p> *(unsigned int *)0x7012 = 1;</p><p> uiActivated = 0;</p><p> //杰克為觸發(fā)命令,每完成一個(gè)動(dòng)作需要出發(fā)一次</p><p><b> break;</b></p><p> case Command_Two_ID:</p
82、><p> switch(uiBS_Team)</p><p><b> {</b></p><p> case 0://第一組的第三個(gè)命令(準(zhǔn)備)</p><p> //導(dǎo)入第三組命令,修改uiBS_Team為2,播放Wo,Ho,Hoo,Hooo,跳出循環(huán)</p><p> Imp
83、ortFiveCommand(0xfb00);</p><p> uiBS_Team = 2;</p><p> PlaySnd(HO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOO);</p><p> PlaySnd(HOOO);</p><
84、p> goto Loop;</p><p><b> break;</b></p><p> case 1://第二組的第三個(gè)命令(倒退)</p><p> //播放喀咔聲音,控制電機(jī)向后走</p><p> Robot_Backup(1);</p><p> PlayS
85、nd(WALK);</p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p><b> break;</b></p><p> case 2://第三組的第三個(gè)命令(向右瞄準(zhǔn))</p><p> //播
86、放旋轉(zhuǎn)聲音,頭部電機(jī)向右轉(zhuǎn)</p><p> Robot_HeadTurnRight(1);</p><p> PlaySnd(TURNHEAD);</p><p> PlaySnd(TURNHEAD);</p><p> PlaySnd(TURNHEAD);</p><p> ImportFiveComma
87、nd(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><b> break;</b></p><p><b> }</b></p><p> *(unsigned int *)0x7012 =
88、 1;</p><p> uiActivated = 0;</p><p><b> break;</b></p><p> case Command_Three_ID:</p><p> switch(uiBS_Team)</p><p><b> {</b>&l
89、t;/p><p> case 0://第一組的第四個(gè)命令(跳舞)</p><p> //跳舞,清看門(mén)狗,時(shí)間比較長(zhǎng)</p><p> Robot_Dance(2);</p><p> *(unsigned int *)0x7012 = 0x0001;</p><p><b> break;<
90、;/b></p><p> case 1://第二組的第四個(gè)命令(左轉(zhuǎn))</p><p> //播放旋轉(zhuǎn)聲音,向左旋轉(zhuǎn)</p><p> Robot_TurnLeft(1);</p><p> PlaySnd(WALK);</p><p> ImportFiveCommand(0xf700);&
91、lt;/p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><b> break;</b></p><p> case 2://第三組的第四個(gè)命令(發(fā)射)</p><p> //播放咚咚聲音,發(fā)射飛盤(pán)</p><p&
92、gt; Robot_Shoot_Prepare(5);</p><p> Delay(1500);</p><p> Robot_Shoot2(3);</p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop
93、;</p><p><b> break;</b></p><p><b> }</b></p><p> *(unsigned int *)0x7012 = 1;</p><p> uiActivated = 0;</p><p><b> break;
94、</b></p><p> case Command_Four_ID:</p><p> switch(uiBS_Team)</p><p><b> {</b></p><p> case 0://第一組的第五個(gè)命令(再來(lái)一曲)</p><p><b>
95、//再來(lái)一曲</b></p><p> Robot_DanceAgain(2);</p><p><b> break;</b></p><p> case 1://第二組的第五個(gè)命令(右轉(zhuǎn))</p><p> //播放聲音,向右旋轉(zhuǎn),導(dǎo)到第一組命令,設(shè)置uiBS_Team為0,推出循環(huán)<
96、;/p><p> Robot_TurnRight(1);</p><p> PlaySnd(WALK);</p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><
97、b> break;</b></p><p> case 2://第三組的第五個(gè)命令(連續(xù)發(fā)射)</p><p> //連續(xù)發(fā)射飛盤(pán),導(dǎo)到第一組命令,設(shè)置uiBS_Team為0,退出循環(huán)</p><p> Robot_Shoot_Prepare(5);</p><p> Delay(1500);</p&
98、gt;<p> Robot_Shoot_Five(3);</p><p> ImportFiveCommand(0xf700);</p><p> uiBS_Team = 0;</p><p> goto Loop;</p><p><b> break;</b></p><p
99、><b> }</b></p><p> *(unsigned int *)0x7012 = 1;</p><p> uiActivated = 0;</p><p><b> break;</b></p><p><b> }</b></p>&
100、lt;p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> if(uiRes == NAME_ID)</p><p><b> {</b></p><
101、;p> *(unsigned int *)0x7012 = 1;</p><p> uiActivated = 1;</p><p> uiTimerCount = 0;</p><p> PlaySnd(OK);//播放應(yīng)答OK</p><p><b> }</b></p>&l
102、t;p><b> }</b></p><p><b> }</b></p><p> else if(uiActivated)</p><p><b> {</b></p><p> if(++uiTimerCount > 700)</p&g
103、t;<p><b> {</b></p><p> *(unsigned int *)0x7012 = 1;</p><p> uiActivated = 0;</p><p> uiTimerCount = 0;</p><p> PlaySnd(HOOO);</p><p
104、><b> }</b></p><p><b> }</b></p><p> uiKey = *P_IOA_Data;</p><p> uiKey = uiKey&0x0004;</p><p> if(uiKey == 0x0004)</p><p&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于凌陽(yáng)單片機(jī)的語(yǔ)音機(jī)器人的設(shè)計(jì).pdf
- 基于單片機(jī)的機(jī)器人管家畢業(yè)論文
- 畢業(yè)論文---語(yǔ)音識(shí)別機(jī)器人的設(shè)計(jì)
- 畢業(yè)論文基于單片機(jī)的清掃機(jī)器人設(shè)計(jì)
- 基于arduino單片機(jī)避障小車(chē)機(jī)器人畢業(yè)論文
- 畢業(yè)論文-語(yǔ)音識(shí)別機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)
- 基于arduino單片機(jī)避障小車(chē)機(jī)器人畢業(yè)論文
- 畢業(yè)論文-單片機(jī)家用清掃機(jī)器人-單片機(jī)設(shè)計(jì)類(lèi).doc
- 畢業(yè)論文-單片機(jī)家用清掃機(jī)器人-單片機(jī)設(shè)計(jì)類(lèi).doc
- 教案:基于arduino單片機(jī)避障小車(chē)機(jī)器人畢業(yè)論文
- 基于單片機(jī)的語(yǔ)音播報(bào)器設(shè)計(jì)【畢業(yè)論文】
- 基于單片機(jī)的一種小型避障機(jī)器人的設(shè)計(jì)畢業(yè)論文
- 畢業(yè)設(shè)計(jì)----凌陽(yáng)單片機(jī)實(shí)驗(yàn)板
- 畢業(yè)設(shè)計(jì)--凌陽(yáng)單片機(jī)實(shí)驗(yàn)板
- 基于凌陽(yáng)spce061a單片機(jī)的語(yǔ)音存儲(chǔ)與回放系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的掃地機(jī)器人的設(shè)計(jì)論文
- 基于單片機(jī)的gps語(yǔ)音播報(bào)器設(shè)計(jì)【畢業(yè)論文】
- 基于avr單片機(jī)軟件控制系統(tǒng)設(shè)計(jì)的機(jī)器人畢業(yè)論文外文翻譯
- 凌陽(yáng)單片機(jī)流水燈
- 基于單片機(jī)的語(yǔ)音識(shí)別系統(tǒng) 畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論