李健楠110103020087儀表2班_第1頁
李健楠110103020087儀表2班_第2頁
李健楠110103020087儀表2班_第3頁
李健楠110103020087儀表2班_第4頁
李健楠110103020087儀表2班_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、燕山大學(xué)課 程 設(shè) 計 說 明 書 題目: 基于MATLAB的語音識別設(shè)計 學(xué)院(系): 電氣工程學(xué)院 年級專業(yè): 11級儀表2班 學(xué) 號: 110103020087 學(xué)生姓名: 李健楠 指導(dǎo)教師: 謝平 杜義浩 教師職稱: 教授 講師 指導(dǎo)教師: 張淑清 教師職稱: 教授 燕山大學(xué)課程設(shè)計(論文)任務(wù)書院(系):電氣工程學(xué)院 基層教學(xué)單位:自動化儀表系學(xué) 號110103020087學(xué)生姓名李健楠專業(yè)(班級)儀表2班設(shè)計題目基于MATLAB的語音識別設(shè)計設(shè)計技術(shù)參數(shù)1. 語音信號的端點檢測2. 非線性預(yù)測mfcc系數(shù)3. 三角帶通濾波器4. DTW算法5. MATLAB與單片機串口設(shè)計要求1.

2、提取的特征參數(shù)要能有效地代表語音特征,具有很好的區(qū)分性。2.各階參數(shù)之間有良好的獨立性。3.特征參數(shù)要計算方便,最好有高效的計算方法,以保證語音識別的實時實現(xiàn)。4. 搭建GUI界面,使展示更加直觀清晰。工作量首先通過語音的錄制作為輸入信號,輸入的模擬語音信號要進行預(yù)處理,包括預(yù)濾波、采樣和量化、加窗、端點檢測、預(yù)加重等等。經(jīng)過預(yù)處理后,接下來就是重要的一環(huán):特征參數(shù)提取。最后進行GUI界面的設(shè)計及與單片機相連。工作計劃第1-2天 根據(jù)任務(wù)書及設(shè)計題目的要求查閱相關(guān)資料文獻,確定總體設(shè)計思路 第3-4天 具體的分析設(shè)計題目,理解原理同時尋求相關(guān)的實現(xiàn)算法第5-8天 編寫程序代碼,并上機進行調(diào)試第

3、9-10天 整理方法和結(jié)果,撰寫課程設(shè)計報告書,進行答辯參考資料1信號處理原理及應(yīng)用 謝平 林洪彬 王娜編著 機械工業(yè)出版社2 Matlab 通信仿真與應(yīng)用 劉敏 魏玲編著 國防工業(yè)出版社3基于Matlab7.x 的系統(tǒng)分析與設(shè)計 樓順天等編著 西安電子科技大學(xué)4基于聲卡和MATLAB 的語音信號采集和處理 陳宇鋒著 中國現(xiàn)代教育裝備5數(shù)字信號處理 孫洪等譯 電子工業(yè)出版社指導(dǎo)教師簽字基層教學(xué)單位主任簽字說明:此表一式四份,學(xué)生、指導(dǎo)教師、基層教學(xué)單位、系部各一份。2014年 7 月 5 日 燕山大學(xué)課程設(shè)計說明書摘要語言是人類交換信息最方便、最快捷的一種方式,在高度發(fā)達的信息社會中,用數(shù)字化

4、的方法進行語音的傳送、存儲、識別、合成和增強等是整個數(shù)字化通信網(wǎng)中最重要、最基本的組成部分之一。而在隨著科技技術(shù)的發(fā)展的今天,除了人與人之間的自然語言通信之外,人與機或機器與機器之間也開始使用語言。也就是因為如此,需要涉及到語音識別技術(shù)。為了解決機器能“聽懂”人類的語言,在科技如此迅猛發(fā)展的今天,語音識別技術(shù)一直受到各國科學(xué)界的關(guān)注,其對計算機發(fā)展和社會生活的重要性也日益凸顯出來。在孤立字語音識別中,如語音密碼鎖,汽車控制等領(lǐng)域,都運用到了特定人語音識別技術(shù),也就是DTW算法,相對于HMM算法,DTW算法具有簡單操作。在相同環(huán)境下,兩者識別效果相差不大,但是HMM算法要復(fù)雜得多,主要體現(xiàn)在HM

