數(shù)字信號(hào)處理終期報(bào)告改_第1頁
數(shù)字信號(hào)處理終期報(bào)告改_第2頁
數(shù)字信號(hào)處理終期報(bào)告改_第3頁
數(shù)字信號(hào)處理終期報(bào)告改_第4頁
數(shù)字信號(hào)處理終期報(bào)告改_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、數(shù)字信號(hào)處理B課程項(xiàng)目實(shí)施報(bào)告題目: 設(shè)計(jì)數(shù)字音效處理器 組號(hào): 20 任課教師: 方勇 聯(lián)系方式:二零一五年十月十九日一、項(xiàng)目實(shí)施方案2項(xiàng)目要求2設(shè)計(jì)思想2設(shè)計(jì)指標(biāo)3實(shí)現(xiàn)方式4一 系統(tǒng)設(shè)計(jì)及可行性分析4人機(jī)交互界面4(1).設(shè)計(jì)步驟5(2).設(shè)計(jì)過程及內(nèi)容5(3).人機(jī)交互界面5語音識(shí)別5原理5主要代碼7測(cè)試過程8結(jié)果分析8降噪83.1 小波與譜減法降噪83.2功頻降噪113.3環(huán)境降噪13音頻特效134.1.倒序播放134.2變聲小黃人144.3數(shù)字均衡器1452一、項(xiàng)目實(shí)施方案項(xiàng)目要求 設(shè)計(jì)一個(gè)數(shù)字音效處理器,能夠?qū)崿F(xiàn)語音信號(hào)的各種音效處理。 (1)輸入語音信號(hào)

2、源為實(shí)際環(huán)境采集語音; (2)至少實(shí)現(xiàn)3種音效處理功能(其中至少包含下述2種功能:1、項(xiàng)目組5人的語音識(shí)別;2、10秒以上的實(shí)際語音至少;3、3種類型噪聲的降除); (3)用人機(jī)交互界面操控、揚(yáng)聲器/耳機(jī)輸出音效。設(shè)計(jì)思想通過MATLAB軟件我們可以方便地進(jìn)行音頻信號(hào)的處理,利用離散付里葉變換及其反變換進(jìn)行頻譜分析;音頻信號(hào)采樣后通過對(duì)時(shí)域信號(hào)和頻域采樣頻率的處理等方法,做出各種音效效果。另外,利用MATLAB可減少工作量,節(jié)約時(shí)間,加深理解,同樣可以培養(yǎng)應(yīng)用能力。同時(shí),人機(jī)交互界面可以由MATLAB內(nèi)的GUI實(shí)現(xiàn)框圖如下:人 機(jī) 交 互 界 面加 噪語 音 特 效語 音 識(shí) 別降 噪時(shí) 域

3、圖數(shù) 字 均 衡 器變 聲 小 黃 人倒 序 播 放環(huán) 境 噪 聲功 頻 噪 聲白 噪 聲識(shí) 別 與 防 偽錄 音 1.使用MATLAB軟件,利用庫(kù)里的函數(shù)和功能,使得人機(jī)交互界面制作比較簡(jiǎn)單,也方便錄音和對(duì)音頻信號(hào)進(jìn)行處理。 2 .設(shè)計(jì)數(shù)字濾波器組,對(duì)語音信號(hào)進(jìn)行降噪處理,并對(duì)降噪前后的語音信號(hào)進(jìn)行時(shí)域和頻域的分析。3. 通過對(duì)音頻信號(hào)的時(shí)域采樣和頻域處理,設(shè)計(jì)各種音頻特效,如:變聲器,倒序播放。設(shè)計(jì)指標(biāo)1、外界聲音的采集及簡(jiǎn)單處理利用MATLAB自帶錄音功能,按下開始錄音按鈕,對(duì)外界聲音進(jìn)行采集。要保存文件時(shí),利用了計(jì)算機(jī)上的A/D轉(zhuǎn)換器,把模擬的聲音信號(hào)變成了離散的量化了的數(shù)字信號(hào),錄音

