語音識別控制小車設(shè)計本科設(shè)計說明_第1頁
語音識別控制小車設(shè)計本科設(shè)計說明_第2頁
語音識別控制小車設(shè)計本科設(shè)計說明_第3頁
語音識別控制小車設(shè)計本科設(shè)計說明_第4頁
語音識別控制小車設(shè)計本科設(shè)計說明_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于語音識別的智能小車摘要隨著計算機技術(shù)、模式識別和信號處理技術(shù)與聲學(xué)技術(shù)等的發(fā)展,使得能滿足各種需要的語音識別系統(tǒng)的實現(xiàn)成為可能。近二三十年來,語音識別在計算機、信息處理、通信與電子系統(tǒng)、自動控制等領(lǐng)域中有著越來越廣泛的應(yīng)用。本設(shè)計是語音識別在控制領(lǐng)域的一個很好實現(xiàn),它將原本需要手工操作的工作用語音來方便地完成。語音識別按說話人的講話方式可分為孤立詞(Isolated Word)識別、連接詞(Connected Word)識別和連續(xù)語音(Continuous Speech)識別。從識別對象的類型來看,語音識別可以分為特定人(Speaker Dependent)語音識別和非特定人(Speake

2、r Independent)語音識別。本設(shè)計采用的識別類型是特定人孤立詞語音識別。本系統(tǒng)分上位機和下位機兩大方面。上位機利用PC上MATLAB強大的數(shù)學(xué)計算能力,進行語音輸入、端點監(jiān)測、特征參數(shù)提取、匹配、串口控制等工作,根據(jù)識別到的不同語音通過PC串口向下位機發(fā)送不同的指令。下位機是單片機控制的一個小車,單片機收到上位機傳來的指令后,根據(jù)不同的指令控制小車完成不同的動作。該設(shè)計對語音識別的現(xiàn)有算法進行了驗證和實現(xiàn),并對端點檢測和匹配算法進行了些許改進。本設(shè)計達到了預(yù)期目標(biāo),實現(xiàn)了所期望的功能效果。關(guān)鍵詞:MATLAB,語音識別,端點檢測,LPC,單片機,電機控制SMART CAR GASED

3、 SPEECH RECOGNITIONABSTRACTWith the development of computer technology,pattern recognition,signal processing technology and acoustic technology etc, the speech recognition system that can meet the various needs of people is more possible to achieve.The past three decades, the voice recognition in th

4、e field of computer, information processing, communications and electronic systems, automatic control has increasingly wide range of applications.Speech recognition by the speaker's speech can be divided into isolated word (Isolated Word) identification, conjunctions (Connected Word) and continu

5、ous speech recognition (Continuous Speech) identification. Identifying the type of object from the point of view, the voice recognition can be divided into a specific person (Speaker Dependent) speech recognition and non-specific (Speaker Independent) speech recognition. This design uses the identif

6、ication type is a specific person isolated word speech recognition. This design is of a good implementation of speech recognition in the control field, it does the work that would otherwise require manual operation by the voice of people easily.This system includes two major aspects:the host system

7、and the slave system. The host system use the MATLAB on the computer which has powerful mathematical computing ability to do the work of voice input, endpoint monitoring, feature extraction, matching, identification and serial control,then it send different commands through the PC serial port to sla

8、ve system according different recognised voice. The slave system is a car controlled by a single-chip micro-controller.It controls the car do different actions according different instructions received. The design is checking and realization of the existing speech recognition algorithm and I the end

9、point detection and matching algorithms were slight improved.This design achieved the expected goals and achieved the desired functional effect.KEY WORDS:MATLAB,Speech Recognition,Extreme Points Test,LPC,Chip Microcomputer,Motor Drive36 / 41目錄前言1第1章 系統(tǒng)總體設(shè)計方案介紹3第2章 上位機設(shè)計4§2.1 語音識別簡介4§2.1.1

10、語音識別發(fā)展4§2.1.2 語音識別的分類4§2.2 聲音錄入5§2.3 聲音的預(yù)處理6§2.3.1 欲加重處理6§2.3.2 分幀處理6§2.4 端點檢測6§2.4.1 過零率6§2.4.2 音量7§2.4.3 過零率和音量積譜8§2.4.4 用過零率和音量積譜來檢測端點9§2.5 特征參數(shù)提取10§2.5.1 特征參數(shù)概述10§2.5.2 用MATLAB實現(xiàn)LPC系數(shù)的計算14§2.6 語音識別中的模式匹配14§2.6.1 DTW算法原理14

11、§2.6.2 程序?qū)崿F(xiàn)16§2.7 MATLAB上的GUI設(shè)計18第3章 下位機設(shè)計20§3.1 小車總體設(shè)計20§3.1.1 小車總體框圖20§3.1.2 小車結(jié)構(gòu)設(shè)計20§3.2 小車硬件設(shè)計20§3.2.1 單片機電路設(shè)計20§3.2.2 驅(qū)動電路設(shè)計23§3.2.3 穩(wěn)壓電路設(shè)計24§3.3 小車軟件設(shè)計24§3.3.1 主程序流程圖24§3.3.2 部分主程序25§3.3.3 底層驅(qū)動程序27結(jié)論29參考文獻30致31附錄32前言隨著計算機技術(shù)、模式識別和

