版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于單片機的語音識別系統(tǒng)</p><p><b> 摘要</b></p><p> 近幾年來,智能化和自動化技術在玩具制造領域中越來越被關注。本文介紹一種智能化小車控制系統(tǒng)的設計——語音控制小車。語音控制小車是基于SPCE061A的代表性興趣產品,它配合61板推出,綜合應用了SPCE061A的眾多資源,小車采用語音識別技術,可通過語音命令對其
2、行駛狀態(tài)進行控制 。首先介紹了SPCE061A的主要性能及其引腳的功能;接著完成了電源電路、復位電路、鍵盤電路、音頻輸入電路,音頻輸出電路和無線控制電路等硬件功能模塊的設計。軟件設計模塊能實現智能小車的前進、后退、轉向、停止、避障、表演動作以及循線等功能。測試表明,在環(huán)境背景噪音不太大,控制者的發(fā)音清晰的前提下,語音控制小車的語音識別系統(tǒng)能對特定的語音指令做出智能反應,做出預想中的有限的動作</p><p>
3、關鍵詞:spec061a 語音識別 驅動電路 聲控小車 智能反應</p><p><b> Abstract</b></p><p> In recent years, Intelligent and automation technology in the toy manufacture have been paid more and more att
4、ention.Introduce an intelligent vehicle control system design. SPCE061A program the system to single-chip, based on implementation of the car's voice control, This paper introduces the hardware sub-system design and
5、implementation. The SPCE061A's main characters and pin function are introduced firstly. Completed the power circuit, reset circuit, keyboard circuitry, audio input circuits, </p><p> Keywords: spec061a
6、、voice recogniton、Driving circuit、</p><p> Voice control dolly、intelirent response </p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> Abstract
7、II</p><p><b> 目錄III</b></p><p><b> 前言1</b></p><p> 1 方案介紹及設計簡介2</p><p> 1.1小車的控制要求及設計方案2</p><p> 1.1.1小車的控制要求2</p>
8、;<p> 1.1.2方案設計與論證2</p><p> 1.2SPCE061A 簡介3</p><p> 1.2.1SPCE061A單片機概述5</p><p> 1.2.2SPCE061A的介紹7</p><p> 1.2.3SPCE061A的結構7</p><p>
9、1.3SPCE061A 單片機強大的語音功能8</p><p> 1.3.1語音識別的原理8</p><p> 1.3.2系統(tǒng)的結構框圖9</p><p> 1.4語音控制小車設計要求10</p><p> 1.4.1功能要求10</p><p> 1.4.2語音控制小車的主要功能10
10、</p><p> 1.4.3參數說明10</p><p> 1.4.4注意事項10</p><p> 2電路設計及程序設計11</p><p> 2.1電路設計基礎知識11</p><p> 2.2電路方框圖及說明13</p><p> 2.3各部分電路設計
11、13</p><p> 2.3.1電機的選擇14</p><p> 2.3.2繼電器驅動電路的設計14</p><p> 2.3.3行駛狀態(tài)控制電路設計15</p><p> 2.3.4麥克錄音輸入及AGC電路16</p><p> 2.3.5語音播報電路18</p><
12、;p><b> 3軟件設計19</b></p><p> 3.1軟件流程圖及設計思路說明19</p><p> 3.1.1程序設計20</p><p> 3.2模塊設計20</p><p> 3.2.1中斷流程圖部分20</p><p> 3.2.2語音識別
13、部分22</p><p> 4連接和操作說明25</p><p> 4.1硬件模塊連接圖25</p><p> 4.1.1功能說明25</p><p> 4.1.2代碼下載26</p><p> 4.1.3訓練小車27</p><p> 4.1.4聲控小車2
14、8</p><p> 4.1.5重新訓練28</p><p><b> 總結30</b></p><p><b> 致謝31</b></p><p><b> 參考文獻32</b></p><p> 附件1 系統(tǒng)程序說明33<
15、;/p><p><b> 前言</b></p><p> 語音識別技術是近年來十分活躍的研究領域。語音識別系統(tǒng)的實用化研究是語音識別研究的一個主要方向。以玩具市場為例,具有高科技含量的電子玩具、智能玩具發(fā)展迅猛,電子互動式、智能化玩具已經成為玩具行業(yè)發(fā)展的主流。我國是玩具生產和出口大國,但在高科技玩具的發(fā)展方面和國外的差距很大,因此,及時投入精力廣泛開展這方面的研究,
16、無論對技術創(chuàng)新應用,還是社會經濟發(fā)展,都有巨大的現實意義。與機器進行語音交流,讓機器明白你說什么,這是人們長期以來夢寐以求的事情。語音識別技術就是讓機器通過識別和理解過程把語音信號轉變?yōu)橄鄳奈谋净蛎畹母呒夹g。近二十年來,語音識別技術取得顯著進步,開始從實驗室走向市場。語音識別功能大大增加了玩具使用的樂趣,并使玩具體現出一定的智能性,因此成為大部分電子玩具、智能玩具設計中使用的關鍵技術。 </p><p>
17、本文利用凌陽單片機設計一個具有語音識別功能的智能遙控小車。該設計將遙控車由傳統(tǒng)的手動遙控改成了語音識別遙控,集成了先進的語音識別技術,加上小車的機動靈活的特點,使控制者可以通過語音控制小車實現預設動作,從而釋放控制者的雙手,而且小車和控制者之間還具有一定的交互功能。所以此次研究具有較強的實用性和發(fā)展前景。</p><p> 1 方案介紹及設計簡介</p><p> 小車的控制要求及設計
18、方案</p><p><b> 小車的控制要求</b></p><p> 論文設計的要求是要用語音來控制小車的行駛狀態(tài)。根據開始語音訓練錄制的語音命令來控制小車的前進、倒退、左轉、右轉和停止;在行駛的過程中小車通過光電傳感器自動檢測障礙物,并且自動避開障礙物繞道行駛。在整過行駛過程中小車自動記錄行駛的路程和時間。</p><p><b
19、> 方案設計與論證</b></p><p> 本系統(tǒng)為典型的實時控制系統(tǒng),易用單片機控制來實現,這里以凌陽SPCE061A單片機為主控元件,提出兩種設計方案。</p><p><b> 方案一:</b></p><p> 采用凌陽SPCE061A十六位單片機,對小車的整個行駛過程進行實時監(jiān)控,完成所有功能需要24個I/
20、O口,由于凌陽SPCE061A單片機提供32個I/O口,一片即可實現所有功能,這為設計過程提供了極大方便。其主要設計思想是:小車上,安裝一個霍爾元件利用單片機的IOB3外部中斷判別輪胎轉數的結果用以計算路程;安裝三個檢測障礙物的光電檢測器和一個碰撞開關,利用IOB4、IOB5、IOB6用掃描的方式來控制拐彎和返回;利用單片機的IOB8-IOB11控制繼電器選擇小車的正、反向行駛;凌陽SPCE061A十六位單片機提供了豐富的時基信源和時基
21、中斷,給設計者以大量的選擇空間,并給設計者提供精確的時基計數,其加減速通過大功率電阻消耗功率來實現。整體框架如圖1,這種方案可以使程序簡單,易于控制。</p><p><b> 方案二:</b></p><p> 此方案也采用凌陽SPCE061A十六位單片機,與第一種方案不同之處在于利用單片機的IOB8 、IOB9產生控制調速的脈寬和控制小車的正、反行駛,用凌陽S
22、PCE061A十六位單片機的TimeA和TimeB很容易實現脈寬調制,這大大加強了用脈寬調制控制加減速的可選性,但對繼電器要求較高,這里考慮到大眾化設計,采用第一個方案。</p><p><b> 圖1 系統(tǒng)原理框圖</b></p><p> SPCE061A 簡介</p><p> 在眾多的單片機中,如C51、ARM、AVR等,我們選擇
23、了凌陽系列的單片機,采用的是凌陽61單片機,因為它本身具有音頻處理功能,我們板子上具有音頻輸出,輸入通道,具有麥克風,揚聲器等硬件。在凌陽公司提供的開發(fā)環(huán)境中本身就具有關于音頻處理的庫函數以及音頻壓縮軟件,在進行處理的時候比較容易,所以我們選擇凌陽61的單片機,</p><p> 基本結構如下圖所示:</p><p> 凌陽61單片機及硬件基本結構</p><p&g
24、t; SPCE061A 是凌陽科技研發(fā)生產的性價比很高的一款十六位單片機,使用它可以非常方便靈活的實現語音的錄放系統(tǒng),該芯片擁有8 路10 位精度的ADC,其中一路為音頻轉換通道,并且內置有自動增益電路。這為實現語音錄入提供了方便的硬件條件。兩路10 精度的DAC,只需要外接功放(SPY0030A)即可完成語音的播放。</p><p> 另外凌陽十六位單片機具有易學易用的效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。
25、在此環(huán)境中,支持標準C 語言,可以實現C 語言與凌陽匯編語言的互相調用,并且,提供了語音錄放的庫函數,只要了解庫函數的使用,就會很容易完成語音錄放,這些都為軟件開發(fā)提供了方便的條件:SPCE061A 片內還集成了一個ICE(在線仿真電路)接口,使得對該芯片的編程、仿真都變得非常方便,而ICE 接口不占用芯片上的硬件資源,結合凌陽科技提供的集成開發(fā)環(huán)境(unSP IDE)用戶可以利用它對芯片進行真實的仿真;而程序的下載(燒寫)也是通過該接
26、口進行下載。</p><p> SPCE061A 是繼μ’nSP?系列產品SPCE500A等之后凌陽科技推出的又一款16位結構的微控制器。與SPCE500A不同的是,在存儲器資源方面考慮到用戶的較少資源的需求以及便于程序調試等功能,SPCE061A里內嵌32K字的閃存(FLASH)。較高的處理速度使μ’nSP?能夠非常容易地、快速地處理復雜的數字信號。因此,與SPCE500A相比,以μ’nSP?為核心的SPCE
27、061A微控制器是適用于數字語音識別應用領域產品的一種最經濟的選擇。</p><p> SPCE061A單片機概述</p><p> 隨著單片機功能集成化的發(fā)展,其應用領域也逐漸地由傳統(tǒng)的控制,擴展為控制處理、數據處理以及數字信號處理(DSP,Digital Signal Processing)等領域。凌陽的16位單片機就是為適應這種發(fā)展而設計的。它的CPU內核采用凌陽最新推出的μ’n
28、SP?(Microcontroller and Signal Processor)16位微處理器芯片(以下簡稱μ’nSP?)。圍繞μ’nSP?所形成的16位μ’nSP?系列單片機(以下簡稱μ’nSP?家族)采用的是模塊式集成結構,它以μ’nSP?內核為中心集成不同規(guī)模的ROM、RAM和功能豐富的各種外設接口部件,如圖2所示。</p><p> μ’nSP?內核是一個通用的核結構。除此之外的其它功能模塊均為可選結
29、構,亦即這種結構可大可小或可有可無。借助這種通用結構附加可選結構的積木式的構成,便可形成各種不同系列派生產品,以適合不同的應用場合。這樣做無疑會使每一種派生產品具有更強的功能和更低的成本。 </p><p> μ’nSP?家族有以下特點:</p><p> ?。?)體積小、集成度高、可靠性好且易于擴展 </p><p> μ’nSP?家族把各功能部件模塊化地集成
30、在一個芯片里,內部采用總線結構,因而減少了各功能部件之間的連線,提高了其可靠性和抗干擾能力。另外,模塊化的結構易于系統(tǒng)擴展,以適應不同用戶的需求。其結構式模塊圖如下:</p><p> μ’nSP?家族的模塊式結構</p><p> ?。?)具有較強的中斷處理能力 </p><p> μ’nSP?家族的中斷系統(tǒng)支持10個中斷向量及10余個中斷源,適合實時應用領域
31、。 </p><p> ?。?)高性能價格比 </p><p> μ’nSP?家族片內帶有高尋址能力的ROM、靜態(tài)RAM和多功能的I/O口。另外,μ’nSP?的指令系統(tǒng)提供具有較高運算速度的16位×16位的乘法運算指令和內積運算指令,為其應用增添了DSP功能,使得μ’nSP?家族運用在復雜的數字信號處理方面既很便利,又比專用的DSP芯片廉價。 </p><p
32、> ?。?)功能強、效率高的指令系統(tǒng) </p><p> μ’nSP?指令系統(tǒng)的指令格式緊湊,執(zhí)行迅速,并且其指令結構提供了對高級語言的支持,這可以大大縮短產品的開發(fā)時間。</p><p> (5)低功耗、低電壓 。</p><p> μ’nSP?家族采用CMOS制造工藝,同時增加了軟件激發(fā)的弱振方式、空閑方式和掉電方式,極大地降低了其功耗。</p
33、><p> 另外,μ’nSP?家族的工作電壓范圍大,能在低電壓供電時正常工作,且能用電池供電。這對于其在野外作業(yè)等領域中的應用具有特殊的意義。</p><p> SPCE061A的介紹</p><p> SPCE061A 是繼μ’nSP?系列產品SPCE500A等之后凌陽科技推出的又一款16位結構的微控制器。與SPCE500A不同的是,在存儲器資源方面考慮到用戶的
34、較少資源的需求以及便于程序調試等功能,SPCE061A里內嵌32K字的閃存(FLASH)。較高的處理速度使μ’nSP?能夠非常容易地、快速地處理復雜的數字信號。因此,與SPCE500A相比,以μ’nSP?為核心的SPCE061A微控制器是適用于數字語音識別應用領域產品的一種最經濟的選擇。</p><p> SPCE061A的結構</p><p> SPCE061A的結構</p&g
35、t;<p> SPCE061A 單片機強大的語音功能</p><p> 凌陽音頻處理過程:自己錄取一段不大于4Kb的WAV語音文件或者從原有WAV語音文件中截取一段不大于4KB的語音。然后用凌陽語音壓縮工具壓縮,再將壓縮后的文件添加到凌陽公司提供的開發(fā)環(huán)境中,程序經過單片機處理后,語音通過喇叭播放出來。如圖下圖所示:</p><p><b> 凌陽音頻識別過程
36、</b></p><p><b> 語音識別的原理</b></p><p> 首先是語音訓練,然后是語音匹配,接著進行語音處理。如果匹配成功就執(zhí)行相應的功能,否則重新匹配。</p><p><b> 如下圖所示:</b></p><p><b> 語音識別系統(tǒng)簡圖<
37、;/b></p><p><b> 系統(tǒng)的結構框圖</b></p><p><b> 如圖下圖所示:</b></p><p><b> 智能車系統(tǒng)結構框圖</b></p><p> 系統(tǒng)組成主要包括以下兩部分:SPCE061A精簡開發(fā)板、語音小車控制電路板。圖中的
38、語音輸入部分MIC_ IN、按鍵輸入KEY、聲音輸出部分的功率放大環(huán)節(jié)等已經做到了精簡開發(fā)板——61板上,為我們使用提供了很大的方便。在電機的驅動方面,采用全橋驅動技術,利用四個I/O端口分為兩組分別實現兩個電機的正傳、反轉和停三態(tài)運行。</p><p> 語音控制小車設計要求</p><p><b> 功能要求</b></p><p>
39、 語音控制小車基于SPCE061A的代表性興趣產品,它配合61板推出,綜合應用了SPCE061A的眾多資源,小車采用語音識別技術,可通過語音命令對其行駛狀態(tài)進行控制。</p><p> 語音控制小車的主要功能</p><p> 可以通過簡單的I/O操作實現小車的前進、后退、左轉、右轉功能; </p><p> 配合SPCE061A的語音特色,利用系統(tǒng)的語音播放
40、和語音識別資源,實現語音控制的功能; </p><p> 可以在行走過程中聲控改變小車運動狀態(tài); </p><p> 在超出語音控制范圍時能夠自動停車</p><p><b> 參數說明</b></p><p> 車體:雙電機兩輪驅動 </p><p> 供電:電池(四
41、節(jié)AA:1.2V×4 或1.5V×4) </p><p> 工作電壓:DC 4V~6V </p><p> 工作電流:運動時約200mA</p><p><b> 注意事項 </b></p><p> 注意電池的正負極性,切勿裝反; </p><p> 長期不用請將電
42、池取出電池盒,以免造成腐蝕; </p><p> 由于小車行動比較靈活,速度比較快,在使用時一定要注意保持場地足夠大,且保證不會對周圍的物體造成傷害; </p><p> 不要讓小車長時間運行在堵轉狀態(tài)(堵轉狀態(tài):由于小車所受阻力過大,造成小車電機加電但并不轉動的現象),這樣會造成很大的堵轉電流,有可能會損壞小車的控制電路。</p><p><b>
43、 電路設計及程序設計</b></p><p><b> 電路設計基礎知識</b></p><p> (1) 二極管:英文是diode。二極管的正、負二個端子(如圖8);正端A稱為陽極,負端K 稱為陰極。電流只能從陽極向陰極方向移動。一些初學者容易產生這樣一種錯誤認識:“半導體的一‘半’是一半的‘半’;面二極管也是只有一‘半’電流流動(這是錯誤的),所有
44、二極管就是半導體 ”。其實二極管與半導體是完全不同的東西。我們只能說二極管是由半導體組成的器件。半導體無論那個方向都能流動電流。</p><p><b> 二極管電子流動圖</b></p><p> (2) 三極管:三極管在電子電路中組成震蕩電路、放大電路。 </p><p> ?、?已知型號和管腳排列的三極管,可按下述方法來判斷其性能好壞
45、</p><p> (a) 測量極間電阻。將萬用表置于R×100或R×1k擋,按照紅、黑表筆的六種不同接法進行測試。其中,發(fā)射結和集電結的正向電阻值比較低,其他四種接法測得的電阻值都很高,約為幾百千歐至無窮大。但不管是低阻還是高阻,硅材料三極管的極間電阻要比鍺材料三極管的極間電阻大得多。</p><p> (b) 三極管的穿透電流ICEO的數值近似等于管子的倍數β和
46、集電結的反向電流ICBO的乘積。ICBO隨著環(huán)境溫度的升高而增長很快,ICBO的增加必然造成ICEO的增大。而ICEO的增大將直接影響管子工作的穩(wěn)定性,所以在使用中應盡量選用ICEO小的管子。</p><p> 通過用萬用表電阻直接測量三極管e-c極之間的電阻方法,可間接估計ICEO的大小,具體方法如下:</p><p> 萬用表電阻的量程一般選用R×100或R×1
47、k擋,對于PNP管,黑表管接e極,紅表筆接c極,對于NPN型三極管,黑表筆接c極,紅表筆接e極。要求測得的電阻越大越好。e-c間的阻值越大,說明管子的ICEO越小;反之,所測阻值越小,說明被測管的ICEO越大。一般說來,中、小功率硅管、鍺材料低頻管,其阻值應分別在幾百千歐、幾十千歐及十幾千歐以上,如果阻值很小或測試時萬用表指針來回晃動,則表明ICEO很大,管子的性能不穩(wěn)定。</p><p> (c) 測量放大能
48、力(β)。目前有些型號的萬用表具有測量三極管hFE的刻度線及其測試插座,可以很方便地測量三極管的放大倍數。先將萬用表功能開關撥至擋,量程開關撥到ADJ位置,把紅、黑表筆短接,調整調零旋鈕,使萬用表指針指示為零,然后將量程開關撥到hFE位置,并使兩短接的表筆分開,把被測三極管插入測試插座,即可從hFE刻度線上讀出管子的放大倍數。</p><p> 另外:有此型號的中、小功率三極管,生產廠家直接在其管殼頂部標示出
49、不同色點來表明管子的放大倍數β值,其顏色和β值的對應關系如表所示,但要注意,各廠家所用色標并不一定完全相同。</p><p><b> ② 檢測判別電極</b></p><p> (a) 判定基極。用萬用表R×100或R×1k擋測量三極管三個電極中每兩個極之間的正、反向電阻值。當用第一根表筆接某一電極,而第二表筆先后接觸另外兩個電極均測得低阻值
50、時,則第一根表筆所接的那個電極即為基極b。這時,要注意萬用表表筆的極性,如果紅表筆接的是基極b。黑表筆分別接在其他兩極時,測得的阻值都較小,則可判定被測三極管為PNP型管;如果黑表筆接的是基極b,紅表筆分別接觸其他兩極時,測得的阻值較小,則被測三極管為NPN型管。</p><p> (b) 判定集電極c和發(fā)射極e。(以PNP為例)將萬用表置于R×100或R×1k擋,紅表筆基極b,用黑表筆分別
51、接觸另外兩個管腳時,所測得的兩個電阻值會是一個大一些,一個小一些。在阻值小的一次測量中,黑表筆所接管腳為集電極;在阻值較大的一次測量中,黑表筆所接管腳為發(fā)射極。</p><p> ?、?判別高頻管與低頻管</p><p> 高頻管的截止頻率大于3MHz,而低頻管的截止頻率則小于3MHz,一般情況下,二者是不能互換的。</p><p> ?、?在路電壓檢測判斷法&l
52、t;/p><p> 在實際應用中、小功率三極管多直接焊接在印刷電路板上,由于元件的安裝密度大,拆卸比較麻煩,所以在檢測時常常通過用萬用表直流電壓擋,去測量被測三極管各引腳的電壓值,來推斷其工作是否正常,進而判斷其好壞。</p><p><b> 電路方框圖及說明</b></p><p> 系統(tǒng)原理框圖如圖1所示。主控元件采用凌陽SPCE061
53、A單片機,屬于凌陽u’nSP.系列產品的一個16位結構的微控制器。在存儲器資源方面考慮到用戶的較少資源的需求以及便于程序調試等功能,SPCE061A里只內嵌32K字的閃存(FLASH),但用在此系統(tǒng)上已經綽綽有余。較高的處理速度使u’nSP.能夠非常容易地、快速地處理復雜的數字信號。因此以u’nSP.為核心的SPCE061A微控制器也適用在數字語音識別應用領域。SPCE061A在2.6V~3.6V工作電壓范圍內的工作速度范圍為0.32M
54、Hz~49.152MHz,較高的工作速度使其應用領域更加拓寬。2K字SRAM和32K字FLASH僅占一頁存儲空間,32位可編程的多功能I/O端口;兩個16位定時器/計數器;32768Hz實時時鐘;低電壓復位/監(jiān)測功能;8通道10位模-數轉換輸入功能并具有內置自動增益控制功能的麥克風輸入方式;雙通道10位DAC方式的音頻輸出功能,這就為本系統(tǒng)的特定人辨識和語音播報打下了基礎。</p><p><b>
55、各部分電路設計</b></p><p><b> 電機的選擇</b></p><p> 市場上的電機種類很多,有各自的優(yōu)缺點。電機類別如表2:</p><p> 小車控制分為:前進、倒退、左轉、右轉和停止。如果考慮用單向電機來控制,將不能使電機進行反方向轉動,也就不能實現自動左轉、右轉。再考慮到經濟,實惠,決定用直流伺服電動機
56、。</p><p> 繼電器驅動電路的設計</p><p> 由于單片機I/O口提供的電流太小,不能直接驅動繼電器工作。在這里采用8050NPN管來提供一個開關電壓,實現I/O口對繼電器的驅動;用IN4007去掉繼電器斷開時線圈產生的反向電流,保護8050NPN管不被損壞。繼電器驅動電路如下圖所示。</p><p><b> 繼電器驅動電路</
57、b></p><p> 行駛狀態(tài)控制電路設計</p><p> 如圖13所示為行使狀態(tài)控制電路,整個小車的行駛狀態(tài)由兩個電機MOTOR A和MOTOR B來控制;MOTOR A控制小車的左邊兩個輪子,MOTOR B控制小車右邊兩個輪子。具體控制如表4所示</p><p><b> 行駛狀態(tài)控制電路</b></p>&l
58、t;p> 表4 行駛狀態(tài)控制表</p><p> 注:圖中的兩個電機完全相同,這樣能更好地保持小車的穩(wěn)定性,在前進上兩個電機能在加減速度上完全達到同步,不會走S路線,如果考慮用一個電機控制轉向,而另外一個控制速度和返回的話,由于控制轉向的電機電路未接入分壓電阻,當速度不處于最快速度時,小車前進不能走直線,而是向一邊偏,導致路線不對。</p><p> 麥克錄音輸入及AGC電路
59、</p><p> 麥克風電路如圖16所示。凌陽的SPCE061A是16位單片機,具有DSP功能,有很強的信息處理能力,最高時鐘可達到49M,具備運算速度高的優(yōu)勢等等,這為語音的播放、錄放、合成及辨識提供了條件。本系統(tǒng)接入MIC電路如下圖所示,MIC為錄制語音辨識命令服務。</p><p> 麥克錄音輸入及AGC電路</p><p> 下圖是MIC錄放流程圖。
60、</p><p><b> MIC錄放流程圖</b></p><p> 下圖是簡化的語音識別原理圖,其中實線部分成為訓練模塊,虛線部分為識別模塊。辨認特定的使用者即特定語者(Speaker Dependent,SD)模式,使用者可針對特定語者辨認詞匯(可由使用者自行定義,如人名聲控撥號),即在啟動小車前,系統(tǒng)將會提示輸入語音命令作簡單快速的訓練紀錄,在這里輸入“啟
61、動”“停止”“返回”和“模式切換”四個語音命令,通過使用者的聲音特性來加以辨認。隨著技術的成熟,進入語音適應階段SA(speaker adaptation),使用者只要對于語音辨識核心,經過一段時間的口音訓練后,即可擁有不錯的辨識率。</p><p><b> 語音識別原理圖</b></p><p><b> 語音播報電路</b></p
62、><p> 音頻部分的原理圖如下所示,在下圖中可以看到兩個跳線,其作用在于可以測量DAC的輸出波形;另外拔掉跳線,可以斷開DAC到喇叭放大的通路,使得DAC通道處于開路狀態(tài)。這樣便于用DAC做其他用途,用戶可以用過這個跳線來加入自己的外圍電路。</p><p> 音頻原理及放大電路圖</p><p> 凌陽音頻壓縮算法根據不同的壓縮比分為以下幾種:</p&g
63、t;<p> SACM-A2000:壓縮比為8:1,8:1.25,8:1.5 </p><p> SACM-S480: 壓縮比為80:3,80:4.5 </p><p> SACM-S240: 壓縮比為80:1.5 </p><p> 按音質排序:A2000>S480>S240</p><p> 用凌陽Co
64、mpress Tool事先把所需要的語音信號錄制好,本系統(tǒng)共包括十多個語音資源,整個語音信號經凌陽SACM_S480壓縮算法壓縮只占有13.2K存儲空間,SPCE061A單片機具有32k閃存,使用內部flash即可滿足要求。凌陽SPCE061A單片機自帶雙通道DAC音頻輸出, DAC1、DAC2轉換輸出的模擬量電流信號分別通過AUD1和AUD2管腳輸出, DAC輸出為電流型輸出,所以DAC輸出經過SPY0030音頻放大,以驅動喇叭放音,
65、放大電路如圖19(只列出了DAC1,DAC2類似),這為單片機的音頻設計提供了極大方便。在它們后面接一個簡單的音頻放大電路和喇叭即可實現語音播報功能,音頻的具體功能主要通過程序來實現。</p><p><b> 軟件設計</b></p><p> 軟件設計部分是小車控制的的核心,通過軟件編程來控制小車的行駛狀態(tài)。</p><p> 軟件流
66、程圖及設計思路說明</p><p><b> 軟件流程圖</b></p><p><b> 程序設計</b></p><p><b> 主程序見附錄(1)</b></p><p><b> 模塊設計</b></p><p>
67、<b> 中斷流程圖部分</b></p><p> SPCE061單片機有兩個外部中斷,分別為EXT1和EXT2,兩個外部輸入腳分別為B口的IOB2和IOB3的復用腳。EXT1(IOB2)和EXT2(IOB3)兩條外部中斷請求輸入線,用于輸入兩個外部中斷源的中斷請求信號,并允許外部中斷以負跳沿觸發(fā)方式來輸入中斷請求信號。EXT1(IOB2)為黑線檢測,確定小車位置,EXT2(IOB3)為
68、輪子轉數檢測用于計算路程。IRQ4用做整個行程的時間計數。</p><p><b> 中斷服務流程圖</b></p><p><b> 語音識別部分</b></p><p> 在這里我們用的是SPCE061的特定語者辨識SD(Speaker Dependent),SD即語音樣板由單個人訓練,也只能識別訓練某人的語音命
69、令,而他人的命令識別率較低或幾乎不能識別。</p><p> (1) 語音的準備:</p><p> 可利用計算機進行錄音,選擇錄音效果一般的MIC比較好,因為小車跑動時要受環(huán)境的影響,效果一般的MIC錄制的音更加接近凌陽單片機上的MIC所錄制的。錄制語音可為:“yeah”,“煩不煩”,“前進”,“倒退”,“拐就拐”。分別保存名稱為:yeah.48k、qj.48k、dt.48k zg.
70、48k、yg.48k.</p><p> 語音錄制時,注意錄制屬性設置,最好選擇為8Khz, 16位,單聲道。語音錄制好后,保存格式為“.wav”,利用凌陽單片機光盤內目錄“\TOOLS\s480\”下的工具進行語音壓縮后放在程序目錄“\voice”下邊,然后修改配置文件“Makefile”中的OBJFILES的值以及對應的語音文件的目錄地址值和“clean”的值 ,并且配置值順序必須對應于語音訓練的過程。&
71、lt;/p><p> 該程序模塊包括三部分:訓練樣本、識別、語音提示。具體程序見主程序。見下圖整體框圖。</p><p><b> 語音辨識整體框圖</b></p><p> 在程序中我們通過五條語句的訓練演示特定人連續(xù)音識別,其中第一條語句為觸發(fā)名稱。另外四條為命令,訓練完畢開始辨識當識別出觸發(fā)名稱后,開始發(fā)布命令,則會聽到自己設置的應答,
72、具體流程圖如圖22。</p><p> (2) 關于語音識別庫函數的算法分析:</p><p> 眾所周知,嵌入式語音識別最大難點在于如何在硬件資源相對有限(相對與PC機而言)的情況下,實現大量數據處理的語音識別算法。特別的,SPCE061A自帶2K字的RAM,這樣小容量的RAM空間是如何存儲數據量較大的語音命令,是值得探討的問題。</p><p> 時域分析
73、中,語音信號作為緩慢時變的信號,在一小段時間里,例如10ms~20ms,語音信號的特性基本不變,這些短段具有固定特性,短段間經常有一定的重疊,組合成一段語音,我們把語音信號分成這樣的小段(稱為“幀”)作為提取語音信號特性的單元,這樣的方法稱為“短時”處理法。</p><p> 當以8K/S的速率采集語音信號時,假設以20ms為幀周期,加上12ms的幀移,幀長32ms,即每幀包括256個語音采集點,一個幀的特性參
74、數占用1個字RAM,則存儲一條2S長的語音命令信號占用</p><p> 2s/20ms*1=100字,與直接存儲采樣的語音數據相比更能節(jié)省嵌入式系統(tǒng)有限的硬件資源。在外界噪音的干擾下,對語音起止點的判別非常重要,若聲音指令信號提取的不恰當,那么所得到的聲音指令信號和我們發(fā)出的指令信號就會有很大的出入,不但會延遲語音識別的時效性,甚至會降低對</p><p> 這些語音信號的識別率。
75、對語音信號的提取,主要是確定音頭和音尾的位置,即端點識別。常用的方法有短時能量和過零率等幾種。</p><p> 短時能量表示了語音信號的幅度,其定義式為:</p><p><b> (公式3)</b></p><p><b> 語音辨識具體流程圖</b></p><p> 短時平均過零率為
76、一幀語音信號穿越零電平的次數,表示了短時信號的頻率,其定義如下:</p><p><b> (公式4)</b></p><p> 兩式中的N為一幀語音的采集點數。</p><p> 語音采集過程中,計算當前一幀或多幀數據的能量或過零率數值,當大于預先設定的閾值時,即認為找到了語音命令的起始點,結束點的確定方法類似。</p>
77、<p> 在截取音頭音尾間的信號并分幀后,我們就可以以幀為單位進行特征參數的提取,如線性預測倒譜系數法。選擇合適的特征參數,與語音樣板參數通過動態(tài)時間彎折算法匹配,即可得出相應的識別結果。</p><p><b> 連接和操作說明</b></p><p><b> 硬件模塊連接圖</b></p><p>&
78、lt;b> 連線圖</b></p><p><b> 功能說明</b></p><p> 1. 小車運動控制:</p><p> 通過SPCE061A的I/O端口,驅動控制板的H橋電路,進而控制前輪電機和后輪電機。</p><p><b> 2. 聲控功能:</b><
79、;/p><p> 利用特定人語音識別實現小車的名稱和動作訓練,并根據相應的語音指令輸入執(zhí)行前進、后退、左轉、右轉、停車等動作。</p><p> 3. 定時控制功能:</p><p> 利用時基定時器設定運行時間,小車運行同時啟動定時器,時間到小車停止運行。</p><p><b> 代碼下載</b></p&g
80、t;<p> 硬件連接完成之后,檢查無誤,接下來就可以下載程序了。具體的步驟為: </p><p> 第一步:打開集成開發(fā)環(huán)境,打開“CarDemo.spj”文件,編譯鏈接。(注意:如果看不到CarDemo.spj,請在彈出的對話框中選擇打開類型為spj或者所有文件) </p><p> 第二步:點擊菜單Project->Select Body,或者直接點擊 圖標
81、打開如圖 3-2所示的對話框: </p><p><b> ?</b></p><p> 圖 7-3 Select Body對話框 </p><p> 第三步:在彈出的對話框中選擇Body Name為SPCE060A_061A,選擇Probe為Auto,點擊OK按鈕確定。 </p><p> 第四步:點擊IDE
82、工具欄上的圖標選擇Use ICE模式。 </p><p> 第五步:按F8快捷下載按鈕,下載代碼。</p><p><b> 訓練小車</b></p><p> 成功下載程序以后,去掉下載線并復位系統(tǒng)(如果使用EZ-Probe還應將Probe選擇跳線S5拔去),小車就會提示對它進行訓練。訓練采用應答式訓練,每條指令的訓練次數為兩次,每一條
83、命令的訓練過程都是一樣的,以“前進”為例說明: </p><p> 步驟一:小車提示“前進”; </p><p> 步驟二:告訴小車“前進”; </p><p> 步驟三:小車提示“請再說一遍”(重復訓練提示音); </p><p> 步驟四:再次告訴小車“前進”(重復訓練一次)。 </p><p> 這是一
84、個完整的訓練過程,如果訓練成功,小車會自動進入下一條指令的訓練,并會提示下一條指令對應的動作;如果沒有訓練成功,小車會提示“說什么暗語呀”或者“沒有聽到任何聲音”等信息,這樣的話就要重復剛才所說的四個步驟,直到成功為止。</p><p> 整個的訓練過程共有5次這樣的訓練,依次為:名稱——前進——后退——左拐</p><p> ——右拐。整個的訓練流程如下圖所示:</p>
85、<p><b> 小車訓練流程圖</b></p><p><b> 聲控小車</b></p><p> 訓練完小車之后,怎樣進行聲控操作,讓小車運動或者停下來呢? </p><p> 可以直接對小車說前進,或者倒車、左拐、右拐等,小車如果識別出指令會有一個回應信號,告知你它要執(zhí)行的動作,然后執(zhí)行該動作。
86、如果想要小車執(zhí)行其它動作,直接告訴小車將要執(zhí)行動作對應的指令即可。比如在前進時告訴小車“倒車”,小車識別出之后就會直接倒車。</p><p> 如果在小車訓練過程中想要小車停下來,可以直接呼叫小車的名字,小車準確識別之后就會停下來。</p><p><b> 重新訓練</b></p><p> 在實際的使用過程當中,可能會對訓練的結果不滿
87、意,或者其他人也想對它進行訓練、控制。這樣就要求小車可以被重新訓練。為此,我們把61板的KEY3鍵定義為重新訓練按鈕,系統(tǒng)運行之后就會不斷的掃描61板的KEY3鍵。如果檢測到KEY3鍵按下,那么程序首先會把訓練標志位(0xe000)單元擦除,并會進入一個死循環(huán)等待復位的到來。復位到來之后,程序檢測到訓練標志單元內容為0xffff,認為小車沒有經過訓練,就會要求對它進行訓練。</p><p><b>
88、總結</b></p><p> 本設計綜合應用了SPCE061A豐富的軟硬件資源,成功的實現了語音控制功能。下面簡單的介紹一下實際應用中的一些資源優(yōu)勢:在硬件方面,較高的執(zhí)行速度、內置的硬件乘法器、ADC和DAC功能、內置的AGC自動增益環(huán)節(jié),這些為語音處理提供了強大基礎。在軟件方面,標準的C語言編程,豐富的語音資源函數為編程提供了很大的方便。 </p><p> 該設計方
89、案結構簡單,以單芯片實現了語音播放與識別以及電機控制功能,相當于“語音識別芯片+普通單片機”的功能。但是比“語音識別芯片+普通單片機”方案實現起來要簡單很多,而且成本也會降低很多。 </p><p> 該語音控制小車操作比較簡單,訓練和識別成功的幾率也比較高,是一個典型的語音識別應用方案。</p><p> 最后敬請各位專家、老師和同學對論文和今后的研究工作提出寶貴的指導意見和建議。&
90、lt;/p><p><b> 致謝</b></p><p><b> 參考文獻</b></p><p> [1] 羅亞飛. 凌陽16位單片機應用基礎[M]. 北京航空航天出版社.</p><p> [2] 張彥斌,薛鈞義. 凌陽16位單片機原理及應用[M]. 清華大學出版社</p>
91、<p> [3] 趙亮. 單片機應用系統(tǒng)設計與產品開發(fā)[M]. 人民郵電出版社</p><p> [4] 耿德根 詹衛(wèi)前,李青. 單片機創(chuàng)新開發(fā)與機器人制作[M]. 北京航天航天大學</p><p> [5] David Cook 畢樹生.機器人制作提高篇[M].北京航空航天大學出版社</p><p> [6] 凌陽大學計劃網www.unsp.c
92、om.cn</p><p> 附件1 系統(tǒng)程序說明</p><p><b> 主控制源程序:</b></p><p> //=====================================================</p><p> // The information contained h
93、erein is the exclusive property of</p><p> // Sunnnorth Technology Co. And shall not be distributed, reproduced,</p><p> // or disclosed in whole in part without prior written permission.<
94、;/p><p> // (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.</p><p> // ALL RIGHTS RESERVED</p><p> // The entire notice above must be reproduced on all authorized copies.</p>
95、<p> //=====================================================</p><p> //=====================================================</p><p> // 工程名稱:Car_Demo</p><p> // 功能描述:實現
96、小車的語音控制</p><p> // 涉及的庫:CMacro1016.lib</p><p> // bsrv222SDL.lib</p><p> //sacmv26e.lib</p><p> // 組成文件:main.c</p><p> //Flash
97、.asm, hardware.asm,ISR.asm </p><p> // hardware.h,s480.h, hardware.inc</p><p> //硬件連接:IOA0-----KEY1</p><p> //IOA1-----KEY2</p><p> //IOA2-----KEY3
98、</p><p> //IOB8-----前進</p><p> //IOB9-----倒車</p><p> //IOB10----左拐</p><p> //IOB11----右拐</p><p> //維護記錄:2005-12-12 v1.0</p>&
99、lt;p> //=====================================================</p><p> #include "s480.h"</p><p> #include "bsrsd.h"</p><p> #defineP_IOA_Data (volatile
100、unsigned int *)0x7000 </p><p> #define P_IOA_Dir (volatile unsigned int *)0x7002</p><p> #define P_IOA_Attrib (volatile unsigned int *)0x7003</p><p> #define P_IOB_Data
101、(volatile unsigned int *)0x7005 </p><p> #define P_IOB_Dir(volatile unsigned int *)0x7007 </p><p> #define P_IOB_Attrib(volatile unsigned int *)0x7008 </p><p> #define
102、P_TimerA_Data(volatile unsigned int *)0x700A </p><p> #define P_TimerA_Ctrl(volatile unsigned int *)0x700B </p><p> #define P_TimerB_Data(volatile unsigned int *)0x700C </p>
103、<p> #define P_TimerB_Ctrl(volatile unsigned int *)0x700D </p><p> #define P_Watchdog_Clear(volatile unsigned int *)0x7012 </p><p> #define P_INT_Mask(volatile unsigned int *)
104、0x702D </p><p> #define P_INT_Clear(volatile unsigned int *)0x7011 </p><p> #define NAME_ID 0x100</p><p> #define COMMAND_GO_ID 0x101</p><p> #de
105、fine COMMAND_BACK_ID 0x102</p><p> #define COMMAND_LEFT_ID 0x103</p><p> #define COMMAND_RIGHT_ID 0x104</p><p> #define S_NAME0//給我取個名字吧</p><p> #define
106、 S_ACT11//前進</p><p> #define S_ACT22//倒車,請注意</p><p> #define S_ACT33 //左拐</p><p> #define S_ACT44 //右拐</p><p> #define S_RDY5 //Yeah</p
107、><p> #define S_AGAIN6 //請再說一遍</p><p> #define S_NOVOICE7 //沒有聽到任何聲音</p><p> #define S_CMDDIFF8//說什么暗語呀</p><p> #define S_NOISY8 //說什么暗語呀</p>&l
108、t;p> #define S_START9//準備就緒,開始辨識</p><p> #define S_GJG10//拐就拐</p><p> #define S_DCZY11//倒車,請注意</p><p> extern unsigned int BSR_SDModel[100];//外部變量BSR_SDMode
109、l[100],辨識器自帶</p><p> extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);</p><p> extern void F_FlashErase(unsigned int sector);</p><p> unsigned int uiTimeset =
110、3;//運行時間定時,調整該參數控制運行時間</p><p> unsigned int uiTimecont; //運行時間計時</p><p> //=====================================================</p><p> // 語法格式:void Delay();</p><p&
111、gt; // 實現功能:延時</p><p><b> // 參數:無</b></p><p> // 返回值:無</p><p> //=====================================================</p><p> void Delay()
112、</p><p><b> {</b></p><p> unsigned int i;</p><p> for(i=0;i<0x3Fff;i++)</p><p><b> {</b></p><p> *P_Watchdog_Clear=0x0001;&
113、lt;/p><p><b> }</b></p><p><b> }</b></p><p> //=====================================================</p><p> // 語法格式:void PlaySnd(unsigned SndI
114、ndex,unsigned DAC_Channel);</p><p> // 實現功能:語音播放函數</p><p> // 參數:SndIndex-播放語音資源索引號</p><p> //DAC_Channel-播放聲道選擇</p><p><b> // 返回值:無</b></p>
115、<p> //====================================================</p><p> void PlaySnd(unsigned SndIndex,unsigned DAC_Channel)</p><p><b> {</b></p><p> BSR_StopRecog
116、nizer();//停止識別器</p><p> SACM_S480_Initial(1);//初始化為自動播放</p><p> SACM_S480_Play(SndIndex, DAC_Channel, 3);//開始播放一段語音</p><p> while((SACM_S480_Status()&0x0001)!= 0)//是否播放完畢?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計基于單片機的語音識別系統(tǒng)
- 基于單片機的語音識別系統(tǒng)設計【畢業(yè)設計】
- 基于單片機語音識別系統(tǒng)設計.pdf
- 基于單片機的指紋識別系統(tǒng)設計【畢業(yè)設計】
- 基于單片機的語音識別系統(tǒng)研究.pdf
- 基于單片機的人臉識別系統(tǒng)的設計
- 基于單片機的指紋識別系統(tǒng)設計
- 基于單片機的人臉識別系統(tǒng)的設計
- 基于單片機指紋識別系統(tǒng)設計
- 基于單片機指紋識別系統(tǒng)設計
- 基于單片機的語音識別系統(tǒng)軟件設計與開發(fā).pdf
- 畢業(yè)論文--基于單片機的指紋識別系統(tǒng)設計
- 基于SPCE061A單片機的語音識別系統(tǒng)的研究.pdf
- 一種基于stc單片機的特定聲音識別系統(tǒng)的設計【畢業(yè)設計】
- 基于單片機的指紋識別系統(tǒng)設計(硬件)
- 基于單片機的指紋識別系統(tǒng)設計(1)
- 畢業(yè)設計---基于單片機的語音存儲與回放系統(tǒng)設計
- 基于單片機公交車語音報站系統(tǒng)畢業(yè)設計
- 基于單片機的無線語音對講系統(tǒng)設計-畢業(yè)設計開題報告
- 基于單片機的語音控制小車畢業(yè)設計論文
評論
0/150
提交評論