4、完成后保存為.文件。在MATLAB軟件平臺(tái)下利用函數(shù)對(duì)語音信號(hào)進(jìn)行讀取,得到了聲音數(shù)據(jù)變量。為了更方便的進(jìn)行實(shí)時(shí)音效處理,我們添加了實(shí)時(shí)錄音功能并直接對(duì)錄音采樣完的數(shù)據(jù)進(jìn)行音頻處理,這樣音頻處理的效率更高。然后對(duì)語音信號(hào)進(jìn)行頻譜分析,在MATLAB中首先畫出語音信號(hào)的時(shí)域波形;然后對(duì)語音號(hào)進(jìn)行快速傅里葉變換,得到信號(hào)的頻譜特性,分析基頻。這樣方便和之后處理后的時(shí)域波形和頻域波形進(jìn)行比較,從而從時(shí)域和頻域特性上看到音頻信號(hào)的變化,語音處理的效果。2、對(duì)采集的聲音進(jìn)行音效處理 我們項(xiàng)目小組實(shí)現(xiàn)下列各項(xiàng)音效處理效果: 實(shí)現(xiàn)項(xiàng)目組5人的語音識(shí)別; 實(shí)現(xiàn)3種類型噪聲的降除,包括白噪聲、功頻噪聲和環(huán)境噪聲

5、; 實(shí)現(xiàn)倒序播放; 實(shí)現(xiàn)變聲小黃人 實(shí)現(xiàn)數(shù)字均衡器等 測(cè)試方法:在MATLAB中首先畫出語音信號(hào)的時(shí)域波形;然后對(duì)語音號(hào)進(jìn)行快速傅里葉變換,得到信號(hào)的頻譜特性。將處理前后的時(shí)域波形和頻域波形進(jìn)行比較,分析其在形狀,數(shù)值上面的差異,結(jié)合音效變換的原理,判斷功能是否實(shí)現(xiàn)。同時(shí)使用函數(shù)對(duì)音頻進(jìn)行回放,方便直觀的比較音效變換結(jié)果是否與預(yù)期相符,如果相差太多,則繼續(xù)修改代碼或者參數(shù)。實(shí)現(xiàn)方式利用MATLAB編程實(shí)現(xiàn)音頻信號(hào)處理并分析處理后的音頻時(shí)域頻域特性,比較處理前后音頻播放效果。利用MATLAB中GUI實(shí)現(xiàn)人機(jī)交互界面的設(shè)計(jì)。一 系統(tǒng)設(shè)計(jì)及可行性分析人機(jī)交互界面 GUIDE相當(dāng)于一個(gè)控制面板,從中可

6、以調(diào)用各種設(shè)計(jì)工具以輔助完成界面設(shè)計(jì)任務(wù),例如控件的創(chuàng)建和布局、控件屬性的編輯和菜單設(shè)計(jì)等。 (1).設(shè)計(jì)步驟 將所需控件從控件面板拖拽到GUIDE的設(shè)計(jì)區(qū)域; 利用工具條中的工具(或相應(yīng)的菜單和現(xiàn)場(chǎng)菜單),快速完成界面布局; 設(shè)置控件的屬性。尤其是tag屬性,它是控件在程序內(nèi)部的唯一標(biāo)識(shí); 如果需要,打開菜單編輯器為界面添加菜單或現(xiàn)場(chǎng)菜單; 保存設(shè)計(jì)。GUIDE默認(rèn)把GUI程序保存為兩個(gè)同名文件:一個(gè)是.fig文件,用來保存窗體布局和所有控件的界面信息;一個(gè)是m文件,該文件的初始內(nèi)容是GUIDE自動(dòng)產(chǎn)生的程序框架,其中包括了各個(gè)控件回調(diào)函數(shù)的定義。該m文件與一般的M文件沒有本質(zhì)區(qū)別,但是鑒于