12、信號處理技術(shù)與聲學(xué)技術(shù)等的發(fā)展,使得能滿足各種需要的語音識別系統(tǒng)的實現(xiàn)成為可能。近二三十年來,語音識別在計算機、信息處理、通信與電子系統(tǒng)、自動控制等領(lǐng)域中有著越來越廣泛的應(yīng)用。語音命令控制可廣泛用于家電語音遙控、玩具、智能儀器與移動等便攜設(shè)備中。使用語音作為人機交互的途徑對于使用者來說是最自然的一種方式,同時設(shè)備的小型化也要求省略鍵盤以節(jié)省體積。當(dāng)今,語音識別產(chǎn)品在人機交互應(yīng)用中已經(jīng)占到越來越大的比例。語音識別按說話人的講話方式可分為孤立詞(Isolated Word)識別、連接詞(Connected Word)識別和連續(xù)語音(Continuous Speech)識別。孤立詞識別是指說話人每次

13、只說一個詞或短語,每個詞或短語在詞匯表中都算作一個詞條,一般用在語音撥號系統(tǒng)中。連接詞語音識別支持一個小的語法網(wǎng)絡(luò),其部形成一個狀態(tài)機,可以實現(xiàn)語音查詢、航空定票等系統(tǒng)。連續(xù)語音識別是指對說話人以日常自然的方式發(fā)音,通常特指用于語音錄入的聽寫機。從識別對象的類型來看,語音識別可以分為特定人(Speaker Dependent)語音識別和非特定人(Speaker Independent)語音識別。特定人是指只針對一個用戶的語音識別,非特定人則可用于不同的用戶。實際上,非特定人語音識別的初始識別率往往都比較低,一般都要求用戶花一定的時間對系統(tǒng)進行訓(xùn)練,將系統(tǒng)的參數(shù)進行一定的自適應(yīng)調(diào)整,才能使識別率

14、達到滿意的程度。本設(shè)計采用的識別類型是特定人孤立詞語音識別。本設(shè)計是語音識別在控制領(lǐng)域的一個很好實現(xiàn),它將原本需要手工操作的工作用語音來方便地完成。本系統(tǒng)分上位機和下位機兩大方面。上位機利用PC上MATLAB強大的數(shù)學(xué)計算能力,進行語音輸入、端點監(jiān)測、特征參數(shù)提取、匹配、串口控制等工作,根據(jù)識別到的不同語音通過PC串口向下位機發(fā)送不同的指令。下位機是單片機控制的一個小車,單片機收到上位機傳來的指令后,很據(jù)不同的指令控制小車完成不同的動作。該設(shè)計對語音識別的現(xiàn)有算法進行了驗證和實現(xiàn),并對端點檢測和匹配算法進行了些許改進。為了更方便的進行上位機的操作,本設(shè)計用MATLAB的GUI設(shè)計了一個圖形界面

15、。上面設(shè)置了串口選擇框、錄音開始按鈕、語音識別結(jié)果框等。下位機采用STC2C5A60S2單片機作為控制中心,采用L298專用驅(qū)動芯片搭建雙橋,進行點擊的正反轉(zhuǎn)調(diào)速等控制。本設(shè)計達到了預(yù)期目標(biāo),實現(xiàn)了所期望的功能效果。第1章 系統(tǒng)總體設(shè)計方案介紹本系統(tǒng)分上位機和下位機兩大方面。上位機利用PC上MATLAB強大的數(shù)學(xué)計算能力,進行語音的輸入、端點監(jiān)測、特征參數(shù)提取、匹配、識別、串口控制等工作,根據(jù)識別到的不同語音通過PC串口向下位機發(fā)送不同的指令。下位機是單片機控制的一個小車,單片機收到上位機傳來的指令后,很據(jù)不同的指令控制小車完成不同的動作。PC機和小車之間通過串口無線傳輸模塊進行數(shù)據(jù)傳輸。總體

16、框圖如圖1-1所示:PC機(語音識別)無線發(fā)射語音輸入電機單片機控制中心驅(qū)動電路無線接收圖1-1 系統(tǒng)總體框圖第2章 上位機設(shè)計上位負責(zé)語音的識別,并根據(jù)識別到的不同結(jié)果向下位機(小車)發(fā)送不同的指令。上位機的設(shè)計基于MATLAB平臺,利用MATLAB強大的數(shù)學(xué)計算能力,進行語音的輸入、預(yù)處理、端點監(jiān)測、特征參數(shù)提取、匹配、識別、串口控制等工作。§2.1 語音識別簡介§2.1.1 語音識別發(fā)展隨著時代的發(fā)展,人們越來越注重生活的品質(zhì)。便捷時尚成為當(dāng)代人們的追求目標(biāo)。隨著計算機技術(shù)、模式識別和信號處理技術(shù)與聲學(xué)技術(shù)等的發(fā)展,使得能滿足各種需要的語音識別系統(tǒng)的實現(xiàn)成為可能。近二

17、三十年來,語音識別在計算機、信息處理、通信與電子系統(tǒng)、自動控制等領(lǐng)域中有著越來越廣泛的應(yīng)用。語音命令控制可廣泛用于家電語音遙控、玩具、智能儀器與移動等便攜設(shè)備中。使用語音作為人機交互的途徑對于使用者來說是最自然的一種方式,同時設(shè)備的小型化也要求省略鍵盤以節(jié)省體積。當(dāng)今,語音識別產(chǎn)品在人機交互應(yīng)用中已經(jīng)占到越來越大的比例。§2.1.2 語音識別的分類語音識別按說話人的講話方式可分為孤立詞(Isolated Word)識別、連接詞(Connected Word)識別和連續(xù)語音(Continuous Speech)識別。孤立詞識別是指說話人每次只說一個詞或短語,每個詞或短語在詞匯表中都算作

