版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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> 摘要1</b></p><p><b> 第一章緒論2</b></p><p> 1.1 簡(jiǎn)析數(shù)字信號(hào)2</p><p> 1.2 課程設(shè)計(jì)的目標(biāo)2</p><p>
2、 1.3課程設(shè)計(jì)的內(nèi)容及要求2</p><p> 第二章語(yǔ)音信號(hào)處理理論基礎(chǔ)4</p><p> 2.1簡(jiǎn)述語(yǔ)音信號(hào)4</p><p> 2.2基礎(chǔ)知識(shí)概述4</p><p> 第三章 系統(tǒng)方案論證5</p><p> 3.1 設(shè)計(jì)方案分析5</p><p><
3、;b> 3.2實(shí)驗(yàn)原理5</b></p><p> 第四章 GUI設(shè)計(jì)實(shí)現(xiàn)8</p><p> 4.1原理圖及程序8</p><p> 第五章 總結(jié)與心得體會(huì)17</p><p><b> 參考文獻(xiàn)18</b></p><p><b> 摘要<
4、;/b></p><p> 數(shù)字信號(hào)處理(Digital Signal Processing)技術(shù),從20世紀(jì)60年代以來(lái),隨著計(jì)算機(jī)科學(xué)和信息科學(xué)、集成芯片制造工藝的飛速發(fā)展,數(shù)字處理技術(shù)應(yīng)運(yùn)而生并得以快速發(fā)展。 語(yǔ)言是人們進(jìn)行信息溝通的主要方式之一,它具有直接、自然、方便等優(yōu)點(diǎn)。語(yǔ)音則是語(yǔ)言的物理層表達(dá)方式。語(yǔ)音處理主要是對(duì)語(yǔ)音進(jìn)行機(jī)器處理,以達(dá)到傳輸、自動(dòng)識(shí)別、機(jī)器理解等目的。本文首先對(duì)語(yǔ)音信號(hào)處理
5、進(jìn)行了概述,其中包括各種處理技術(shù)、發(fā)展及應(yīng)用。接下來(lái)主要介紹了語(yǔ)音識(shí)別方面的知識(shí)。根據(jù)語(yǔ)音識(shí)別系統(tǒng)的基本構(gòu)成模型,介紹了預(yù)處理、端點(diǎn)檢測(cè)到模板匹配各個(gè)部分所涉及到的語(yǔ)音數(shù)字信號(hào)處理原理和方法。重點(diǎn)研究了孤立詞識(shí)別系統(tǒng)的原理、構(gòu)成及各部分的實(shí)現(xiàn)算法。</p><p> 論文中首先對(duì)語(yǔ)音信號(hào)的基本處理問(wèn)題進(jìn)行了分析和對(duì)比,然后在自己設(shè)計(jì)的基于TMS320VC5402的DSP實(shí)際系統(tǒng)上,進(jìn)行了語(yǔ)音處理過(guò)程的濾波、采樣
6、、傅立葉變換和譜包絡(luò)提取的算法實(shí)現(xiàn)研究,討論了在算法的DSP實(shí)現(xiàn)方法,分析了運(yùn)行實(shí)驗(yàn)結(jié)果。在此基礎(chǔ)上,對(duì)GSM系統(tǒng)中的編碼、回聲抵消、說(shuō)話人識(shí)別和交通車輛內(nèi)部的噪聲抵消應(yīng)用進(jìn)行了研究。最后對(duì)DSP實(shí)現(xiàn)語(yǔ)音信號(hào)處理的存在的問(wèn)題和發(fā)展前景進(jìn)行了展望。</p><p><b> 緒論</b></p><p> 1.1 簡(jiǎn)析數(shù)字信號(hào)</p><p>
7、; 數(shù)字信號(hào)處理(Digital Signal Processing,簡(jiǎn)稱DSP)是一門涉及多門學(xué)科并廣泛應(yīng)用于很多科學(xué)與工程領(lǐng)域的新興學(xué)科。20世紀(jì)60年代以來(lái),隨著計(jì)算機(jī)和信息技術(shù)的飛速發(fā)展,有力地推動(dòng)和促進(jìn)了DSP技術(shù)的發(fā)展進(jìn)程。在過(guò)去的二十多年時(shí)間里,DSP技術(shù)已經(jīng)在通信等領(lǐng)域得到了極為廣泛的應(yīng)用。步入2l世紀(jì)以后,信息社會(huì)已經(jīng)進(jìn)入了數(shù)字化時(shí)代,DSP技術(shù)已成為數(shù)字化社會(huì)最重要的技術(shù)之一。DSP可以代表數(shù)字信號(hào)處理(DigJt
8、al Signal Processing),也可以代表數(shù)字信號(hào)處理器(Digital Signal Processor),其實(shí)兩者是不可分割的。前者是理論與計(jì)算方法的技術(shù),后者是實(shí)現(xiàn)這些技術(shù)的通用或?qū)S每删幊涛⑻幚砥鳎荷n:片。隨著DSP芯片的快速發(fā)展,應(yīng)用越來(lái)越廣泛,DSP這一英文縮寫己被大家公認(rèn)為數(shù)字信號(hào)處理器的代名詞。</p><p> 1.2 課程設(shè)計(jì)的目標(biāo)</p><p> D
9、SP作為專用的微處理器,它主要的目標(biāo),尤其是早期誕生的時(shí)候,主要是用于數(shù)字信號(hào)處理,內(nèi)部結(jié)構(gòu)一丌始采用了和普通的MCU不太一樣的哈佛結(jié)構(gòu),主要特點(diǎn)就是分離數(shù)據(jù)流和指令流,并且在內(nèi)部使用乘法累加器的運(yùn)算內(nèi)核和流水線結(jié)構(gòu)。在MCU做乘法運(yùn)算,需要數(shù)十個(gè)指令周期的時(shí)候,DSP一開始就擁有使用單指令的乘法運(yùn)算能力。所以自從一出現(xiàn),就被一些運(yùn)算密集型的嵌入式或者脫機(jī)應(yīng)用所關(guān)注。經(jīng)過(guò)這么多年的發(fā)展,DSP的內(nèi)部結(jié)構(gòu)發(fā)生了很多的變化llJ,比如說(shuō)與通
10、用處理器的結(jié)合、并行化和專業(yè)化。與通用處理器的結(jié)合,就是在DSP芯片早面,用DSP的內(nèi)核做運(yùn)算密集型的數(shù)字信號(hào)處理的運(yùn)算,在芯片內(nèi)同時(shí)有通用的處理器內(nèi)核做管理運(yùn)算,這樣形成的新的DSP產(chǎn)品,不僅有強(qiáng)的運(yùn)算能力,還有好的事務(wù)處理能力。Dsp的應(yīng)用現(xiàn)在已經(jīng)很廣泛了,像汽車、嵌入式的通信系統(tǒng)和安全加密,很多的安全加密產(chǎn)品,實(shí)際上加密算法是不占用計(jì)算機(jī)資源,是用DSP做的一個(gè)板子插到計(jì)算機(jī)里進(jìn)行加密運(yùn)算。隨著DSP技術(shù)的不斷發(fā)展,DSP處理器的
11、性能也在不斷提高。</p><p> 1.3課程設(shè)計(jì)的內(nèi)容及要求</p><p><b> 課程設(shè)計(jì)內(nèi)容:</b></p><p> 根據(jù)設(shè)計(jì)要求分析系統(tǒng)功能,掌握設(shè)計(jì)中所需理論(采樣頻率、采樣位數(shù)的概念,采樣定理; 時(shí)域信號(hào)的FFT分析;數(shù)字濾波器設(shè)計(jì)原理和方法,各種不同類型濾波器的性能比較),闡明設(shè)計(jì)原理。集語(yǔ)音信號(hào),并對(duì)其
12、進(jìn)行FFT頻譜分析,畫出信號(hào)的時(shí)域波形圖和頻譜圖。 對(duì)所采集的語(yǔ)音信號(hào)加入干擾噪聲,對(duì)語(yǔ)音信號(hào)進(jìn)行回放,感覺(jué)加噪前后聲音的變化,分析原因,得出結(jié)論。并對(duì)其進(jìn)行FFT頻譜分析,比較加噪前后語(yǔ)音信號(hào)的波形及頻譜,對(duì)所得結(jié)果進(jìn)行分析,闡明原因,得出結(jié)論。根據(jù)待處理信號(hào)特點(diǎn),設(shè)計(jì)合適數(shù)字濾波器,繪制所設(shè)計(jì)濾波器的幅頻和相頻特性。用所設(shè)計(jì)的濾波器對(duì)含噪語(yǔ)音信號(hào)進(jìn)行濾波。對(duì)濾波后的語(yǔ)音信號(hào)進(jìn)行FFT頻譜分析。畫出處理過(guò)程中所得各種波形及頻譜圖。對(duì)語(yǔ)
13、音信號(hào)進(jìn)行回放,感覺(jué)濾波前后聲音的變化。比較濾波前后語(yǔ)音信號(hào)的波形及頻譜,對(duì)所得結(jié)果和濾波器性能進(jìn)行頻譜分析,闡明原因,得出結(jié)論。設(shè)計(jì)處理系統(tǒng)的用戶界面,在所設(shè)計(jì)的系統(tǒng)界面上可以選擇濾波器的參數(shù),顯示濾波器的頻率響應(yīng),選擇信號(hào)等。</p><p><b> 課程設(shè)計(jì)要求:</b></p><p> 1.本次課程設(shè)計(jì)要求利用MATLAB對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字信號(hào)處理和分
14、析,要求學(xué)生采集語(yǔ)音信號(hào)后,在MATLAB軟件平臺(tái)進(jìn)行頻譜分析;并對(duì)所采集的語(yǔ)音信號(hào)加入干擾噪聲,對(duì)加入噪聲的信號(hào)進(jìn)行頻譜分析,設(shè)計(jì)合適的濾波器濾除噪聲,恢復(fù)原信號(hào)。 </p><p> 2.基本教學(xué)要求:每組一臺(tái)電腦(附話筒和耳機(jī)), 電腦安裝MATLAB7.1版本以上軟件。</p><p> 語(yǔ)音信號(hào)處理理論基礎(chǔ)</p><p><b> 2.1
15、簡(jiǎn)述語(yǔ)音信號(hào)</b></p><p> 語(yǔ)音信號(hào)處理是研究用數(shù)字信號(hào)處理技術(shù)對(duì)語(yǔ)音信號(hào)進(jìn)行處理的一門學(xué)科,它是一門新興的學(xué)科,同時(shí)又是綜合性的多學(xué)科領(lǐng)域和涉及面廣的交叉學(xué)科。語(yǔ)音信號(hào)處理是許多信息領(lǐng)域應(yīng)用的核心技術(shù)之一,是目前發(fā)展速度最快的信息科學(xué)技術(shù)領(lǐng)域中的一個(gè)。</p><p><b> 2.2基礎(chǔ)知識(shí)概述</b></p><p
16、> 在研究分析各種語(yǔ)音信號(hào)處理技術(shù)集應(yīng)用之前,必須了解有關(guān)語(yǔ)音信號(hào)的一些基本特性。為了對(duì)語(yǔ)音信號(hào)進(jìn)行數(shù)字處理,需要建立一個(gè)能夠精確描述語(yǔ)音產(chǎn)生過(guò)程和語(yǔ)音全部特征的數(shù)字模型,即根據(jù)語(yǔ)音的長(zhǎng)生過(guò)程建立一個(gè)又實(shí)用又便于分析的語(yǔ)音信號(hào)模型。發(fā)音語(yǔ)音學(xué)只要研究語(yǔ)音產(chǎn)生機(jī)理,借助儀器觀察發(fā)音器官,以確定發(fā)音部位和發(fā)音方法。聲音是一種波,能被人耳聽到,它的振動(dòng)頻率在20~20000hz之間。自然界中包含各種各樣的聲音,如風(fēng)聲、雷聲、雨聲等。&
17、lt;/p><p> 根據(jù)語(yǔ)音信號(hào)的產(chǎn)生模型,可以將其豕一個(gè)線性非時(shí)變系統(tǒng)的輸出表示,即看做是聲門激勵(lì)信號(hào)和聲道沖激響應(yīng)的卷積。在語(yǔ)音信號(hào)數(shù)字處理所涉及的各個(gè)領(lǐng)域中,根據(jù)語(yǔ)音信號(hào)求解聲門激勵(lì)和聲道響應(yīng)具有非常重要的意義。</p><p> 同態(tài)稱為同態(tài)濾波,它實(shí)現(xiàn)了將卷積關(guān)系變換為求和關(guān)系的分享處理。眾所周知,為了分離加性組合信號(hào),常用采用線性濾波方法。而為了分離非加性組合信號(hào),常采用同態(tài)
18、濾波技術(shù)。同態(tài)濾波是一咱非線性濾波,但它服從廣義疊加原理。</p><p> 加性信號(hào)可以用線性系統(tǒng)來(lái)處理,這種系統(tǒng)滿足疊加性。但是許多信號(hào),其組成各分量不是按加法原則組合起來(lái)的。如語(yǔ)音信號(hào)、圖像信號(hào)、地震信號(hào)、通信中的衰落信號(hào)、調(diào)制信號(hào)都不是加性信號(hào),而是乘積性信號(hào)或卷積性信號(hào)。此時(shí)不能用線性系統(tǒng),而必須用滿足其相應(yīng)組合原則的非線性系統(tǒng)來(lái)處理。而同態(tài)信號(hào)處理就是非線性問(wèn)題轉(zhuǎn)化為線性問(wèn)題來(lái)處理。按被處理的信號(hào)來(lái)
19、分類,大體分為乘積同態(tài)處理和卷積同態(tài)處理和卷積同態(tài)處理兩種。第三章 系統(tǒng)方案論證</p><p> 3.1 設(shè)計(jì)方案分析 </p><p> 信號(hào)的傅立葉表示在信號(hào)的分析與處理中起著重要的作用。因?yàn)閷?duì)于線性系統(tǒng)來(lái)說(shuō),可以很方便地確定其對(duì)正弦或復(fù)指數(shù)和的響應(yīng),所以傅立葉分析方法能完善地解決許多信號(hào)分析和處理問(wèn)題。另外,傅立葉表示使信號(hào)的某些特性變得更明顯,因此,它能更深入地說(shuō)明信號(hào)的
20、各項(xiàng)紅物理現(xiàn)象。</p><p> 由于語(yǔ)音信號(hào)是隨著時(shí)間變化的,通常認(rèn)為,語(yǔ)音是一個(gè)受準(zhǔn)周期脈沖或隨機(jī)噪聲源激勵(lì)的線性系統(tǒng)的輸出。輸出頻譜是聲道系統(tǒng)頻率響應(yīng)與激勵(lì)源頻譜的乘積。聲道系統(tǒng)的頻率響應(yīng)及激勵(lì)源都是隨時(shí)間變化的,因此一般標(biāo)準(zhǔn)的傅立葉表示雖然適用于周期及平穩(wěn)隨機(jī)信號(hào)的表示,但不能直接用于語(yǔ)音信號(hào)。由于語(yǔ)音信號(hào)可以認(rèn)為在短時(shí)間內(nèi),近似不變,因而可以采用短時(shí)分析法。</p><p>
21、 本實(shí)驗(yàn)要求掌握傅里葉分析原理,會(huì)利用已學(xué)的知識(shí),編寫程序估計(jì)短時(shí)譜、倒譜,畫出語(yǔ)譜圖,并分析實(shí)驗(yàn)結(jié)果,在此基礎(chǔ)上,借助頻域分析方法所求得的參數(shù)分析語(yǔ)音信號(hào)的基音周期或共振峰。</p><p><b> 3.2實(shí)驗(yàn)原理</b></p><p><b> 1、短時(shí)傅立葉變換</b></p><p> 由于語(yǔ)音信號(hào)是短
22、時(shí)平穩(wěn)的隨機(jī)信號(hào),某一語(yǔ)音信號(hào)幀的短時(shí)傅立葉變換的定義為:</p><p><b> ?。?.1)</b></p><p> 其中w(n-m)是實(shí)窗口函數(shù)序列,n表示某一語(yǔ)音信號(hào)幀。令n-m=k',則得到</p><p><b> ?。?.2)</b></p><p><b>
23、 于是可以得到</b></p><p><b> (2.3)</b></p><p><b> 假定</b></p><p><b> ?。?)</b></p><p><b> 則可以得到</b></p><p>
24、;<b> (5)</b></p><p> 同樣,不同的窗口函數(shù),將得到不同的傅立葉變換式的結(jié)果。由上式可見(jiàn),短時(shí)傅立葉變換有兩個(gè)變量:n和ω,所以它既是時(shí)序n的離散函數(shù),又是角頻率ω的連續(xù)函數(shù)。與離散傅立葉變換逼近傅立葉變換一樣,如令ω=2πk/N,則得離散的短時(shí)傅立葉吧如下:</p><p><b> (6)</b></p>
25、;<p><b> 2、語(yǔ)譜圖</b></p><p> 水平方向是時(shí)間軸,垂直方向是頻率軸,圖上的灰度條紋代表各個(gè)時(shí)刻的語(yǔ)音短時(shí)譜。語(yǔ)譜圖反映了語(yǔ)音信號(hào)的動(dòng)態(tài)頻率特性,在語(yǔ)音分析中具有重要的實(shí)用價(jià)值。被成為可視語(yǔ)言。</p><p> 語(yǔ)譜圖的時(shí)間分辨率和頻率分辨率是由窗函數(shù)的特性決定的。時(shí)間分辨率高,可以看出時(shí)間波形的每個(gè)周期及共振峰隨時(shí)間的變
26、化,但頻率分辨率低,不足以分辨由于激勵(lì)所形成的細(xì)微結(jié)構(gòu),稱為寬帶語(yǔ)譜圖;而窄帶語(yǔ)譜圖正好與之相反。</p><p> 寬帶語(yǔ)譜圖可以獲得較高的時(shí)間分辨率,反映頻譜的快速時(shí)變過(guò)程;窄帶語(yǔ)譜圖可以獲得較高的頻率分辨率,反映頻譜的精細(xì)結(jié)構(gòu)。兩者相結(jié)合,可以提供帶兩與語(yǔ)音特性相關(guān)的信息。語(yǔ)譜圖上因其不同的灰度,形成不同的紋路,稱之為“聲紋”。聲紋因人而異,因此可以在司法、安全等場(chǎng)合得到應(yīng)用。</p>&l
27、t;p><b> 3、復(fù)倒譜和倒譜</b></p><p> 復(fù)倒譜是x(n)的Z變換取對(duì)數(shù)后的逆Z變換,其表達(dá)式如下:</p><p><b> (7)</b></p><p> 倒譜c(n)定義為x(n)取Z變換后的幅度對(duì)數(shù)的逆Z變換,即</p><p><b> ?。?
28、)</b></p><p> 在時(shí)域上,語(yǔ)音產(chǎn)生模型實(shí)際上是一個(gè)激勵(lì)信號(hào)與聲道沖激響應(yīng)的卷積。對(duì)于濁音,激勵(lì)信號(hào)可以由周期脈沖序列表示;對(duì)于清音,激勵(lì)信號(hào)可以由隨機(jī)噪聲序列表示。聲道系統(tǒng)相當(dāng)于參數(shù)緩慢變化的零極點(diǎn)線性濾波器。這樣經(jīng)過(guò)同態(tài)處理后,語(yǔ)音信號(hào)的復(fù)倒譜,激勵(lì)信號(hào)的復(fù)倒譜,聲道系統(tǒng)的復(fù)倒譜之間滿足下面的關(guān)系:</p><p><b> ?。?)</b&g
29、t;</p><p> 由于倒譜對(duì)應(yīng)于復(fù)倒譜的偶部,因此倒譜與復(fù)倒譜具有同樣的特點(diǎn),很容易知道語(yǔ)音信號(hào)的倒譜,激勵(lì)信號(hào)的倒譜以及聲道系統(tǒng)的倒譜之間滿足下面關(guān)系:</p><p><b> (10)</b></p><p> 濁音信號(hào)的倒譜中存在著峰值,它的出現(xiàn)位置等于該語(yǔ)音段的基音周期,而清音的倒譜中則不存在峰值。利用這個(gè)特點(diǎn)我們可以進(jìn)行
30、清濁音的判斷,并且可以估計(jì)濁音的基音周期。</p><p> 第四章 GUI設(shè)計(jì)實(shí)現(xiàn)</p><p><b> 4.1原理圖及程序</b></p><p><b> 一 按鈕放置</b></p><p> function varargout = jy01(varargin)</p&g
31、t;<p> % JY01 M-file for jy01.fig</p><p> % JY01, by itself, creates a new JY01 or raises the existing</p><p> % singleton*.</p><p><b> %</b></p&
32、gt;<p> % H = JY01 returns the handle to a new JY01 or the handle to</p><p> % the existing singleton*.</p><p><b> %</b></p><p> % JY01('CA
33、LLBACK',hObject,eventData,handles,...) calls the local</p><p> % function named CALLBACK in JY01.M with the given input arguments.</p><p><b> %</b></p><p> %
34、 JY01('Property','Value',...) creates a new JY01 or raises the</p><p> % existing singleton*. Starting from the left, property value pairs are</p><p> % applied
35、 to the GUI before jy01_OpeningFcn gets called. An</p><p> % unrecognized property name or invalid value makes property application</p><p> % stop. All inputs are passed to jy01_Op
36、eningFcn via varargin.</p><p><b> %</b></p><p> % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one</p><p> % instance to run (s
37、ingleton)".</p><p><b> %</b></p><p> % See also: GUIDE, GUIDATA, GUIHANDLES</p><p> % Edit the above text to modify the response to help jy01</p><p>
38、; % Last Modified by GUIDE v2.5 01-Jul-2005 13:30:37</p><p> % Begin initialization code - DO NOT EDIT</p><p> gui_Singleton = 1;</p><p> gui_State = struct('gui_Name',
39、 mfilename, ...</p><p> 'gui_Singleton', gui_Singleton, ...</p><p> 'gui_OpeningFcn', @jy01_OpeningFcn, ...</p><p> 'gui_OutputFcn', @jy01_OutputFc
40、n, ...</p><p> 'gui_LayoutFcn', [] , ...</p><p> 'gui_Callback', []);</p><p> if nargin && ischar(varargin{1})</p><p> gui_State.gui_Call
41、back = str2func(varargin{1});</p><p><b> end</b></p><p> if nargout</p><p> [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});</p><p><b>
42、; else</b></p><p> gui_mainfcn(gui_State, varargin{:});</p><p><b> end</b></p><p> % End initialization code - DO NOT EDIT</p><p> % --- Executes
43、 just before jy01 is made visible.</p><p><b> 圖4-1 放置按鈕</b></p><p><b> 二 修改屬性 </b></p><p> function jy01_OpeningFcn(hObject, eventdata, handles, varargin)
44、</p><p> % This function has no output args, see OutputFcn.</p><p> % hObject handle to figure</p><p> % eventdata reserved - to be defined in a future version of MATLAB</
45、p><p> % handles structure with handles and user data (see GUIDATA)</p><p> % varargin command line arguments to jy01 (see VARARGIN)</p><p> % Choose default command line outpu
46、t for jy01</p><p> handles.output = hObject;</p><p> % Update handles structure</p><p> guidata(hObject, handles);</p><p> % UIWAIT makes jy01 wait for user respons
47、e (see UIRESUME)</p><p> % uiwait(handles.figure1);</p><p> % --- Outputs from this function are returned to the command line.</p><p><b> 圖4-2 修改程序</b></p><
48、;p><b> 三 運(yùn)行程序 </b></p><p> function varargout = jy01_OutputFcn(hObject, eventdata, handles) </p><p> % varargout cell array for returning output args (see VARARGOUT);</p>
49、;<p> % hObject handle to figure</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)&
50、lt;/p><p> % Get default command line output from handles structure</p><p> varargout{1} = handles.output;</p><p> % --- Executes on button press in pushbutton2.</p><p>
51、;<b> 圖4-3 運(yùn)行程序</b></p><p> 四 各按鈕相應(yīng)功能展示及程序</p><p> 圖4-4 運(yùn)行結(jié)果組圖</p><p><b> 程序:</b></p><p> function pushbutton2_Callback(hObject, eventdata,
52、handles)</p><p> % hObject handle to pushbutton2 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with han
53、dles and user data (see GUIDATA)</p><p> [x]=wavread('01.wav');</p><p><b> sound(x);</b></p><p> subplot(4,1,1);</p><p><b> plot(x);</b
54、></p><p> axis([1 length(x) -1 1]);</p><p> ylabel('Speech');</p><p> enhance=filter([1-0.9375],1,x);</p><p> FrameLen=240; FrameInc=80;</p><
55、p> yframe=enframe(x,FrameLen,FrameInc);</p><p> amp1=sum(abs(yframe),2);</p><p> subplot(4,1,2);</p><p> plot(amp1);</p><p> axis([1 length(amp1) 0 max(amp1)]);
56、</p><p> ylabel('Amp');</p><p> legend('amp1=¡Æ©¦x©¦');</p><p> amp2=sum(abs(yframe.*yframe),2);</p><p> subplot(4,1,3
57、);</p><p> plot(amp2);</p><p> axis([1 length(amp2) 0 max(amp2)]);</p><p> ylabel('Energy');</p><p> legend('amp1=¡Æ©¦x*x©¦
58、;');</p><p> tmp1=enframe(x(1:end-1),FrameLen,FrameInc);</p><p> tmp2=enframe(x(2:end),FrameLen,FrameInc);</p><p> signs=(tmp1.*tmp2)<0;</p><p> diffs=(tmp1-
59、tmp2)>0.02;</p><p> zcr=sum(signs.*diffs,2);</p><p> subplot(4,1,4);</p><p> plot(zcr);</p><p> axis([1 length(zcr) 0 max(zcr)]);</p><p> ylabel(
60、39;ZCR');</p><p> legend('zcr');</p><p> function f=enframe(x,win,inc)</p><p> nx=length(x(:));</p><p> nwin=length(win);</p><p> if (nwin
61、 == 1)</p><p> len = win;</p><p><b> else</b></p><p> len = nwin;</p><p><b> end</b></p><p> if (nargin < 3)</p><
62、;p> inc = len;</p><p><b> end</b></p><p> nf = fix((nx-len+inc)/inc);</p><p> f=zeros(nf,len);</p><p> indf= inc*(0:(nf-1)).';</p><p&
63、gt; inds = (1:len);</p><p> f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));</p><p> if (nwin > 1)</p><p> w = win(:)';</p><p> f = f .* w(ones(nf,1),:);&l
64、t;/p><p><b> end</b></p><p> % --- Executes on button press in pushbutton3.</p><p> function pushbutton3_Callback(hObject, eventdata, handles)</p><p> % hO
65、bject handle to pushbutton3 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)<
66、;/p><p> [our]=wavread('01.wav');</p><p> specgram_hw3p20(our,1024,512,10000);</p><p> specgram_hw3p20(our,512,256,10000);</p><p> function [spec] = specgram_h
67、w3p20(x, winlgh, frmlgh, sampling_rate); </p><p> % specgram_hw3p20(x, winlgh, frmlgh, sampling_rate)</p><p><b> %</b></p><p> % function to compute a spectrogram <
68、;/p><p><b> %</b></p><p> % x = input waveform </p><p> % winlgh = window length in samples</p><p> % frmlgh = frame length in samples</p><p&g
69、t; % sampling_rate = samples/sec</p><p> % PARAMETERS</p><p> %sampling_rate = 10000; % sampling rate</p><p> lfft = 1024; % FFT length </p><p> lfft2 =
70、lfft/2;</p><p> %winlgh = 200; % (128) window length (in samples)</p><p> %frmlgh = 10; % frame interval (in samples)</p><p> noverlap = winlgh - frmlgh;</p>&l
71、t;p> % x = x(1:4500);</p><p> x = 2.0*x/max(abs(x));</p><p> etime = length(x)/sampling_rate;</p><p> %-----------------------------------------------------------------------
72、----%</p><p> spec = abs(specgram(x, lfft, sampling_rate, winlgh, noverlap));</p><p> subplot(211);</p><p> plot((1:length(x))/sampling_rate,x)</p><p> xlabel('
73、Time (s)');</p><p> title('SPEECH');</p><p> axis([0 etime -2.5 2.5]);</p><p><b> grid;</b></p><p> subplot(212)</p><p> image
74、sc(0:.010:etime, 0:1000:(sampling_rate/2), log10(abs(spec)));axis('xy')</p><p> xlabel('Time (ms)'),ylabel('Frequency (Hz)');</p><p> title('SPECTROGRAM');<
75、;/p><p> --- Executes on button press in pushbutton4.</p><p> function pushbutton4_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton4 (see GCBO)</p&
76、gt;<p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p><b> clc; </b><
77、;/p><p><b> clear;</b></p><p><b> tic, </b></p><p> [y,fs]=wavread('01.wav'); </p><p> L=length(y); </p><p> fw=y.*hammin
78、g(L);</p><p> r=real(log(fft(fw,L)))</p><p> pfw=cceps(fw);</p><p> rpfw=rceps(fw);</p><p> z=rpfw(1:30);</p><p> p=pfw(31:L)</p><p> lo
79、gz=real(exp(fft(z,L)));</p><p> logp=real(fft(p));</p><p> subplot(3,2,1);plot(y);title('Ôʼ²¨ÐÎ')</p><p> subplot(3,2,3);plot(pf
80、w);title('¸´µ¹Æ×')</p><p> subplot(3,2,5);plot(rpfw);title('ʵµ¹Æ×')</p><p> subplot(3,2,6);plot(logz);title('
81、181;¹Æ×ÓòÂ˲¨ºóµÄ¶ÔÊý·ù¶ÈÆ×')</p><p> subplot(3,2,4);plot(r);title('¶Ô
82、02;ý·ù¶ÈÆ×')</p><p> subplot(3,2,2);plot(fw);title('¼Óº£Ã÷´°ºóµÄ²¨ÐÎ')</p>
83、;<p> % --- Executes on button press in pushbutton5.</p><p> function pushbutton5_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton5 (see GCBO)</p>
84、<p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure with handles and user data (see GUIDATA)</p><p> speech1_10k=wavread('01.wav&
85、#39;,[1024 1273]);%È¡250µãµÄÓïÒôÐźÅ</p><p> sw=speech1_10k.*hamming(250);%a¼ÓººÃ÷´° </p>
86、<p> Rsw=xcorr(sw');%a×ÔÏà¹Ø </p><p> t=0.1:0.1:25;subplot(1,2,1);plot(t,sw);xlabel('ms');title('¼Ó´°ºóʱÓ
87、242;²¨ÐÎ'); </p><p> subplot(1,2,2); t=0.1:0.1:length(Rsw)/10;plot(t,Rsw);xlabel('ms');title('¼Ó´°ºó×Թز¨
88、8;Î'); </p><p> Rsw4=[Rsw(250:253);Rsw(249:252);Rsw(248:251);Rsw(247:250)];%Éú³É4*4 ×ÔÏà¹ØÕó </p><p> Rsw6=[Rsw(250:255);Rs
89、w(249:254);Rsw(248:253);Rsw(247:252);Rsw(246:251);Rsw(245:250)];%Éú³É6*6×ÔÏà¹ØÕó </p><p> rea4=inv(Rsw4)*Rsw(251:254)';%ÇóÔ
90、4;²âϵÊý4 </p><p> rea6=inv(Rsw6)*Rsw(251:256)';%ÇóÔ¤²âϵÊý6 </p><p> A4=sqrt(Rsw(250)-Rsw(251:254)*rea4);%&
91、#199;óÔöÒæ </p><p> A6=sqrt(Rsw(250)-Rsw(251:256)*rea6);%ÇóÔöÒæ </p><p> w=pi/512:pi/512:pi;%Éú³ÉÊä³
92、246;ƵÂÊ·¶Î§ </p><p> j=sqrt(-1); </p><p> FW4=rea4'*[exp(-j*w);exp(-j*w*2);exp(-j*w*3);exp(-j*w*4)];%ÔÚƵÂÊ·
93、2;ΧÇóÔ¤²âƵÏì </p><p> FW6=rea6'*[exp(-j*w);exp(-j*w*2);exp(-j*w*3);exp(-j*w*4);exp(-j*w*5);exp(-j*w*6)];%ÔÚƵÂÊ
94、;·¶Î§ÇóÔ¤²âƵÏì </p><p> HW4=A4./(1-FW4);%ÓÉÔ¤²âƵÏìÇó </p><p>
95、 HW6=A6./(1-FW6);%ÓÉÔ¤²âƵÏìÇó </p><p> FW2=fft(sw,1024);%ÐźŸµÁ¢Ò¶±ä»» &l
96、t;/p><p> FW3=FW2(1:512); </p><p> w=(1/1024:1/1024:0.5)*10000; </p><p> subplot(2,2,1);plot(w,log(abs(FW3)));xlabel('ƵÂÊhz');title('¼Ó
97、80;°ºóÐźÅƵÆ×'); </p><p> subplot(2,2,2);plot(w,log(abs(HW4)),'g');xlabel('ƵÂÊhz');title('4¼«
98、181;ãÄ£ÐÍƵÂÊÏìÓ¦'); </p><p> subplot(2,2,3);plot(w,log(abs(HW6)),'r');xlabel('ƵÂÊhz');title('6&
99、#188;«µãÄ£ÐÍƵÂÊÏìÓ¦'); </p><p> subplot(2,2,4);plot(w,log(abs(FW3)),w,log(abs(HW4)),w,log(abs(HW6)));xlabel('Ƶ&
100、#194;Êhz');title('ÈýÕ߱ȽÏ');</p><p> % --- Executes on button press in pushbutton6.</p><p> function pushbutton6_Callback(hObject, eve
101、ntdata, handles)</p><p> % hObject handle to pushbutton6 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles structure
102、with handles and user data (see GUIDATA)</p><p><b> clear</b></p><p> Y=wavread('01.wav',[1 1800]);</p><p> x1=Y(271:510);x2=Y(271:510);x3=Y(271:510);</p&g
103、t;<p><b> %×ÔÏà¹Ø·¨</b></p><p> r=zeros(1,240);</p><p> for k=1:240</p><p> for n=1:240-k</p><p> r(k)=r
104、(k)+x1(n)*x1(n+k);</p><p><b> end</b></p><p><b> end</b></p><p><b> j=1:240;</b></p><p> subplot(2,2,2);plot(j,r);title('
105、15;ÔÏà¹Ø·¨´¦ÀíºóµÄ²¨ÐÎ')</p><p> subplot(2,2,1);plot(j,x1);title('Ôº¯Êý&
106、#39;)</p><p><b> %Èýµçƽ·¨</b></p><p> for k1=1:1:240</p><p> if x2(k1)>0</p><p><b> x2(k1)=1;</b>
107、;</p><p> else if x2(k1)==0</p><p><b> x2(k1)=0;</b></p><p> else if x2(k1)<0</p><p> x2(k1)=-1;</p><p><b> end</b></p&g
108、t;<p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> j=1:240;</b></p><p> subplot(2,2,3);plot(
109、j,x2);title('Èýµçƽ·¨´¦ÀíºóµÄ²¨ÐÎ')</p><p> %ÖÐÐÄÏû²¨·
110、;¨</p><p> for k1=1:1:240</p><p> ma=abs(max(x3));</p><p> tc=0.6*ma;</p><p> if x3(k1)>tc</p><p> x3(k1)=x3(k1)-tc;</p><p> els
111、e if x3(k1)<-tc</p><p> x3(k1)=x3(k1)+tc;</p><p><b> else</b></p><p><b> x3(k1)=0;</b></p><p><b> end</b></p><p>
112、;<b> end</b></p><p><b> end</b></p><p><b> j=1:240;</b></p><p> subplot(2,2,4);plot(j,x3);title('ÖÐÐÄÏû
113、8;¨·¨´¦ÀíºóµÄ²¨ÐÎ')</p><p> % --- Executes on button press in pushbutton7.</p><p> function pushbutton7_Callback(
114、hObject, eventdata, handles)</p><p> % hObject handle to pushbutton7 (see GCBO)</p><p> % eventdata reserved - to be defined in a future version of MATLAB</p><p> % handles
115、 structure with handles and user data (see GUIDATA)</p><p><b> clear</b></p><p><b> clc</b></p><p> winsize=256; % ´°³¤ </p>&
116、lt;p> winsize=256; % ´°³¤ </p><p> n=0.04; % ÔëÉùˮƽ </p><p> [speech,fs,nbits]=wavread('01.wav'); % ¶ÁÈ
117、ëÊý¾Ý </p><p> size=length(speech); </p><p> numofwin=floor(size/winsize); % Ö¡Êý </p><p><b> %¼Ó´° </b&
118、gt;</p><p> ham=hamming(winsize)'; %Generates Hamming Window </p><p> hamwin=zeros(1,size); %Vector for window gain </p><p> enhanced=zeros(1,size); %Vector for enhanced spee
119、ch </p><p> %²úÉú´øÔëÐźŠ</p><p> x=speech'+ n*randn(1,size); %Contaminates signal with white noise </p><p> %
120、12;ëÉù¹À¼Æ </p><p> noisy=n*randn(1,winsize); %Sample of noise </p><p> N = fft(noisy); </p><p> nmag= abs(N); %Estimated noise magnitude spect
121、rum </p><p> for q=1:2*numofwin-1 </p><p> frame=x(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2); %50 percent overlap </p><p> hamwin(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=hamw
122、in(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)+ham; %Window gain </p><p> %¶Ô´øÔëÓïÒô½øÐÐDFT </p><p> y=fft(frame.*ham); &
123、lt;/p><p> mag = abs(y); %Magnitude Spectrum </p><p> phase = angle(y); %Phase Spectrum </p><p> %·ù¶ÈÆ×¼õ </p><p> for i=1:win
124、size </p><p> if mag(i)-nmag(i)>0 </p><p> clean(i)= mag(i)-nmag(i); </p><p> else;clean(i)=0; </p><p><b> end </b></p><p><b> en
125、d </b></p><p> %ÔÚƵÓòÖÐÖØкϳÉÓïÒô </p><p> fff=exp(j*phase);</p><p>
126、spectral=clean.*fff; </p><p> %IDFT²¢ÖصþÏà¼Ó </p><p> enhanced(1+(q-1)*winsize/2:winsize+(q-1)*winsize/2)=enhanced(1+(q-1)*winsize/2:winsize+
127、(q-1)*winsize/2)+real(ifft(spectral)); </p><p><b> end </b></p><p> % ³ýÈ¥Hamming´°ÒýÆðµÄÔöÒæ </p
128、><p> for i=1:size </p><p> if hamwin(i)==0 </p><p> enhanced(i)=0; </p><p><b> else </b></p><p> enhanced(i)=enhanced(i)/hamwin(i); </p&g
129、t;<p><b> end </b></p><p><b> end </b></p><p> SNR1 = 10*log10(var(speech')/var(noisy)); %¼ÓÔëÓïÒôÐÅÔ
130、ë±È </p><p> SNR2 = 10*log10(var(speech')/var(enhanced-speech')); %ÔöÇ¿ÓïÒôÐÅÔë±È </p><p> wavwrite
131、(x,fs,nbits,'noisy.wav'); %Êä³ö´øÔëÐźŠ</p><p> wavwrite(enhanced,fs,nbits,'enhanced.wav'); %Êä³öÔö
132、Ç¿ÓïÒô </p><p> subplot(3,1,1);plot(speech'); %ÔʼÓïÒô²¨ÐÎ </p><p> title(['Original Voice (n
133、=',num2str(n),')' ]); </p><p> specgram(speech'); %ÔʼÓïÒôÓïÆ× </p><p> title(['Original Voice (n=',num2str
134、(n),')' ]); </p><p> subplot(3,1,2); plot(x); </p><p> title(['Noise Added (SNR=',num2str(SNR1),'dB)']); </p><p> specgram(x); %¼ÓÔë
135、211;ïÒôÓïÆ× </p><p> title(['Noise Added (SNR=',num2str(SNR1),'dB)']); </p><p> subplot(3,1,3);plot(enhanced); </p><p> title([
136、'Improved Voice (SNR=',num2str(SNR2),'dB SNR=',num2str(SNR2-SNR1),'dB)']); </p><p> specgram(enhanced); </p><p> title(['Improved Voice (SNR=',num2str(SNR2),
137、9;dB SNR=',num2str(SNR2-SNR1),'dB)']); pause; </p><p> sound(speech);pause;</p><p> sound(x);pause;</p><p> sound(enhanced);</p><p> % --- Executes on b
138、utton press in pushbutton8.</p><p> function pushbutton8_Callback(hObject, eventdata, handles)</p><p> % hObject handle to pushbutton8 (see GCBO)</p><p> % eventdata reserved
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)音信號(hào)處理課程設(shè)計(jì)
- 語(yǔ)音信號(hào)處理課程設(shè)計(jì)報(bào)告
- 語(yǔ)音信號(hào)處理與濾波課程設(shè)計(jì)
- dsp應(yīng)用課程設(shè)計(jì)---有噪聲的語(yǔ)音信號(hào)分析與處理設(shè)計(jì)
- 信號(hào)處理課程設(shè)計(jì)---基于matlab的語(yǔ)音信號(hào)處理
- 課程設(shè)計(jì)--語(yǔ)音信號(hào)變聲處理系統(tǒng)
- 語(yǔ)音信號(hào)處理及matlab實(shí)現(xiàn)課程設(shè)計(jì)
- 信號(hào)處理課程設(shè)計(jì)基于matlab的語(yǔ)音信號(hào)分析和處理
- dsp技術(shù)課程設(shè)計(jì)---語(yǔ)音信號(hào)擴(kuò)展u律
- matlab課程設(shè)計(jì)---基于matlab的語(yǔ)音信號(hào)處理
- matlab課程設(shè)計(jì)--語(yǔ)音信號(hào)的采集與處理
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語(yǔ)音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語(yǔ)音信號(hào)濾波去噪
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語(yǔ)音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---語(yǔ)音信號(hào)的處理與濾波
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--語(yǔ)音信號(hào)的處理與濾波
- 語(yǔ)音信號(hào)的濾波課程設(shè)計(jì)
- 數(shù)字信號(hào)處理課程設(shè)計(jì)--基于matlab有噪聲語(yǔ)音信號(hào)處理
- 數(shù)字信號(hào)處理課程設(shè)計(jì)---基于matlab的語(yǔ)音信號(hào)濾波處理
- matlab課程設(shè)計(jì)報(bào)告-語(yǔ)音信號(hào)的采集與處理
評(píng)論
0/150
提交評(píng)論