7、它的特殊性,MATALAB把這類文件統(tǒng)稱為GUI-M文件。保存完后GUI-M文件自動(dòng)在編輯調(diào)試器中打開以供編輯。 為每個(gè)回調(diào)函數(shù)添加代碼以實(shí)現(xiàn)GUI程序的具體功能。這一步與一般函數(shù)文件的編輯調(diào)試過程相同。 (2).設(shè)計(jì)過程及內(nèi)容 在MATLAB版面上,通過鍵入GUIDE彈出一個(gè)菜單欄進(jìn)入制作界面(或者在File到new來進(jìn)入),從而開始應(yīng)用界面的制作。 該界面主要實(shí)現(xiàn)了以下幾個(gè)功能: 打開格式的音頻文件,并將該音頻信號(hào)的值讀取并賦予某一向量; 播放音頻文件,可以選擇性的顯示該音頻信號(hào)的波形、頻譜、幅值以及相位; (3).人機(jī)交互界面語音識(shí)別 原理我們采用了MFCC算法提取錄音碼本的特征函數(shù),然

8、后將2段MFCC矩陣進(jìn)行用VQ方法計(jì)算平均失真測(cè)度最后比較判斷聲源的歸屬M(fèi)FCC參數(shù)是基于人的聽覺特性利用人聽覺的屏蔽效應(yīng),在Mel標(biāo)度頻率域提取出來的倒譜特征參數(shù),其提取過程如下:a) 對(duì)輸入的語音信號(hào)進(jìn)行分幀、加窗,然后作離散傅立葉變換,獲得頻譜分布信息。 設(shè)語音信號(hào)的DFT為(其中式中為輸入的語音信號(hào),N表示傅立葉變換的點(diǎn)數(shù)): b) 再求頻譜幅度的平方,得到能量譜。 c) 將能量譜通過一組Mel尺度的三角形濾波器組。 我們定義一個(gè)有M個(gè)濾波器的濾波器組(濾波器的個(gè)數(shù)和臨界帶的個(gè)數(shù)相近),采用的濾波器為三角濾波器,中心頻率為,,本系統(tǒng)取。d) 計(jì)算每個(gè)濾波器組輸出的對(duì)數(shù)能量。 其中為三角

9、濾波器的頻率響應(yīng)。 e) 經(jīng)過離散弦變換(DCT)得到MFCC系數(shù)。 MFCC系數(shù)個(gè)數(shù)通常取2030,常常不用0階倒譜系數(shù),因?yàn)樗从车氖穷l譜能量,故在一般識(shí)別系統(tǒng)中將稱為能量系數(shù),并不作為倒譜系數(shù),本系統(tǒng)選取20階倒譜系數(shù)。關(guān)于碼本的生成我們采用矢量量化聚類法,每個(gè)待識(shí)的說話人看作是一個(gè)信源,用一個(gè)碼本來表征。碼本是從該說話人的訓(xùn)練序列中提取的MFCC特征矢量聚類而生成,只要訓(xùn)練的序列足夠長(zhǎng),可認(rèn)為這個(gè)碼本有效地包含了說話人的個(gè)人特征,而與講話的內(nèi)容無關(guān)。本系統(tǒng)采用基于分裂的LBG的算法設(shè)計(jì)VQ碼本,為訓(xùn)練序列,B為碼本。 具體實(shí)現(xiàn)過程如下: 1.取提取出來的所有幀的特征矢量的型心(均值)作

10、為第一個(gè)碼字矢量B1。 2.將當(dāng)前的碼本根據(jù)以下規(guī)則分裂,形成2m個(gè)碼字。 其中m從1變化到當(dāng)前的碼本的碼字?jǐn)?shù),是分裂時(shí)的參數(shù),本文。 3.根據(jù)得到的碼本把所有的訓(xùn)練序列(特征矢量)進(jìn)行分類,然后按照下面兩個(gè)公式計(jì)算訓(xùn)練矢量量化失真量的總和以及相對(duì)失真為迭代次數(shù),初始化(, ,B為當(dāng)前的碼書),若相對(duì)失真小于某一閾值,迭代結(jié)束,當(dāng)前的碼書就是設(shè)計(jì)好的個(gè)碼字的碼書,轉(zhuǎn)5。否則,轉(zhuǎn)下一步。 量化失真量和: 相對(duì)失真: 4.重新計(jì)算各個(gè)區(qū)域的新型心,得到新的碼書,轉(zhuǎn)3。 5.重復(fù)2,3和4步,直到形成有M個(gè)碼字的碼書(M是所要求的碼字?jǐn)?shù)),其中。關(guān)于VQ的說話人識(shí)別原理如下:設(shè)未知的說話人的特征矢量