18、一個詞條,一般用在語音撥號系統(tǒng)中。連接詞語音識別支持一個小的語法網(wǎng)絡(luò),其部形成一個狀態(tài)機,可以實現(xiàn)簡單的家用電器的控制,而復(fù)雜的連接詞語音識別系統(tǒng)可以用于語音查詢、航空定票等系統(tǒng)。連續(xù)語音識別是指對說話人以日常自然的方式發(fā)音,通常特指用于語音錄入的聽寫機。顯然,連續(xù)非特定人語音識別的難度要大得多,因為不僅有說話人口音的問題,還有協(xié)同發(fā)音、斷字斷句、搜索等問題,除了考慮語音的聲學(xué)模型外還要涉與到語言模型,如構(gòu)詞法、文法等。從識別對象的類型來看,語音識別可以分為特定人(Speaker Dependent)語音識別和非特定人(Speaker Independent)語音識別。特定人是指只針對一個用戶

19、的語音識別,非特定人則可用于不同的用戶。實際上,非特定人語音識別的初始識別率往往都比較低,一般都要求用戶花一定的時間對系統(tǒng)進行訓(xùn)練,將系統(tǒng)的參數(shù)進行一定的自適應(yīng)調(diào)整,才能使識別率達到滿意的程度。非特定人大詞表連續(xù)語音識別是近幾年研究的重點,也是研究的難點。目前的連續(xù)語音識別大多是基于HMM(隱馬爾可夫模型)框架,并將聲學(xué)、語言學(xué)的知識統(tǒng)一引入來改善這個框架,其硬件平臺通常是功能強大的工作站或PC機。§2.2 聲音錄入本設(shè)計利用PC上的話筒口進行聲音錄入。通過MATLAB的wavrecord函數(shù)進行聲音錄入。wavrecord是MATLAB的專有聲音錄入函數(shù),他有一下三種調(diào)用方式:(1

20、) y = wavrecord(n,Fs)(2) y = wavrecord(n,Fs,ch)(3) y = wavrecord(n,Fs,'dtype')其中n代表聲音錄入的總采樣數(shù)。Fs代表聲音的采樣率。ch代表聲音錄入采用的通道數(shù),當(dāng)ch為1時為單聲道,當(dāng)ch為2時為立體聲。dtype代表采樣數(shù)據(jù)的存儲類型,MATLAB提供四種存儲類型如下:(1) 'double' (default value), 16 bits/sample(2) 'single', 16 bits/sample(3) 'int16', 16 bits/

21、sample(4) 'uint8', 8 bits/sample 本設(shè)計單次采樣總數(shù)為50000點,采樣率為22000HZ。即:y=wavrecord(50000,22000);§2.3 聲音的預(yù)處理§2.3.1 欲加重處理預(yù)加重的目的在于濾除低頻干擾,尤其是50Hz或60Hz的工頻干擾,將對于語音識別更為有用的高頻部分的頻譜進一步提升。在計算短時能量之前應(yīng)用該濾波器,還可以起到消除直流漂移、抑制隨機噪聲和提升清音部分能量的效果。§2.3.2 分幀處理在計算各個系數(shù)之前要先將語音信號作分幀處理。語音信號是瞬時變化的,但在1020ms是相對穩(wěn)定的.我

22、設(shè)定的采樣頻率為11025所以我們對預(yù)處理后的語音信號S1(n)以1024點為一幀進行處理,幀移為512個采樣點。§2.4 端點檢測所謂端點檢測,就是在實時輸入的聲音信號中,區(qū)分背景噪聲和環(huán)境噪聲,準(zhǔn)確地判斷出聲音信號的開始點和結(jié)束點。在語音識別系統(tǒng)中,正確、有效地進行端點檢測不僅可以減少計算量和縮短處理時間,而且能排除無聲段的噪聲干擾、提高語音識別的正確率。研究表明,即使是在安靜的環(huán)境下,語音識別系統(tǒng)一半以上的錯誤可能主要來基于MTLAB編寫的語音端點檢測程序。除此之外, 在語音合成、 編碼等系統(tǒng)中,高效的端點檢測也直接影響甚至決定著系統(tǒng)的主要性能。因此, 端點檢測的效率、 質(zhì)量在

23、語音處理系統(tǒng)中顯得至關(guān)重要。§2.4.1 過零率過零率(Zero Crossing Rate)是在每個音框中,音訊通過零點的次數(shù)。一般而言,噪聲的過零率大于氣音的過零率,而氣音的過零率又大于有聲音的過零率。一半情況下,噪聲的波形和聲音波形相比幅度非常小,為了排除噪聲對過零率產(chǎn)生的影響,我將聲音的原始譜向上平移,使得噪聲的過零點影響大大減小。如下,圖2-1展示了沒有平移前的過零譜圖,圖2-2展示了平移后的過零譜圖??梢钥闯?,平移后,話音可以很容易從噪音中區(qū)分開來。圖2-1 平移前的過零譜圖2-2 平移后的過零譜§2.4.2 音量能量或者音量代表聲音的大小,可由聲音訊號的震幅來