5、M算法在訓(xùn)練階段需要提供大量的語音數(shù)據(jù),而DTW算法則不需要額外的計算。所以在特定人語音識別當(dāng)中,DTW算法被廣泛使用。在本次設(shè)計中,將運用到MATLAB平臺來對語音信號進行處理及識別。通過MATLAB平臺建立一個GUI界面,接著對一組語音信號的輸入進行預(yù)處理及端點檢測,提取特征參數(shù)(MFCC),形成參考模塊。然后再對一組相同的語音信號輸入進行同樣的操作作為測試模塊,與參考模塊進行DTW算法進行匹配,輸出匹配后的識別結(jié)果。最后通過串口連接實現(xiàn)識別的命令與單片機相連,借助c語言,顯示識別的數(shù)據(jù),達到matlab與單片機,軟件與硬件的結(jié)合。關(guān)鍵詞MATLAB GUI 端點檢測 MFCC DTW 串

6、口 單片機 目 錄摘要I第1章 研究背景及意義.1第2章 總體設(shè)計思路2 1.1 設(shè)計目的2 1.2 設(shè)計意義21.3 總體設(shè)計方案及思路3第2章 信號處理模塊基本原理32.1 端點檢測32.2 MEL倒譜系數(shù)的求取10 2.3 DTW算法.12第3章MATLAB與單片機連接模塊.15第4章 MATLAB軟件設(shè)計及實現(xiàn)163.1 GUI概述163.2 MATLAB語音信號類型183.3 設(shè)計流程19第5章 系統(tǒng)整體調(diào)試及結(jié)果說明20第6章 課設(shè)學(xué)習(xí)心得及總結(jié)21參考文獻22附錄23I燕山大學(xué)課程設(shè)計說明書 第1章 研究背景及意義早在計算機發(fā)明之前,自動語音識別的設(shè)想就已經(jīng)被提上了議事日程,早期

7、的聲碼器可被視作語音識別及合成的雛形。而1920年代生產(chǎn)的RadioRex玩具狗可能是最早的語音識別器,當(dāng)這只狗的名字被呼喚的時候,它能夠從底座上彈出來。最早的基于電子計算機的語音識別系統(tǒng)是由AT&T貝爾實驗室開發(fā)的Audrey語音識別系統(tǒng),它能夠識別10個英文數(shù)字。其識別方法是跟蹤語音中的共振峰。該系統(tǒng)得到了98%的正確率。到1950年代末,倫敦學(xué)院(ColledgeofLondon)的Denes已經(jīng)將語法概率加入語音識別中。1960年代,人工神經(jīng)網(wǎng)絡(luò)被引入了語音識別。這一時代的兩大突破是線性預(yù)測編碼LinearPredictiveCoding(LPC),及動態(tài)時間彎折DynamicTime

8、Warp(DTW)技術(shù)。國外的語音識別的研究工作可以追溯到20世紀50年代AT&T貝爾實驗室的Audry系統(tǒng),它是第一個可以識別十個英文數(shù)字的語音識別系統(tǒng)。但真正取得實質(zhì)性進展,并將其作為一個重要的課題開展研究則是在60年代末70年代初。這首先是因為計算機技術(shù)的發(fā)展為語音識別的實現(xiàn)提供了硬件和軟件的可能,更重要的是語音信號線性預(yù)測編碼(LPC)技術(shù)和動態(tài)時間規(guī)整(DTW)技術(shù)的提出,有效的解決了語音信號的特征提取和不等長匹配問題。這一時期的語音識別主要基于模板匹配原理,研究的領(lǐng)域局限在特定人,小詞匯表的孤立詞識別,實現(xiàn)了基于線性預(yù)測倒譜和DTW技術(shù)的特定人孤立詞語音識別系統(tǒng);同時提出了矢量量化