11、,共有T幀是訓(xùn)練階段形成的碼書,表示碼書第個(gè)碼字,每一個(gè)碼書有個(gè)碼字。再計(jì)算測(cè)試者的平均量化失真,并設(shè)置一個(gè)閾值,若D小于此閾值,則是原訓(xùn)練者,反之則認(rèn)為不是原訓(xùn)練者。 主要代碼見附錄“語音識(shí)別”代碼部分 測(cè)試過程錄入一段語音,結(jié)果如下: 識(shí)別圖 時(shí)域圖 圖 2.1 圖 2.2 結(jié)果分析 經(jīng)過反復(fù)測(cè)試,語言識(shí)別的成功率達(dá)到90%,但是在嘈雜的環(huán)境中,對(duì)識(shí)別有所干擾,所以我們加一個(gè)預(yù)濾波處理,即:用低通濾波器,將2KHz以上的高頻噪聲信號(hào)濾除。降噪3.1 小波與譜減法降噪 原理 一個(gè)含噪聲的一維信號(hào)的模型可以表示成如下的形式: , 式中為含噪信號(hào);為原始號(hào);為噪聲信號(hào);為噪聲強(qiáng)度 由于傅里葉變換

12、不具有時(shí)頻分析的局域性,它在降噪的同時(shí)平滑了信號(hào)的突變部分,而小波變換可以保留原始信號(hào)中的突變部分.如果利用小波變換進(jìn)行信號(hào)降噪的話,那么降噪過程可按如下方法進(jìn)行: 1)一維信號(hào)的小波分解.選擇一個(gè)小波并確定一個(gè)小波分解的層次N,然后對(duì)信號(hào)進(jìn)行N層小波分解計(jì)算. 2)小波分解高頻系數(shù)的閾值量化.對(duì)第1層到第N層的每一層高頻系數(shù),選擇一個(gè)閾值進(jìn)行軟閾值量化處理. 3)一維小波的重構(gòu).根據(jù)小波分解的第N層 的低頻系數(shù)和經(jīng)過量化處理后的第1層到第N層的高頻系數(shù),進(jìn)行一維信號(hào)的小波重構(gòu) 但是實(shí)際過程中,我們發(fā)現(xiàn)降噪效果并不理想,在此基礎(chǔ)上,我們又采用減譜法對(duì)小波降噪后的信號(hào)進(jìn)行處理,即:從帶噪語音估值

13、中減去噪聲頻譜估值,從而得到純凈語音的頻譜。譜相減方法是基于人的感覺特性,因?yàn)檎Z音信號(hào)的短時(shí)幅度比短時(shí)相位更容易對(duì)人的聽覺系統(tǒng)產(chǎn)生影響,從而對(duì)語音短時(shí)幅度譜進(jìn)行估計(jì),適用于受加性噪聲污染的語音。 主要代碼y,fs,nbits=wavread ('C:UsersdingyuDesktopmatlab語音識(shí)別Matlab語音識(shí)別1ss4');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;%sound(s);thr,sorh,deepapp,crit = ddencmp('den','wp',s);thr