24、類比,又稱為能量(Energy)或強度(Intensity)等。話音的能量遠比噪聲的能量要大,故可用能量來區(qū)分是靜音還是由話音。這里將每幀的幅度絕對值之和作為每一幀的總能量大小。音量譜如圖2-3所示:圖2-3 音量譜§2.4.3 過零率和音量積譜通常利用短時能量來檢測濁音,用過零率來檢測清音,兩者配合實現(xiàn)可靠的端點檢測。端點檢測算法常用的是由語音能量和過零率組合的有雙門限法,以與短時能量和過零率的乘積構(gòu)成的能頻值法。圖2-4展示了過零譜、音量譜和過零率和能量成績構(gòu)成的譜線。圖2-4 過零音量積譜§2.4.4 用過零率和音量積譜來檢測端點端點檢測算法常用的是由語音能量和過零率

25、組合的有雙門限法,以與短時能量和過零率的乘積構(gòu)成的能頻值法。這里采用的是第二種方法,通過能量和過零率的乘積構(gòu)成的能頻值來判斷語音的端點。這里我對端點進行了兩級判斷。首先根據(jù)過零率和音量積設(shè)定一個較高的門限T H , 若譜大于T H ,則可確定2個端點A、 B, 并可認為這 2個端點之間是語音信號, 這樣相當(dāng)于完成初判。 再根據(jù)背景噪聲的過零率和音量積設(shè)定一個比TH 稍低的門限T L , 如果信號的能量大于 TL ,則所對應(yīng)的端點C、 D 之間仍是語音信號,至此完成了第二級判斷。判斷結(jié)果如圖2-5所示:圖2-5 端點檢測出的語音波形§2.5 特征參數(shù)提取§2.5.1 特征參數(shù)

26、概述對于特征參數(shù),有多種參數(shù)可供選取。常見的有三種:(1)線形預(yù)測系數(shù)特征矢量(LPC)(2)LPC倒譜特征矢量(LPCC)(3)Mel倒譜系數(shù)(MFCC)1. 線性預(yù)測系數(shù)(LPC)這里我采用最簡單的一種線形預(yù)測系數(shù)特征矢量(LPC)。 線性預(yù)測(Linear Prediction)分析是最有效的語音分析技術(shù)之一,在語音編碼、語音合成、語音識別和說話人識別等語音信號處理領(lǐng)域中得到了廣泛的應(yīng)用?;舅枷胧牵阂粋€語音信號的抽樣值可以用過去的若干個抽樣值的線性組合來逼近。語音信號是一種典型的時變信號,然而如果把觀察時間縮短到十毫秒至幾十毫秒,則可以得到一系列近似穩(wěn)定的信號。人的發(fā)音器官可

27、以用若干段前后連接的聲管進行模擬,這就是所謂的聲管模型。由于發(fā)音器官不可能毫無規(guī)律地快速變化,因此語音信號是準(zhǔn)穩(wěn)定的(quasi steady)。全極點線性預(yù)測模型(LPC)可以對聲管模型進行很好的描述,這里信號的激勵源是由肺部氣流的沖擊引起的,聲帶可以有周期振動也可以不振動,分別對應(yīng)濁音(Vowel)和清音(Consonant),而每段聲管則對應(yīng)一個LPC模型的極點。一般情況下,極點的個數(shù)在1216之間,就可以足夠清晰地描述語音信號的特征了。LPC是語音分析的重要手段,它能很好地進行譜估計,即可作為語音特征的參數(shù)。因此僅用12個LPC系數(shù)就能很好地表示復(fù)雜語音信號的特征,這就大大降低了信號的

28、冗余度并有效地減少了計算量和存儲量,使之成為語音識別和語音壓縮的基礎(chǔ)。2.1上式表示p個方程構(gòu)成的方程組,未知數(shù)為p個。求解該方程組,就可以得到系統(tǒng)的線性預(yù)測系數(shù)。由基于自相關(guān)的遞推求解公式求解,也就是所謂的Durbin算法得:2.22.32.42.52.6公式中,上標(biāo)表示第次迭代,每次迭代只計算和更新 直到時,結(jié)束迭代。在MATLAB中利用lpc函數(shù)計算LPC系數(shù),其語法為:a = lpc(x,n);這里x為一幀語音信號,n為計算LPC參數(shù)的階數(shù)。通常x為240點或256點的數(shù)據(jù),n取1012,對語音識別來說就已經(jīng)足夠。2. 線性預(yù)測倒譜系數(shù)(LPCC)在語音識別系統(tǒng)中,很少直接使用LPC系

29、數(shù),而是由LPC系數(shù)推導(dǎo)出另一種參數(shù):線性預(yù)測倒譜系數(shù)(LPCC)。倒譜實際上是一種同態(tài)信號處理方法,標(biāo)準(zhǔn)的倒譜系數(shù)計算流程需要進行FFT變換,對數(shù)操作和相位校正等步驟,運算比較復(fù)雜。在實際運作多數(shù)語音識別系統(tǒng)都會采用倒譜參數(shù)來作為有關(guān)距離的度量。LPC 倒譜系數(shù)是描述說話人聲道特性的,廣泛應(yīng)用于聲紋識別。在實際計算中,當(dāng)序列x(n)為最小相位的情況下,可以利用序列x(n)與其倒譜系數(shù)c(n)的遞推關(guān)系來簡化計算。序列x(n)與其復(fù)倒譜系數(shù)c(n)的遞推公式如下:2.7LPCC參數(shù)是一種非常重要的參數(shù),它不是由原始信號x(n)得到,而是由LPC系數(shù)得到的。由2.6式可得LPC到LPCC的直接遞