9、(VQ)和隱馬爾可夫模型(HMM)理論。 第2章 總體設(shè)計思路1.1 設(shè)計目的語言是人類交換信息最方便、最快捷的一種方式,在高度發(fā)達的信息社會中,用數(shù)字化的方法進行語音的傳送、存儲、識別、合成和增強等是整個數(shù)字化通信網(wǎng)中最重要、最基本的組成部分之一。隨著人類步入信息社會步伐的加快,越來越多的地方需要用到語音信號處理的知識。而MATLAB作為一個語音信號處理的平臺,是一個高性能的科學(xué)計算軟件,廣泛應(yīng)用于數(shù)學(xué)計算、算法開發(fā)、數(shù)學(xué)建模、系統(tǒng)仿真、數(shù)據(jù)分析處理及可視化、科學(xué)和工程繪圖、應(yīng)用系統(tǒng)開發(fā)(包括建立用戶界面)等。其語言是一種簡單、高效、功能極強的高級語言,具有強大的矩陣運算能力和極高的編程效率

10、,這一方面使得MATLAB程序可以被高度向量化,另一方面使得程序易讀易寫。本設(shè)計主要圍繞著MATLAB平臺進行語音信號的錄制及預(yù)處理,提取特征參數(shù),建立兩種模塊,一組為參考模塊,一組為測試模塊,然后通過DTW算法進行匹配,算出匹配結(jié)果。主要通過用戶開發(fā)界面直觀地呈現(xiàn)出來。1.2 設(shè)計意義 語音識別技術(shù)的應(yīng)用及研究方向 連續(xù)自然語音的識別。目的是能讓計算機更好的理解人說的話,能讓計算機更好的處理人類流暢的自然發(fā)音,該技術(shù)需要解決的難點很多,對它的研究是今后的目標(biāo)之一。語音識別技術(shù)與多媒體技術(shù)的結(jié)合。今后的發(fā)展,人類對語音信號的需要將不僅僅局限于可懂性和正確性上了,而是需要在合成語音的美感的同時并

11、輸出輔助的視頻特征,實現(xiàn)主持人的效果。 不同語種的解決。不同民族有不同的語言,在如今開放的信息網(wǎng)絡(luò)時代,不同語言之間的交流顯得十分重要,因此,多語種的合成有著獨特的應(yīng)用價值。例如,在自動電話翻譯、有聲電子郵件等應(yīng)用中都涉及到了多語種合成的需求。1.2 總體設(shè)計方案及思路本次課設(shè)主要通過運用MATLAB進行編程,結(jié)合GUI界面實現(xiàn)語音識別09這幾個數(shù)字,主要用的是端點檢測,非線性預(yù)測MFCC系數(shù),DTW算法等,然后通過MATLAB與串口相連實現(xiàn)將識別出的語音信號傳送到單片機上顯示,實現(xiàn)單片機與MATLAB的連接,硬件與軟件的結(jié)合。第2章 信號處理模塊基本原理2.1 端點檢測如圖3.1可以看到,數(shù)

12、字“1”信號在大致450011000之間的采樣點屬于發(fā)音狀態(tài),頭部跟尾部的信號幅度都很低,屬于靜音或噪音。圖2.1 數(shù)字“1”的時域圖圖2.1是數(shù)字“1”的頭部放大圖,從圖中可以看出,在4400之前的信號幅度很低,明顯屬于靜音,而從4400開始,幅度開始增強,并且有明顯的周期性,兩個尖峰之間的距離就是所謂的基音周期,也就是人的聲帶振動的周期。這樣的話,我們可以用信號的幅度作為特征,區(qū)分靜音和語音。只要設(shè)定一個門限,當(dāng)信號幅度超過這個門限的時候,就當(dāng)作語音開始,當(dāng)幅度降低到門限以下的時候就認為語音結(jié)束。圖2.2 數(shù)字“1”頭部放大圖 因此,我們可以采用短時能量來描述語音信號的幅度。比如,對于一個

13、讀取到的語音信號x(n),其中n為采樣點,首先進行分幀,將語音信號分為每2030ms一段,相鄰兩幀起始點之間間隔為10ms,也就是說兩幀之間有1020ms的交疊。由于采樣頻率的差異,幀長和幀移所對應(yīng)的實際采樣點數(shù)都不一樣。 對應(yīng)第i幀,第n個樣本,它與原始語音信號的關(guān)系為:xi(n)=x(i-1)M+n 第i幀的語音信號的短時能量就可以用下面幾種算法得到: 分別為絕對值的累加、平方累加和平方的對數(shù)的累加,選擇其中一種就可以了。計算完每幀的短時能量,然后再設(shè)定一個門限,就可以實現(xiàn)一個簡單的檢測算法了。但是這種算法不可靠,因為人的發(fā)音有清音和濁音之分,濁音為聲帶振動發(fā)出,對應(yīng)的幅度高,周期性明顯,