14、 = 0.065;x = wpdencmp(s,sorh,6,'sym9',crit,thr,deepapp);subplot(2,1,1);plot(x);grid;title('小波包去噪波形');sound(x);wavwrite(x,9000,'C:UsersdingyuDesktopmatlab語音識(shí)別Matlab語音識(shí)別1s11.wav');wavwrite(s,9000,'C:UsersdingyuDesktopmatlab語音識(shí)別Matlab語音識(shí)別1s12.wav');xx,fs=wavread('C:U

15、sersdingyuDesktop數(shù)字信號(hào)處理matlab語音識(shí)別1sshi1.wav'); x=xx/max(abs(xx); SNR=10; signal=Gnoisegen(x,SNR); % 疊加噪聲%sound(signal,fs);N=length(x); time=(0:N-1)/fs; IS=.15; % 設(shè)置IS% 調(diào)用SSBoll79m_2函數(shù)做譜減output,voiceseg,vosl,SF,Ef=SSBoll79m_2(xx,fs,IS,0.12);ol=length(output); % 把output補(bǔ)到與x等長(zhǎng)if ol<N output=outp

16、ut; zeros(N-ol,1);endsound(output,fs); 測(cè)試過程 首先錄入一段語音,對(duì)這段語音加上白噪聲,再進(jìn)行降噪處理。降噪前后的語音波形對(duì)比如下: 圖3.1 圖3.2 圖3.3 圖3.4結(jié)果分析 從時(shí)域上看,波形有明顯改變,更加接近原始信號(hào)波形。 實(shí)際播放時(shí),聲音也更加清晰,基本上無失真。 3.2功頻降噪 原理我們?cè)O(shè)計(jì)了數(shù)字巴特沃斯低通濾波器,來濾除功頻噪聲。在設(shè)計(jì)此濾波器時(shí),我們采用了雙線變換法,即:使DF的頻率響應(yīng)與AF的頻率響應(yīng)相似的一種變換法。直接使數(shù)字濾波器的頻率響應(yīng),逼近模擬濾波器的頻率響應(yīng),進(jìn)而求得。 主要代碼y,fs,nbits=wavread (&#

17、39;C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,'s');b11,a11=butter(n11,wn11,'s');

18、num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);wavplay(4*z11,fs); 測(cè)試過程首先給語音加上功頻噪聲,也就是正弦噪聲;此時(shí),再次播放音頻,會(huì)伴隨著刺耳的長(zhǎng)滴聲;再通過功頻降噪模塊,播放降噪后的語音。降噪后頻譜與時(shí)域波形如下: 圖3.2.1結(jié)果分析從時(shí)域上看,波形與原語音波形基本一致,這說明噪音部分已經(jīng)濾除, 從實(shí)際測(cè)試中,我們發(fā)現(xiàn)通過降噪后,長(zhǎng)滴聲完全消失,降噪后的語音也沒有失真,此方法比較可靠。3.3褐色降噪 原理 對(duì)于褐色噪聲的降除,我們也使用了小波降噪的方法 主要代碼 測(cè)試過程 首先錄入一段語音,再加

19、入褐色噪聲,即:一種全頻帶的,像海邊特有的潮汐噪聲波,其頻率分量功率主要集中在低頻段。再通過小波降噪系統(tǒng),濾除了低頻的褐色噪聲,使得播放聲音效果中的低頻潮汐聲得到明顯的降除。 結(jié)果分析 從結(jié)果上了來說如果沒有刻意通過低頻放大器對(duì)濾除后的語音進(jìn)行放大,可以達(dá)到另人滿意的降噪效果,從實(shí)際角度出發(fā)我們覺得褐色噪聲適合在實(shí)際的環(huán)境中進(jìn)行處理,因?yàn)樵趯?shí)際的環(huán)境中低頻的噪聲不容易被人耳分辨出來。音頻特效4.1.倒序播放 原理 因?yàn)闀r(shí)域譜的搬移不會(huì)對(duì)頻譜造成影響,所以改變每個(gè)字時(shí)域波形的位置,即可實(shí)現(xiàn)倒序播放。也就是說,當(dāng)對(duì)一段語言進(jìn)行采樣后,計(jì)算信號(hào)的長(zhǎng)度,得到采樣點(diǎn)數(shù)N,并得到語音信號(hào)的矩陣。然后在電壓