30、推關(guān)系。2.82.92.103. Mel尺度倒譜系數(shù)(MFCC)LPC模型是基于發(fā)音模型建立的,LPCC系數(shù)也是一種基于合成的參數(shù)。這種參數(shù)沒有充分利用人耳的聽覺特性。實際上,人的聽覺系統(tǒng)是一個特殊的非線性系統(tǒng),它響應(yīng)不同頻率信號的靈敏度是不同的,基本上是一個對數(shù)的關(guān)系。近年來,一種能夠比較充分利用人耳這種特殊的感知特性的參數(shù)得到了廣泛的應(yīng)用,這就是Mel尺度倒譜參數(shù)(Mel-scaled Cepstrum Coefficient),或稱Mel頻率倒譜系數(shù),簡稱為MFCC。大量的研究表明,MFCC參數(shù)能夠比LPCC參數(shù)更好地提高系統(tǒng)的識別性能。從目前使用的情況來看,在大詞匯量語音識別應(yīng)用中已逐

31、漸取代原本常用的線性預(yù)測編碼導(dǎo)出的倒頻譜參數(shù),原因是它考慮了人類發(fā)聲與接收聲音的特性,具有更好的魯棒性。由于語音信號在時域上的變化快速而不穩(wěn)定,所以通常都將它轉(zhuǎn)換到頻域上來觀察,此時它的頻譜會隨著時間作緩慢的變化。所以通常將加窗后的幀經(jīng)過快速傅立葉變換(FFT),求出每幀的頻譜參數(shù)。再將每幀的頻譜參數(shù)通過一組N 個( N 一般為20 30 個)三角形帶通濾波器所組成的Mel頻率濾波器,將每個頻帶的輸出取對數(shù),求出每一個輸出的對數(shù)能量(log energy)Ek,k =1,2,. N。再將此N 個參數(shù)進行余弦變換(cosine transform) 求出L 階的Mel -scale cepstr

32、um 參數(shù)。MFCC參數(shù)的計算是以“bark”為其頻率基準(zhǔn)的,它和線性頻率的轉(zhuǎn)換關(guān)系是:2.11MFCC參數(shù)也是按幀計算的。首先要通過FFT得到該幀信號的功率譜,轉(zhuǎn)換為Mel頻率下的功率譜。這需要在計算之前先在語音的頻譜圍設(shè)置若干個帶通濾波器:2.12MFCC參數(shù)的計算通常采用如下的流程:(1) 首先確定每一幀語音采樣序列的點數(shù)。對每幀序列進行預(yù)加重處理后再經(jīng)過離散FFT變換,取模的平方得到離散功率譜。(2)計算通過M個后所得的功率值,即計算和在各離散頻率點上乘積之和,得到M個參數(shù),。(3)計算的自然對數(shù),得到,。(4)對計算其離散余弦變換,得到,。(5)舍去代表直流成分的,取作為MFCC參數(shù)

33、。§2.5.2 用MATLAB實現(xiàn)LPC系數(shù)的計算本系統(tǒng)使用的特征參數(shù)是線性預(yù)測系數(shù)(LPC)。在MATLAB中利用lpc函數(shù)計算LPC系數(shù),其語法為:a = lpc(x,n);這里x為一幀語音信號,n為計算LPC參數(shù)的階數(shù)。通常x為240點或256點的數(shù)據(jù),n取1012,對語音識別來說就已經(jīng)足夠。§2.6 語音識別中的模式匹配§2.6.1 DTW算法原理目前,語音識別的匹配主要應(yīng)用HMM和DTW兩種算法。DTW算法由于沒有一個有效地用統(tǒng)計方法進行訓(xùn)練的框架,也不容易將低層和頂層的各種知識用到語音識別算法中,因此在解決大詞匯量、連續(xù)語音、非特定人語音識別問題時較之

34、HMM算法相形見絀。HMM是一種用參數(shù)表示的,用于描述隨機過程統(tǒng)計特性的概率模型。而對于孤立詞識別,HMM算法和DTW算法在一樣條件下,識別效果相差不大, 又由于DTW算法本身既簡單又有效,但HMM算法要復(fù)雜得多。它需要在訓(xùn)練階段提供大量的語音數(shù)據(jù),通過反復(fù)計算才能得到參數(shù)模型,而DTW算法的訓(xùn)練中幾乎不需要額外的計算。鑒于此,DTW更適合本系統(tǒng)的要求。 在孤立詞語音識別中,最為簡單有效的方法是采用DTW(Dynamic Time Warping,動態(tài)時間歸整)算法,該算法基于動態(tài)規(guī)劃(DP)的思想,解決了發(fā)音長短不一的模板匹配問題,是語音識別中出現(xiàn)較早、較為經(jīng)典的一種算法。用于孤立詞識別,D

35、TW算法與HMM算法在訓(xùn)練階段需要提供大量的語音數(shù)據(jù),通過反復(fù)計算才能得到模型參數(shù),而DTW算法的訓(xùn)練中幾乎不需要額外的計算。所以在孤立詞語音識別中,DTW算法仍然得到廣泛的應(yīng)用。 無論在訓(xùn)練和建立模板階段還是在識別階段,都先采用端點算法確定語音的起點和終點。已存入模板庫的各個詞條稱為參考模板,一個參考模板可表示為R=R(1),R(2),R(m),R(M),m為訓(xùn)練語音幀的時序標(biāo)號,m=1為起點語音幀,m=M為終點語音幀,因此M為該模板所包含的語音幀總數(shù),R(m)為第m幀的語音特征矢量。所要識別的一個輸入詞條語音稱為測試模板,可表示為T=T(1),T(2),T(n),T(N),n為測試語音幀的