14、而清音則不會有聲帶的震動,只是靠空氣在口腔中的摩擦、沖擊或爆破而發(fā)音,其短時能量一般比較小。如聲母“s”、“c”等的幅度就很低,往往會被漏掉。圖2.3 數(shù)字“3”的頭部放大圖比如圖3.3顯示的數(shù)字“3”開始部分的波形,可以看到聲母“s”的范圍大概為64007100。幅度明顯比后面的低很多,以至于有時用肉眼都難以區(qū)分跟靜音的區(qū)別,所以基于短時能量的算法對這些語音信號幾乎無能為力。 不過雖然不能用短時能量可靠的區(qū)分開,但是可以發(fā)現(xiàn)在靜音段信號的波形變化相對比較緩慢,而在清音段,因為口腔空氣摩擦的效果,造成的波形在幅度上相對變化比較劇烈,這時,可以通過用一幀信號中波形穿越零電平的次數(shù)來描述這種變化的

15、劇烈程度,成為過零率,公式為: 實際上,為了避免靜音段的隨機噪聲產(chǎn)生過高的過零率,通常都會先設(shè)定一個門限,當(dāng)前后兩個采樣的符號不同時,而且差值大于該門限的時候,就將過零率的數(shù)值加1。 該算法不是實時運行的,而是讀取一個wav文件獲得語音采樣,然后將其分幀計算短時能量和過零率參數(shù),再進行端點檢測。這種方式稱為離線處理方法。(1)短時能量的計算 基于前面講過的短時能量可以用下面命令實現(xiàn): amp1=sum(log(y.*y+eps),2);在計算短時能量時,一般都要將語音信號通過一個一階高通濾波器,稱為預(yù)加重濾波器,它的目的在于濾除掉低頻干擾,尤其是50Hz或60Hz的工頻干擾,提升更為有用的高頻