20、跳變點(diǎn)處切割,即可得到每個(gè)字的矩陣。在MATLAB中,語音信號(hào)以矩陣的形式存儲(chǔ),所以將每個(gè)字的矩陣倒置,就能得到倒序的語言信號(hào) 主要代碼由于主要代碼較長(zhǎng)見附錄倒敘播放代碼部分 測(cè)試過程 首先錄制時(shí)長(zhǎng)一定的語音(這里我們默認(rèn)是10S),例如:然后通過倒序模塊,再播放語音。實(shí)際測(cè)試中,可以比較清晰地聽見的倒序語音 結(jié)果分析 因?yàn)橹皇呛?jiǎn)單地對(duì)時(shí)域信號(hào)進(jìn)行等間隔切割,再進(jìn)行倒置,所以具有局限性,必須控制說每個(gè)字的步長(zhǎng)一定,才能成功。4.2變聲小黃人 原理 人的聲音不同的原因是音調(diào)不同,也就是聲帶振動(dòng)的頻率不同。因?yàn)樾↑S人聲音頻率更高,所以只要改變?cè)颊Z音信號(hào)的頻譜,讓它增長(zhǎng)一定的倍數(shù),即可簡(jiǎn)單地實(shí)現(xiàn)小

21、黃人變聲器這一功能。 主要代碼function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread('C:UsersdingyuDesktopÊý

22、15;ÖÐźŴ¦Àíeg.wav');sound(y,1.6*fs);4.3數(shù)字均衡器均衡器簡(jiǎn)介 均衡器是一種用來對(duì)頻響曲線進(jìn)行調(diào)節(jié)的音頻設(shè)備,換句話說,均衡器能對(duì)不同頻率的聲音信號(hào)中的各頻率成分進(jìn)行放大或縮小。它能補(bǔ)償由于各種原因造成的信號(hào)欠缺的頻率成分,也能抑制信號(hào)中過多的頻率成分。利用均衡器的這個(gè)特性,可以對(duì)聲音進(jìn)行音調(diào)調(diào)節(jié)和音色加工。均衡器的原意是將傳輸系統(tǒng)中不平衡的頻率特性用相反的特性曲線進(jìn)行頻率均衡,在此基礎(chǔ)上增加了音色加工和美化的功能。均衡器的作用主要如下:校正各種音頻

23、設(shè)備產(chǎn)生的頻率失真,以獲得平坦響應(yīng)。  改善室內(nèi)聲場(chǎng),改善由于房間共振特性或吸聲特性不均勻而造成的傳輸增益(頻率)失真,確保其頻率特性平直。  抑制聲反饋,提高系統(tǒng)傳聲增益,改善擴(kuò)聲音質(zhì)。  提高語言清晰度和自然度。  在音響藝術(shù)創(chuàng)作中,用于刻畫樂器和演員的音色個(gè)性,提高音響藝術(shù)的表現(xiàn)效果。  設(shè)計(jì)原理均衡器的種類很多,但基本上工作原理都是相同的。它們都是將音頻信號(hào)的全頻帶(一般為20Hz20kHz)或全頻帶的主要部分,按一定的規(guī)律分成幾個(gè)甚至幾十個(gè)頻段,再構(gòu)造出通帶為對(duì)應(yīng)頻段的濾波器,通過改變

24、濾波器的增益,增強(qiáng)或削弱某一特定的頻率成分,達(dá)到均衡的目的。在本程序中,根據(jù)不同頻率的聲音的音感,將全頻帶分為8段:30100Hz(沉重);100200Hz(豐滿);200500Hz(力度);5001KHz(明朗);1K2KHz(透亮);2K4Kz(尖銳);4K8Kz(清脆);8K16Kz(纖細(xì)),構(gòu)造出濾波器組函數(shù)。圖 4.3.1 濾波器組的構(gòu)造如圖1所示,先做出原型濾波器 的頻率響應(yīng),之后將它在頻域上移動(dòng),派生出一系列頻率響應(yīng)形狀相同但截止頻率不同的濾波器,將這些濾波器疊加在一起形成濾波器組,即: 因此,對(duì)濾波器組的設(shè)計(jì)問題轉(zhuǎn)化為原型濾波器的設(shè)計(jì),本程序設(shè)計(jì)了下拉菜單,用戶可選取基于巴特沃

25、斯法、切比雪夫I、切比雪夫II、橢圓法構(gòu)造的濾波器,并且可以選擇濾波器的階數(shù)。對(duì)于以上四種濾波器,階數(shù) 越高特性越接近理想濾波器,但隨著N的增長(zhǎng)算法復(fù)雜度會(huì)上升,因此階數(shù)也不可取得太大。MATLAB中內(nèi)置了等函數(shù),只需輸入截止頻率、通帶衰減、阻帶衰減等濾波器技術(shù)參數(shù),即可算出符合該參數(shù)的最小階數(shù) ,通過計(jì)算和實(shí)踐,發(fā)現(xiàn)階數(shù)最小可取1,因此設(shè)置13階作為用戶可以選擇的階數(shù)范圍。此外,還需確定分析頻率 ,將截止頻率轉(zhuǎn)化為歸一化頻率,查閱資料發(fā)現(xiàn),應(yīng)取采樣頻率 的一半。至此,只需調(diào)用MATLAB中的濾波器構(gòu)造函數(shù)即可設(shè)計(jì)出原型濾波器,利用循環(huán)即可設(shè)計(jì)出濾波器組。濾波器組設(shè)計(jì)好后,還需確定各頻段對(duì)應(yīng)的

26、加權(quán),程序充分利用MATLAB提供的組件,使用了8個(gè)滑動(dòng)條提取相應(yīng)的權(quán)值(如圖2),權(quán)值大小最終由數(shù)學(xué)公式給出:當(dāng)滑動(dòng)條在中間的時(shí)候值為0.5,增益剛好為1倍;滑動(dòng)條滑至頂部值為1,增益為24dB;滑動(dòng)條滑至底部為0,增益接近無窮小。圖 4.3.2 滑動(dòng)條設(shè)計(jì)最后,利用函數(shù)讓聲音序列以此通過這些濾波器,并乘以各濾波器對(duì)應(yīng)的幅度加權(quán)(如圖3.3),即可完成均衡。圖 4.3.3 濾波器組傳輸函數(shù)演示調(diào)用的函數(shù)(1) 函數(shù)用于計(jì)算濾波器的輸出,其中,B、A是濾波器傳輸函數(shù)的系數(shù),X為輸入序列,Y為濾波后的輸出序列。具體的,該函數(shù)遵循如下方程: (2) 通過這四個(gè)函數(shù),可以很方便地構(gòu)造濾波器,其中代表

27、通帶范圍,分別代表通帶紋波和阻帶紋波。 結(jié)果分析如圖4.3.4所示,當(dāng)將滑動(dòng)條設(shè)置為放大低音的狀態(tài),進(jìn)行均衡后,發(fā)現(xiàn)原來的聲音信號(hào)在時(shí)域上的毛刺波形減少,波形看上去“規(guī)則”了許多,頻域上低頻部分被放大,高頻部分幾乎消失。打開聲音文件,發(fā)現(xiàn)均衡后的聲音深沉、黯淡,低音明顯,說明達(dá)到了均衡效果。圖 4.3.4 均衡后的時(shí)頻域波形附錄:主程序function varargout = luyin(varargin)% LUYIN MATLAB code for luyin.fig% LUYIN, by itself, creates a new LUYIN or raises the existing

28、% singleton*.% H = LUYIN returns the handle to a new LUYIN or the handle to% the existing singleton*.% LUYIN('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in LUYIN.M with the given input arguments.% LUYIN('Property','Value',.) creates a new

29、LUYIN or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before luyin_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to luyin_OpeningFcn via varargin.% *See GUI Opti

30、ons on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help luyin % Last Modified by GUIDE v2.5 24-Oct-2015 07:52:09 % Begin initialization code - DO NOT EDITgui_Singlet

31、on = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', luyin_OpeningFcn, . 'gui_OutputFcn', luyin_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_C

32、allback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before luyin is made visible.function luyin_OpeningFcn(hObject, eventdata, handles, varargin)% This

33、function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to luyin (see VARARGIN) % Choose default command line output for luyinh

34、andles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes luyin wait for user response (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = luyin_OutputFcn(hObject, eventdata, handles) % varar

35、gout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; 錄音部分

36、代碼:% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) msgbox('¼&#

37、210;ô¿ªÊ¼')fs=8000;time=10;y=wavrecord(fs*time,fs);wavwrite(y,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');msgbox('¼Òô½áÊø')%close start 白噪聲加噪代碼:% - Execu

38、tes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuD

39、esktopÊý×ÖÐźŴ¦Àíeg.wav');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;S=fft(s);axes(handles.axes1);plot(s);title('¼ÓÔëʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick&#

40、39;,'on'); %ƵÓò»æͼn=length(s);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=abs(fft(y(

41、1:n)/n*2); axes(handles.axes3);plot(f(1:n/8),x(1:n/8);title('¼ÓÔëƵÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) wavplay(s,fs); 白噪聲降噪代碼:% - Executes on button press in pushbutton4.

42、function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐ

43、;źŴ¦Àíeg.wav');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;wavwrite(s,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg2.wav');thr,sorh,deepapp,crit = ddencmp('den','wp',s);thr = 0.07

44、5;x = wpdencmp(s,sorh,6,'sym25',crit,thr,deepapp);N=80000;t=(0:1:N-1)/fs;f=5000;wavwrite(x,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg1.wav');%С²¨½µÔëx=y/max(abs(y); SNR=10; signal=Gnoiseg

45、en(x,SNR); % µþ¼ÓÔëÉùN=length(x); time=(0:N-1)/fs; IS=.15; % ÉèÖÃIS% µ÷ÓÃSSBoll79m_2º¯Êý×öÆ×¼õoutput,voiceseg,vosl,SF,Ef=SSBoll79m_2(y,fs,IS,0.12);ol=length(output); % &#

46、176;Ñoutput²¹µ½ÓëxµÈ³¤if ol<N output=output; zeros(N-ol,1);endsound(output,fs);%µÍͨÂ˲¨s0=0.1*sin(2*pi*f*t);s=x+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,&#

47、39;s');b11,a11=butter(n11,wn11,'s');num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);X=fft(x);wavwrite(output,8000,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦ÀímatlabÓïÒôʶ±ð1sshi1.wav&

48、#39;);axes(handles.axes2);plot(output);%wavwrite(x,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg1.wav');title('È¥ÔëʱÓò²¨ÐÎ');set(handles.axes2,'XminorTick','o

49、n');grid on%wavplay(5*x,fs);%ƵÓò»æͼn=length(output);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂ

50、Êx=abs(fft(y(1:n)/n*2); axes(handles.axes4);plot(f(1:n/8),x(1:n/8);title('È¥ÔëƵÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) 小黃人變聲代碼:% - Executes on button press in pushbutto

51、n5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread('C:UsersdingyuDesktopÊý×Ö

52、08;źŴ¦Àíeg.wav');sound(y,1.6*fs); 倒敘代碼詳見后面:% - Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% hand

53、les structure with handles and user data (see GUIDATA)run daoxu.m % - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with

54、 handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'wavplay(s,fs);axes(handles.axes1);plot(s);title('¼ÓÔ&

55、#235;ʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick','on');%»­ÆµÓò²¨ÐÎn=length(s);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0

56、:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=abs(fft(y(1:n)/n*2); axes(handles.axes3);plot(f(1:n/8),x(1:n/8);title('¼ÓÔëƵÓò²¨ÐÎ');xlabel('f/hz','FontName','Time

57、s New Roman','FontSize',8) 工頻噪聲降噪代碼:% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user

58、data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,'s'

59、;);b11,a11=butter(n11,wn11,'s');num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);wavplay(4*z11,fs);axes(handles.axes2);plot(z11);title('¹¤ÆµÈ¥ÔëʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick'

60、,'on');%»­ÆµÓò²¨ÐÎn=length(z11);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=

61、abs(fft(y(1:n)/n*2); axes(handles.axes4);plot(f(1:n/8),x(1:n/8);title('¹¤ÆµÈ¥ÔëƵÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) 白噪聲降噪代碼:% - Executes on button pr

62、ess in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論