36、時序標(biāo)號,n=1為起點語音幀,n=N為終點語音幀,因此N為該模板所包含的語音幀總數(shù),T(n)為第n幀的語音特征矢量。參考模板與測試模板一般采用一樣類型的特征矢量(如MFCC,LPC系數(shù))、一樣的幀長、一樣的窗函數(shù)和一樣的幀移。 假設(shè)測試和參考模板分別用T和R表示,為了比較它們之間的相似度,可以計算它們之間的距離 DT,R,距離越小則相似度越高。為了計算這一失真距離,應(yīng)從T和R中各個對應(yīng)幀之間的距離算起。設(shè)n和m分別是T和R中任意選擇的幀號,dT(n),R(m)表示這兩幀特征矢量之間的距離。距離函數(shù)取決于實際采用的距離度量,在DTW算法常采用歐氏距離。 若N=M則可以直接計算,否則要考

37、慮將T(n)和R(m)對齊。對齊可以采用線性擴的方法,如果N<M可以將T線性映射為一個M幀的序列,再計算它與R(1),R(2),R(M)之間的距離。但是這樣的計算沒有考慮到語音中各個段在不同情況下的持續(xù)時間會產(chǎn)生或長或短的變化,因此識別效果不可能最佳。因此更多的是采用動態(tài)規(guī)劃(DP)的方法。 如果把測試模板的各個幀號n=1N在一個二維直角坐標(biāo)系中的橫軸上標(biāo)出,把參考模板的各幀號m=1M在縱軸上標(biāo)出,通過這些表示幀號的整數(shù)坐標(biāo)畫出一些縱橫線即可形成一個網(wǎng)絡(luò),網(wǎng)絡(luò)中的每一個交叉點(n,m)表示測試模式中某一幀的交匯點。DP算法可以歸結(jié)為尋找一條通過此網(wǎng)絡(luò)中若干格點的路徑,路徑通過的格點即為測

38、試和參考模板中進行計算的幀號。路徑不是隨意選擇的,首先任何一種語音的發(fā)音快慢都有可能變化,但是其各部分的先后次序不可能改變,因此所選的路徑必定是從左下角出發(fā),在右上角結(jié)束。為了描述這條路徑,假設(shè)路徑通過的所有格點依次為(n ,m ),(n ,m ),(n ,m ),其中(n ,m )=(1,1),(n ,m )=(N,M)。路徑可以用函數(shù)m =Ø(n )描述,其中n =i,i=1,2,N,Ø(1)=1,Ø(N)=M。為了使路徑不至于過傾斜,可以約束斜率在0.52的圍,如果路徑已經(jīng)通過了格點(n ,m ),那么下一個通過的格點(n ,m )只可能是下列三種情況之一:

39、 (n ,m )=(n +1,m +2) (n ,m )=(n +1,m +1) (n ,m )=(n +1,m ) 用r表示上述三個約束條件。求最佳路徑的問題可以歸結(jié)為滿足約束條件r時,求最佳路徑函數(shù)m =Ø(n ),使得沿路徑的積累距離達到最小值,即: 搜索該路徑的方法如下:搜索從(n ,m )點出發(fā),可以展開若干條滿足的路徑,假設(shè)可計算每條路徑達到(n ,m )點時的總的積累距離,具有最小累積距離者即為最佳路徑。易于證明,限定圍的任一格點(n ,m )只可能有一條搜索路徑通過。對于(ni,mi),其可達到該格點的前一個格點只可能是(n ,m )、(n ,m -1)和(n ,m

40、-2),那么(n ,m )一定選擇這3個距離之路徑延伸而通過(n ,m ),這時此路徑的積累距離為: D(n ,m )=dT(n ),R(m )+D(n , m ) 其中的n = n -1 ,m -1由下式?jīng)Q定: D(n ,m )=minD(n , m ),D(n , m -1),D(n , m -2) 這樣可以從(n ,m )=(1,1)出發(fā)搜索(n ,m ),再搜索(n ,m ),對每一個(n ,m )都存儲相應(yīng)的前一格點(n ,m )與相應(yīng)的幀匹配距離dn ,m 。搜索到(n ,m )時,只保留一條最佳路徑。如果有必要的話,通過逐點向前尋找就可以求得整條路徑。這套DP算法便是DTW算法。

41、 §2.6.2 程序?qū)崿F(xiàn)DTW算法可以直接按上面的描述來實現(xiàn),即分配兩個N×M的矩陣,分別為積累距離矩陣D和幀匹配距離矩陣d,其中幀匹配距離矩陣d(i,j)的值為測試模板的第i幀與參考模板的第j幀間的距離。D(N,M)即為最佳匹配路徑所對應(yīng)的匹配距離。 程序中,首先申請兩個n×m的距陣D和d,分別為累積距離和幀匹配距離。這里n和m為測試模板與參考模板的幀數(shù)。然后通過一個循環(huán)計算兩個模板的幀匹配距離距陣d。接下來進行動態(tài)規(guī)劃,為每個格點(i,j)都計算其三個可能的前續(xù)格點的累積距離D1、D2和D3??紤]到邊界問題,有些前續(xù)格點可能不存在,因此要加入一些判斷條件。 最