16、部分的頻譜。在計算短時能量之前應(yīng)用該濾波器,還可以起到消除直流漂移、抑制隨機噪聲和提升清音部分能量的效果。公式為:amp = sum(abs(enframe(filter(1 -0.9375, 1, x), FrameLen, FrameInc), 2); 在公式中用的雖是絕對值能量,實際上就是平均幅度。(2)過零率的計算 過零率的計算則沒有那么簡單。其計算過程如圖3.4所示。 否zcr(i)=zcr(i)+1j=j+1輸入語音信號設(shè)定一個門限deltax(j)+x(j+1)delta?是 圖2.4 短時過零率流程圖在計算流程中,可以設(shè)置門限delta=0.02。這個門限可以進行細微的調(diào)整,通

17、過該流程并編寫相應(yīng)的代碼可以得到圖3.5波形。 與原始語音信號波形一起可以看到,語音信號聲母部分的幅度雖然比較低,但是其過零率的數(shù)值卻很高,峰值將近50,而在其后面的韻母部分過零率則比較低,在20左右。圖2.5 過零率波形圖因此,在實際應(yīng)用中,一般都是利用過零率來監(jiān)測清音,利用短時能量來監(jiān)測濁音,兩者配合起來則實現(xiàn)可靠的端點檢測。用得比較多的是一種雙門限的算法。在過零率的程序中,為了后面處理方便,通常將讀取的語音信號進行歸一化,即:x=x./max(abs(x);然后再計算語音信號的短時能量和過零率,而該程序用了兩重循環(huán),影響了運算速度,為了提高算法的效率,通常采用一種矢量化的計算方法,如下:

18、tmp1= enframe(x(1:end-1), FrameLen, FrameInc);tmp2= enframe(x(2:end), FrameLen, FrameInc);signs = (tmp1.*tmp2)0.02;zcr = sum(signs.*diffs, 2);以上代碼中,tmp1和tmp2都是由x得到,但是相互之間相差一個采樣點,signs為符號數(shù)組,用于存儲相鄰兩個采樣點的符號是否相同,也就是說是否穿越零電平。diffs用來度量相鄰兩個采樣點之間的距離,如果距離大于所設(shè)置的門限即0.02,則為1,否則為0。最后將兩個矩陣點相乘就可以得到滿足兩個條件的采樣點矩陣。然后將

19、其按幀求和,就可以得到過零率。(3)端點檢測的流程前兩小節(jié)均介紹了語音端點檢測兩點主要算法,其檢測流程如圖3.6所示。語音信號輸入設(shè)置短時能量高、低門限設(shè)置短時過零率高、低門限計算過零率計算短時能量進入狀態(tài)status開始檢測調(diào)整能量門限歸一化圖2.6 端點檢測算法流程圖檢測之前,先為短時能量和過零率分別確定兩個門限。一個是比較低的門限,其數(shù)值比較小,對信號的變化能夠敏感,很容易就會被超過;而另一個是比較高的門限,數(shù)值要求比較大,信號要達到一定的強度,該門限才可能被超過。不過,低門限被超過未必就是語音的開始,有可能是時間很短的噪聲引起的。高門限被超過的話則可以基本確定是由于語音信號引起的。(4

20、)端點檢測運行結(jié)果從運行結(jié)果可以看出通過上述方法可以較為準確的顯示出語音信號的起始終止段,從而實現(xiàn)端點檢測,較好的為下一步的工作鋪墊。2.2 MEL倒譜系數(shù)的求取 隨著語音識別技術(shù)在各個國家的科學(xué)界受到重視,尋找一種與人耳相近的參數(shù)是每個科學(xué)家的目標(biāo),而近年來,一種能夠比較充分利用人耳這種特殊的感知特性的參數(shù)得到廣泛應(yīng)用,這種參數(shù)就是Mel尺度倒譜參數(shù)(Mel-scaled Cepstrum Coefficients),或稱Mel頻率倒譜參數(shù),簡稱MFCC。1.MFCC基本原理在語音識別處理信號過程中,MFCC參數(shù)是按照幀計算的。其特征提取及計算過程如圖2.7所示。x(n)預(yù)加重、分幀、加窗端

21、點檢測DFT/FFTMel頻率濾波器組log對數(shù)能量DCT求倒譜、圖2.7 MFCC特征提取及計算流程(1)預(yù)加重、分幀及加窗 在語音參數(shù)計算之前,一般要將其通過一個預(yù)加重濾波器,預(yù)加重目的是為了對語音的高頻部分進行加重增加其高頻分辨率,其函數(shù)為:x=filter(1 -0.9375,1,x);分幀操作主要是提取語音短時特性便于建模,一般取幀長30ms,幀移10ms;對于語音信號時域分析來說,窗函數(shù)的選擇很重要,雖說矩形窗平滑比較好,但是容易丟失波形細節(jié),并有可能造成泄漏現(xiàn)象。而Hamming窗可以有效的客服泄漏現(xiàn)象。所以在加窗方面常以Hamming窗為主,即:(2)端點檢測端點檢測是語音識別

22、中的一個重要環(huán)節(jié),有效的端點檢測方法不僅可以減少數(shù)據(jù)的存儲量和處理時間,還可以排除無聲段的噪聲干擾。而在第三章就詳細介紹了基于短時能量和短時過零率的端點檢測算法過程。可以參考下第三章的端點檢測算法。(3)FFT算法計算:在序列后補零以構(gòu)成N=512點在進行離散FFT變換,第i幀語言的頻譜為:。(4)將上述線性頻譜X(k,i)通過在頻率范圍內(nèi)設(shè)置的若干個具有三角濾波特性的帶同濾波器的Mel濾波器組得到Mel頻譜。總傳遞函數(shù)為: (5)將對數(shù)能量譜S(k,i)經(jīng)過離散余弦變換(DTC)即可得到Mel倒譜系數(shù),M為濾波器的個數(shù):。2.MFCC運行結(jié)果 如圖2.8可以看出不同語音信號分別對應(yīng)的MFCC

23、系數(shù)圖存在明顯的差異,對應(yīng)分別為0,1,2。0的MFCC系數(shù)圖前一段相對較平穩(wěn),后一段相對波動較大,1的MFCC系數(shù)圖基本比較平穩(wěn),2的MFCC整體的波動都比較大。2.3 DTW算法 在孤立詞語音識別中,最為簡單有效的方法是采用DTW算法,該算法基于動態(tài)規(guī)劃(DP)的思想,解決了發(fā)音長短不一的模板匹配為題,是語音識別中出現(xiàn)較早、較為經(jīng)典的一種算法。 無論在訓(xùn)練和建立模板階段還是在識別階段,都先采用端點檢測算法確定語音的起點和終點。已存入模板庫的各個詞條稱為參考模板,一個參考模板可以表示為,m為訓(xùn)練語音幀的時序標(biāo)號,m=1為起點語音幀,m=M為終點語音幀,因此M為該模板所包含的語音幀總數(shù),R(m

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

25、度量,在DTW算法中通常采用歐氏距離。通常,規(guī)整函數(shù)被限制在一個平行四邊形的網(wǎng)格內(nèi),如圖.1所示。它的一條邊斜率為2,另一條邊斜率為1/2。規(guī)整函數(shù)的起點是(1, 1),終點為(N,M)。DTW算法的目的是在此平行四邊形內(nèi)由起點到終點尋找一個規(guī)整函數(shù),使其具有最小的代價函數(shù),保證了測試模板與參考模板之間具有最大的聲學(xué)相似特性。圖2.8DTW原理圖由于在模板匹配過程中限定了彎折的斜率,因此平行四邊形之外的格點對應(yīng)的幀匹配距離是不需要計算的。另外,因為每一列各格點上的匹配計算只用到了前一列的3個網(wǎng)格,所以沒有必要保存所有的幀匹配距離矩陣和累積距離矩陣。充分利用這兩個特點可以減少計算量和存儲空間的需

26、求,形成一種高效的DTW算法,如圖所示。圖中,把實際的動態(tài)彎折分為三段,(1,xa),(xa+1,xb),(xb+1,N),其中:xa= (2M-N)/3,xb=2(2N-M)/3xa和xb都取最相近的整數(shù),由此可得出對M和N長度的限制條件:2M-N3,2N-M2當(dāng)不滿足以上條件時,認為兩者差別太大,則無法進行動態(tài)彎折匹配。在x軸上的每一幀不再需要與y軸上的每一幀進行比較,而只是與y軸上ymin,ymax間的幀進行比較,ymin和ymax的計算公式為:ymin=x/2,0xxb,2x+(M-2N),xb xNymax=2x,0xxa,x/2+(M-N/2),xa xb的情況,則彎折匹配的三段為

27、(1,xb),(xb+1,xa),(xa+1,N)。對于x軸上每前進一幀,雖然所要比較的y軸上的幀數(shù)不同,但彎折特性是一樣的,累積距離的更新都是用下式實現(xiàn)的: D(x,y) = d(x,y)+minD(x-1,y),D(x-1,y-1),D(x-1,y-2)第3章 MATLAB與單片機連接模塊通過編寫串口通信的連接及51單片機的連接,實現(xiàn)上位機與下位機的相連,將上位機的運行結(jié)果發(fā)送到下位機,同時也可將下位機接收的數(shù)據(jù)反饋給上位機,實現(xiàn)串口通信,軟件與硬件結(jié)合。當(dāng)上位機實現(xiàn)識別某一個數(shù)字的時候,通過GUI界面的按鈕打開串口,實現(xiàn)串口通信,然后將識別的數(shù)字轉(zhuǎn)換為ASCII的對應(yīng)值,借助C語言在單片

28、機數(shù)碼管中實現(xiàn)顯示。部分代碼如下:function pushbutton1_Callback(hObject, eventdata, handles)clc;global s;s=serial(COM3,BaudRate,9600,Parity,none,DataBits,8,StopBits,1);s.BytesAvailableFcnMode=byte;s.BytesAvailableFcnCount=1;s.BytesAvailableFcn=instrcallback;fopen(s);function pushbutton2_Callback(hObject, eventdata,

29、handles)global da;Dafunction pushbutton3_Callback(hObject, eventdata, handles)global s;fclose(s)第4章 MATLAB軟件設(shè)計與實現(xiàn)4.1 GUI概述在開發(fā)一個實際的應(yīng)用程序時都會盡量做到界面友好,最常用的方法就是使用圖形界面。其能夠使用戶的學(xué)習(xí)和使用更為方便容易。用戶不需要知道應(yīng)用程序究竟怎樣執(zhí)行各種命令的,而只需要了解可見界面組件的使用方法;用戶也不需要知道命令是怎么執(zhí)行的,只要通過與界面交互就可以使指定的行為得以正確執(zhí)行。正是MATLAB為用戶開發(fā)圖形界面提供了一個方便高效的集成開發(fā)環(huán)境,MAT

30、LAB圖形用戶界面開發(fā)環(huán)境GUIDE(MATLAB Graphical User Interface Development Environment)。GUIDE主要是一個界面設(shè)計工具集,MATLAB R2011B將所有GUI支持的用戶控件都集成在這個環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法。GUIDE將用戶設(shè)計好的GUI界面保存在一個FIG資源文件中,同時還能夠生成包含GUI初始化和組件界面布局控制代碼的M文件。這個M文件為實現(xiàn)回調(diào)函數(shù)(當(dāng)用戶激活GUI某一組件時執(zhí)行的函數(shù))提供了一個參考框架。設(shè)置GUIDE應(yīng)用程序GUI界面設(shè)計編寫GUI回調(diào)函數(shù)代碼圖4.1 GUI設(shè)計框架圖實現(xiàn)

31、一個GUI主要包括GUI界面設(shè)計和GUI組件編程兩項工作。整個GUI的實現(xiàn)過程如圖4.1所示圖4.2 GUI打開方式4.2 MATLAB中的語音信號模型可以看出,發(fā)音過程及收聽語音的過程是及其復(fù)雜的。所以對于計算機而言,是難以找到一種完全接近的算法來詮釋發(fā)音及收聽過程。但是,在MATLAB R2011B中,有兩個函數(shù)可以用來模擬人的發(fā)音及收集語音功能,即wavplay函數(shù)跟wavreord函數(shù)。部分聲音信號的時域波形: 圖4.3 數(shù)字“1”的時域圖 圖4.4 數(shù)字“3”的時域圖錄取參考模板信號錄取測試模板信號4.3 軟件設(shè)計流程與單片機進行通信進行語音識別進行保存播放作圖等功能第4章 系統(tǒng)整體

32、調(diào)試及結(jié)果說明通過調(diào)試可以實現(xiàn)預(yù)期功能,實現(xiàn)測試模板與參考模板之間的語音信號09數(shù)字的識別,并與單片機連接后可以在數(shù)碼管上顯示識別的結(jié)果。 第5章 課設(shè)學(xué)習(xí)心得及總結(jié)通過這次的課設(shè),在我們組的成員的共同努力下實現(xiàn)了預(yù)期的功能,在這個過程中也確實學(xué)到了很多的東西,對語音信號的算法有了更深入的了解,以及如何和單片機相連,實現(xiàn)簡單的上位機和下位機的通信,雖然還有很多不足的地方,包括語音信號的識別的準確率,端點檢測門限的參數(shù)等問題,相信以后有時間和機會我們能更加好的解決這些問題,做的更好。21 燕山大學(xué)課程設(shè)計說明書 參考文獻1信號處理原理及應(yīng)用 謝平 林洪彬 王娜編著 機械工業(yè)出版社2 Matlab

33、 通信仿真與應(yīng)用 劉敏 魏玲編著 國防工業(yè)出版社3基于Matlab7.x 的系統(tǒng)分析與設(shè)計 樓順天等編著 西安電子科技大學(xué)4基于聲卡和MATLAB 的語音信號采集和處理 陳宇鋒著 中國現(xiàn)代教育裝備5數(shù)字信號處理 孫洪等譯 電子工業(yè)出版社3 章及標(biāo)題 附錄GUI程序:function ceshiluyin_Callback(hObject, eventdata, handles)%語音輸入%global n_test;n_test=waitbar (0,請等待,測試模塊正在錄音.);global mysound_test;mysound_test=audiorecorder(8000,16,1)

34、; record(mysound_test);% hObject handle to ceshiluyin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % - Executes on button press in ceshizanting.function ceshizanting_Callback(hObject, eventdata, handles)globa

35、l n_test;delete(n_test);h_test=waitbar (0,測試模塊錄音完成);global mysound_test;pause(mysound_test);waitbar (1,h_test,測試模塊錄音完成);pause(1);delete(h_test);% hObject handle to ceshizanting (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data

36、(see GUIDATA) % - Executes on button press in ceshibaocun.function ceshibaocun_Callback(hObject, eventdata, handles)%語音存儲%global mysound_test;h_test=waitbar (0,請等待,正在存儲測試模塊錄音.);global mysoundinpc_test;mysoundinpc_test=getaudiodata(mysound_test);filename pathname=uiputfile(*.wav,wav-files(*.wav);*.*,

37、All-files(*.*),另存為);str=strcat(pathname,filename);save(str,mysoundinpc_test);wavwrite(mysoundinpc_test,8000,str);waitbar (1,h_test,測試模塊錄音已存儲);pause(1);delete(h_test);% hObject handle to ceshibaocun (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with h

38、andles and user data (see GUIDATA) % - Executes on button press in ceshizuotu.function ceshizuotu_Callback(hObject, eventdata, handles)%信號處理、分析并作圖%global mysoundinpc_test;global mysound_test;siglength1_test=length(mysoundinpc_test);t1_test=(0:siglength1_test-1)/8000;axes(handles.axes2);plot(t1_test,

39、mysoundinpc_test);xlabel(Time(s);title(截取信號序列);% hObject handle to ceshizuotu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % - Executes on button press in pushbutton21.function pushbutton21_Callback(hObject,

40、eventdata, handles)Testdtw;% hObject handle to pushbutton21 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % - Executes on button press in Exit.function Exit_Callback(hObject, eventdata, handles)% hObject handl

41、e to Exit (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)close(gcf); % - Executes on button press in pushbutton6.function cankaobaocun_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GC

42、BO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%語音存儲%global mysound;h=waitbar (0,請等待,正在存儲參考模塊錄音.);global mysoundinpc;mysoundinpc=getaudiodata(mysound);filename pathname=uiputfile(*.wav,wav-files(*.wav);*.*,All-files(*.

43、*),另存為);str=strcat(pathname,filename);save(str,mysoundinpc);wavwrite(mysoundinpc,8000,str);waitbar (1,h,參考模塊錄音已存儲); %讓選擇路徑及其名稱pause(1); delete(h); % - Executes on button press in ceshibofang.function ceshibofang_Callback(hObject, eventdata, handles)%語音播放%global mysoundinpc_test;global mysound_test;h

44、_test=waitbar (0,測試模塊錄音正在播放.);wavplay(mysoundinpc_test,8000);waitbar(1,h_test,測試模塊錄音播放完成);delete(h_test);% hObject handle to ceshibofang (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % - Executes on button pre

45、ss in pushbutton6.function cankaoluyin_Callback(hObject, eventdata, handles)% hObject handle to cankaoluyin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%語音輸入%global n;n=waitbar (0,請等待,參考模塊正在錄音.);global mysoun

46、d;mysound=audiorecorder(8000,16,1); record(mysound); % - Executes on button press in cankaozuotu.function cankaozanting_Callback(hObject, eventdata, handles)% hObject handle to cankaozuotu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles an

47、d user data (see GUIDATA)global n;delete(n);h=waitbar (0,參考模塊錄音完成);global mysound;pause(mysound);waitbar (1,h,參考模塊錄音完成);pause(1);delete(h); % - Executes on button press in cankaobofang.function cankaobofang_Callback(hObject, eventdata, handles)% hObject handle to cankaobofang (see GCBO)% eventdata r

48、eserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)%語音播放%global mysoundinpc;global mysound;h=waitbar (0,參考模塊錄音正在播放.);wavplay(mysoundinpc,8000);waitbar(1,h,參考模塊錄音播放完成);delete(h); % - Executes on button press in fuwei.function fuwei_Callbac

49、k(hObject, eventdata, handles)% hObject handle to fuwei (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)cla(handles.axes1,reset); cla(handles.axes2,reset); %只能去除上一個BUG % - Executes on button press in cankaozuotu.function cankaozuotu_Callback(hObject, eventdata, handles)%信號處理、分析并作圖%global mysoundinpc;global mysound;siglength1=length(mysoundinpc);t1=(0:siglength1-1)/80

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論