42、后利用最小值函數(shù)min,找到三個前續(xù)格點的累積距離的最小值作為累積距離,與當(dāng)前幀的匹配距離d(i,j)相加,作為當(dāng)前格點的累積距離。該計算過程一直達到格點(n,m),并將D(n,m)輸出,作為模板匹配的結(jié)果。程序如下:functiondist=fDTW(t,r)n = size(t,1); m = size(r,1); if(abs(n-m)<6) % 幀匹配距離矩陣 d = zeros(n,m); for i = 1:n for j = 1:m d(i,j) = sum(t(i,:)-r(j,:).2); end end % 累積距離矩陣 D = ones(n,m) * realmax

43、; D(1,1) = d(1,1); % 動態(tài)規(guī)劃 for i = 2:n for j = 1:m D1 = D(i-1,j); if j>1 D2 = D(i-1,j-1); else D2 = realmax; end if j>2 D3 = D(i-1,j-2); else D3 = realmax; end D(i,j) = d(i,j) + min(D1,D2,D3); end end dist = D(n,m);else dist=realmax;End§2.7 MATLAB上的GUI設(shè)計MATLA作為功能強大的科學(xué)計算軟件,同樣也提供了圖形用戶界面設(shè)計的功能

44、。在MATLAB中,基本的圖形用戶界面對象包括三類:用戶界面控件對象,下拉式菜單對象和快捷菜單對象。根據(jù)這些圖形對象,可以設(shè)計出界面友好。操作方便的圖形用戶界面。本系統(tǒng)的整個上位機使用MATLAB做的,為了更方便的進行操作,我用MATLAB的GUI設(shè)計了一個圖形界面。上面設(shè)置了串口選擇框、錄音開始按鈕、語音識別結(jié)果框等。實際界下面如圖2-6所示:圖2-6 MATLAB-GUI界面第3章 下位機設(shè)計§3.1 小車總體設(shè)計§3.1.1 小車總體框圖系統(tǒng)總體框圖如下所示。整個系統(tǒng)以單片機作為控制中心,單片機前要接受上位機傳來的控制指令,后要根據(jù)收到的指令控制小車完成不同的功能。小

45、車共有兩個電機,有L298構(gòu)成的H橋來驅(qū)動。穩(wěn)壓電路采用線性穩(wěn)壓芯片7805來完成。系統(tǒng)框圖如圖1-1所示:單片機控制核心串口接收L298電機驅(qū)動電路電機圖3-1 系統(tǒng)總體框圖§3.1.2 小車結(jié)構(gòu)設(shè)計本小車底盤采用三輪結(jié)構(gòu),兩個動力輪分別由兩個直流電機單獨驅(qū)動。第三個輪是轉(zhuǎn)向輪,可以三百六十度轉(zhuǎn)向。核心板采用通用板搭建,采用專用芯片插槽,方便單片機的拆卸。驅(qū)動電路和穩(wěn)壓電路焊在同一通用板上,兩個板子用銅柱固定為上下兩層,節(jié)省空間。整個小車實物圖見附錄一。§3.2 小車硬件設(shè)計§3.2.1 單片機電路設(shè)計本系統(tǒng)單片機采用的是宏晶公司的STC12C5A60S2,它采

46、用增強型8051核。指令代碼完全兼容傳統(tǒng)8051單片機,但速度比傳統(tǒng)8051單片機快8-12倍。單片機控制電路主要有復(fù)位電路、晶體振蕩電路兩部分。其總體電路圖如圖3-2所示:圖3-2 單片機電路圖1. 復(fù)位電路復(fù)位電路是單片機控制電路中很重要的電路之一。STC12C5A60S2單片機為高電平復(fù)位,與即要使得復(fù)位管腳RST保持一定時間的高電平。其復(fù)位電路分兩種情況。當(dāng)單片機時鐘頻率小于12MHZ時,采用第一種復(fù)位電路。將RST管腳接1K電阻R1到地,其電路如圖3-3所示。圖3-3 第一復(fù)位電路當(dāng)單片機時鐘頻率大于12MHZ時,采用第二復(fù)位電路,其電路如圖3-4所示。圖3-4 第二復(fù)位電路本電路單

47、片機時鐘采用的是12MHZ,故復(fù)位電路采用第二種。以上復(fù)位電路只能保證單片機能夠上電復(fù)位,為了更好的進行調(diào)試,本電路對上面的電路進行了更改,使得單片機電路能夠手動復(fù)位。改進后的復(fù)位電路如下圖3-5所示。當(dāng)按鍵按下時,由于電阻R1的作用,RST管腳保持為高電平。單片機復(fù)位。圖3-5 改進后的實際復(fù)位電路2. 晶振電路STC12C5A60S2單片機部含有R/C時鐘振蕩電路,單片機可以選擇使用部自有的R/C時鐘振蕩電路,也可以使用外接的高精度晶體/時鐘。用戶在下載用戶程序時,可選擇是使用部R/C振蕩器還是外部晶體時鐘。常溫下部時鐘頻率為5V單片機:1117MHZ,3.3V單片機:812MHZ。單片機

48、部時鐘電路受溫漂等影響較大,當(dāng)對精度要求不高時可以使用部時鐘。本電路需要串口數(shù)據(jù)收發(fā),控制對時鐘要求較高,故采用的時鐘源是外接的高精度晶體/時鐘。其電路如圖3-6所示。圖3-6 晶體振蕩電路§3.2.2 驅(qū)動電路設(shè)計驅(qū)動電路的選擇與穩(wěn)定性對小車性能來說是至關(guān)重要的。這里我采用L298專用驅(qū)動芯片來驅(qū)動兩個直流電機。L298驅(qū)動芯片置兩個H橋電路,可以兩個電機實現(xiàn)正轉(zhuǎn)和翻轉(zhuǎn)。最大輸出電流可以達到兩安,這對小車上的直流電機足夠用。L298的外圍電路也是非常重要的,圖3-7為L298的外圍電路。途中8個單向?qū)ǘO管起著非常重要的作用,它可以防止電機磁場作用產(chǎn)生很大的反向電壓時對L298部

49、電路的破壞作用。圖3-7 L298外圍電路§3.2.3 穩(wěn)壓電路設(shè)計小車的整個硬件電路共需要兩個電壓,電源電壓為8伏,直接供給直流電機。而單片機控制電路需要五伏的電壓,故需要設(shè)計一個穩(wěn)壓電路來輸出穩(wěn)定的5伏電壓供給單片機控制電路。本系統(tǒng)采用線性穩(wěn)壓芯片7805把8伏的電源電壓穩(wěn)成5伏輸出。其電路圖如圖3-8所示:LM7805VinVout=5V圖3-8 5V穩(wěn)壓電路§3.3 小車軟件設(shè)計§3.3.1 主程序流程圖系統(tǒng)初始化前進停止后退串口數(shù)據(jù)1圖3-9 主函數(shù)流程圖小車單片機采用STC12C5260S2,此單片機屬于8051核,采用KEIL開發(fā)環(huán)境來編程。下位機程

50、序主要功能就是時刻準(zhǔn)備接受上位機傳來的串口數(shù)據(jù),然后,根據(jù)不同的數(shù)據(jù)控制小車電機是小車完成不同的動作。主函數(shù)流程圖如圖3-9所示:§3.3.2 部分主程序部分程序如下:#include<reg52.h>#include"hard.h"unsigned char RxBuf32=0; /接收緩沖區(qū) /* 名稱 : Com_Init()* 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中斷* 輸入 : 無* 輸出 : 無*/void Com_Init(void) TMOD = 0x20; PCON = 0x00; SCON = 0x5

51、0; TH1 = 0xFd; /設(shè)置波特率 9600 TL1 = 0xFd; TR1 = 1;/啟動定時器1 ES = 1;/開串口中斷 EA = 1;/開總中斷/* 名稱 : Com_Isr()* 功能 : 串口中斷子函數(shù)* 輸入 : 無* 輸出 : 無*/void Com_Isr(void) interrupt 4static unsigned char i = 0; /定義為靜態(tài)變量,當(dāng)重新進入這個子函數(shù)時 i 的值不會發(fā)生改變EA = 0;if(RI = 1) /當(dāng)硬件接收到一個數(shù)據(jù)時,RI會置位if(i = 0)RxBuf0 = SBUF - 48; /這里減去48是因為從電腦中發(fā)送

52、過來的數(shù)據(jù)是ASCII碼。RI = 0; i+;i=i%2;EA = 1;/*主函數(shù)*/void main()Com_Init();while(1)switch(RxBuf0)case 1:go_ahead();break;case 2:stop();break;case 3:go_afterward();break;default :;§3.3.3 底層驅(qū)動程序底層驅(qū)動程主要分兩塊兒:電機控制程序和串口控制程序。串口控制主要是進行寄存器設(shè)置,設(shè)置串口時鐘得喝波特率。串口數(shù)據(jù)的接收程序有查詢法和中斷法。查詢法主要是通過不斷查詢串口數(shù)據(jù)接收標(biāo)志位,當(dāng)標(biāo)志位置位時,說明串口數(shù)據(jù)接收緩沖區(qū)

53、已滿,于是就可以把數(shù)據(jù)從接收緩沖區(qū)中讀出,其流程圖如圖3-10。中斷的方法是,打開單片機硬件串口中斷,串口數(shù)據(jù)接收緩沖區(qū)已滿時,單片機就會觸發(fā)串口中斷,通知CPU讀取串口接收的數(shù)據(jù)。中斷的方法可以減少CPU占用率,故這里我采用了中斷的方法。RI= =1YNRI=0;讀取串口數(shù)據(jù)開始圖3-10 串口程序,查詢法電機控制主要是通過控制L298電機驅(qū)動芯片來控制電機。L298有六個輸入腳(IN1,IN2,ENA;IN3,IN4,EAB)和四個輸出腳(OUT1,OUT2;OUT3,OUT4)。它的六個輸入口分別連接單片機的P00P05,四個輸出口連接兩個電機。通過控制六個輸入口電平來控制電機正反轉(zhuǎn)或者停止。其主要的控制方法見表3-1:表3-1 電機控制IN1IN2ENAOUT1OUT2電機101高低正轉(zhuǎn)011低高翻轉(zhuǎn)××0高阻高阻停轉(zhuǎn)IN3IN4EABOUT3OUT4電機101高低正轉(zhuǎn)011低高翻轉(zhuǎn)××0高阻高阻停轉(zhuǎn)結(jié)論本次設(shè)計對語音識別的現(xiàn)有算法進行了實現(xiàn)和驗證,并對端點檢測和匹配方法進行了稍微改進。小車的硬件設(shè)計性能良好,軟件運行正常,能達到預(yù)定要求。本設(shè)計達到了預(yù)期目標(biāo)。本設(shè)計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論