第一篇:基于matlab的語音信號濾波處理——數(shù)字信號處理課程設計
數(shù)字信號處理課程設計
題目: 學院: 專業(yè): 班級: 學號: 姓名: 指導教師:
基于matlab的語音信號濾波處理
物理與電子信息學院電子信息工程
摘要:
語音信號處理是研究用數(shù)字信號處理技術和語音學知識對語音信號進行處理的新興學科,是目前發(fā)展最為迅速的學科之一,通過語音傳遞信息是人類最重要,最有效,最常用和最方便的交換信息手段,所以對其的研究更顯得尤為重要。
Matlab語言是一種數(shù)據(jù)分析和處理功能十分強大的計算機應用軟件,它可以將聲音文件變換成離散的數(shù)據(jù)文件,然后用起強大的矩陣運算能力處理數(shù)據(jù)。這為我們的本次設計提供了強大并良好的環(huán)境!
本設計要求自己錄制一段自己的語音后,在MATLAB軟件中采集語音信號、回放語音信號并畫出語音信號的時域波形和頻譜圖。再在Matlab中分別設計不同形式的FIR數(shù)字濾波器。之后對采集的語音信號經(jīng)過不同的濾波器(低通、高通、帶通)后,觀察不同的波形,并進行時域和頻譜的分析。對比處理前后的時域圖和頻譜圖,分析各種濾波器對于語音信號的影響。最后分別收聽進行濾波后的語音信號效果,做到了解在怎么樣的情況下該用怎么樣的濾波器。
目錄
1.設計內(nèi)容……………………………………………………………4 2.設計原理……………………………………………………………4 2.1語音信號的時域分析…………………………………………4 2.2語音信號的頻域分析…………………………………………5 3.設計過程……………………………………………………………5 3.1實驗程序源代碼………………………………………………6
3.1.1原語音信號時域、頻域圖………………………………6
3.1.2低通濾波器的設計………………………………………6
3.1.3高通濾波器的設計………………………………………7
3.1.4帶通濾波器的設計………………………………………8
3.1.5語音信號的回放………………………………………9 3.2調(diào)試結果描述…………………………………………………10 3.3所遇問題及結果分析…………………………………………15
3.3.1所遇主要問題…………………………………………16
3.3.2結果分析………………………………………………16 4.體會與收獲…………………………………………………………17 5.參考文獻……………………………………………………………17
1.設計內(nèi)容:
1.首先錄制好一段自己的語音。
2.用Matlab分別設計好3種類型的濾波器(指標自己確定):低通型、高通型、帶通型。3.用Matlab將語音信號進行采樣,并分別將其通過所設計的3種濾波器。4.用Matlab自帶的語音返回函數(shù)收聽濾波后的語音信號,分析并比較其與原語音信號的差異。
2.設計原理:
語音信號時一種非平穩(wěn)的時變信號,它帶著各種信息。在語音編碼、語音合成、語音識別和語音增強等語音處理中無一例外需要提取語音中包含的各種信息。語音信號分析的目的就在于方便有效的提取并表示語音信號所攜帶的信息。語音信號處理可以分為時域和變換域等處理方法,其中時域分析是最簡單的方法,直接對語音信號的時域波形進行分析,崎嶇的特征參數(shù)主要有語音的短時能量,短時平均過零率,短時自相關函數(shù)等。2.1語音信號的時域分析
信號提?。和ㄟ^圖形用戶界面上的菜單功能按鍵采集電腦上的一段音頻信號,完成音頻信號的頻率,幅度等信息的提取,并得到該語音信號的波形圖。
信號調(diào)整:在設計的用戶圖形界面下對輸入的音頻信號進行各種變化,如變化幅度、改變頻率等操作,以實現(xiàn)對語音信號的調(diào)整。
2.2語音信號的頻域分析
信號的傅里葉表示在信號的分析和處理中起著重要的作用。因為對于線性系統(tǒng)來說,可以很方便地確定其對正弦或復指數(shù)和的響應,所以傅里葉分析方法能完善地解決許多信號分析和處理問題。另外,傅里葉表示使信號的某些特性變得更明顯,因此,它能更深入地說明信號的各項紅物理現(xiàn)象。
由于語音信號時隨著時間變化的,通常認為,語音是一個受準周期脈沖或隨機噪聲源激勵的線性系統(tǒng)的輸出。輸出頻譜是聲道系統(tǒng)頻率響應與激勵源頻譜的乘積。身份到系統(tǒng)的頻率響應及激勵源都是隨時間變化的,因此一般標準的傅里葉表示雖然適用于周期及平穩(wěn)隨機信號的表示,但不能直接用于語音信號。由于語音信號可以認為在短時間內(nèi),近似不變,因而可以采用短時分析法。
1.信號變換:在用戶圖形界面西啊對采集的語音信號進行Fourier等變換,并畫出變換前后的頻譜圖和倒譜圖。
2.信號濾波:濾除語音信號中的噪音部分,可以采用抵用濾波、高通濾波、帶通濾波,并比較各種濾波后的效果。
3.設計過程:
3.1實驗程序源代碼(原語音信號存放在e:下):
3.1.1.原語音信號的時域、頻域圖
[x1,fs,bits]=wavread('e:txwz.wav');%sound(x1,fs,bits);figure(1);
plot(x1);%做原始語音信號的時域圖形 title('原始語音信號');xlabel('時間 t');ylabel('音量 n');figure(2);y1=fft(x1);%做length(x1)點的FFT y1=fftshift(y1);%平移,是頻率中心為0 derta_fs = fs/length(x1);%設置頻譜的間隔,分辨率 plot([-fs/2:derta_fs: fs/2-derta_fs],abs(y1));%畫出原始語音信號的頻譜圖
title('原始語音信號的頻譜');grid on;3.1.2低通濾波器的設計
%低通濾波:截止頻率4000,阻帶衰減20dB,過渡帶寬0.1π
fc1=4000;N1=2*pi*0.9/(0.1*pi)wc1=2*pi*fc1/fs;if rem(N1,2)==0 N1=N1+1;end Window= boxcar(N1+1);%長度為N1的矩形窗Window b1=fir1(N1,wc1/pi,Window);
figure(3);freqz(b1,1,512);title('低通濾波器的頻率響應');x1_low = filter(b1,1,x1);%對信號進行低通濾波 figure(4);plot(x1_low);title('信號經(jīng)過低通濾波器(時域)');figure(5);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_low))));title('信號經(jīng)過低通濾波器(頻域)');3.1.3高通濾波器的設計
%高通濾波:截止頻率4000,阻帶衰減40dB,過渡帶寬0.1π
fc2=4000;N2=2*pi*3.1/(0.1*pi)wc2=2*pi*fc1/fs;N2=N2+mod(N2,2);Window=hanning(N2+1);b2=fir1(N2,wc2/pi,'high',Window);figure(6);freqz(b2,1,512);%數(shù)字濾波器頻率響應 title('高通濾波器的頻率響應');
x1_high = filter(b2,1,x1);%對信號進行高通濾波 figure(7);plot(x1_high);title('信號經(jīng)過高通濾波器(時域)');figure(8);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_high))));title('信號經(jīng)過高通濾波器(頻域)')3.1.4帶通濾波器的設計
%帶通濾波:下截止頻率4000,上截止頻率8000,阻帶衰減20dB,過渡帶寬度0.1π
f1=4000;f2=8000;%帶通濾波器的通帶范圍 w1=2*pi*f1/fs;w3=w1+0.1*pi;w2=2*pi*f2/fs;w4=w2-0.1*pi;w=[(w1+w3)/2,(w2+w4)/2];B=0.1*pi;N3=ceil(2*0.9*pi/B);N3=N3+mod(N3,2);Window=boxcar(N3+1);b3=fir1(N3,w/pi,'stop',Window);%帶通濾波器
figure(9);freqz(b3,1,512);%數(shù)字濾波器頻率響應 title('帶通濾波器的頻率響應');x1_daitong = filter(b3,1,x1);%對信號進行帶通濾波 figure(10);plot(x1_daitong);title('信號經(jīng)過帶通濾波器(時域)');figure(11);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_daitong))));title('信號經(jīng)過帶通濾波器(頻域)');3.1.5語音信號的回放(分別執(zhí)行)
sound(x1,fs,bits);%原始信號
sound(x1_low,fs,bits);%經(jīng)過低通濾 sound(x1_high,fs,bits);%經(jīng)過高通濾波 sound(x1_daitong,fs,bits);%經(jīng)過帶通濾波
3.2調(diào)試結果描述
原始語音信號的時域圖形:
原始語音信號頻譜:
低通濾波器的頻率響應:
信號經(jīng)過低通濾波后的時域波形:
信號經(jīng)過低通濾波后的頻域波形
高通濾波器的頻率響應:
信號經(jīng)過高通濾波后的時域波形:
信號經(jīng)過高通濾波后的頻域波形:
帶通濾波器的頻率響應:
信號經(jīng)過帶通濾波后的時域波形:
信號經(jīng)過帶通濾波后的頻域波形:
3.3所遇問題及結果分析
3.3.1所遇主要問題
1.在高通與帶通濾波器的設計時老是報錯,但同樣的用法在低通濾波器中就可以實現(xiàn)
b2=fir1(N2,wc2/pi,'high',Window);??? Error using ==> fir1 The window length must be the same as the filter length.其要求在fir函數(shù)中所選用的窗長要和濾波器長度一致。但在參考書上指出,濾波器階數(shù)必須為窗長加1。經(jīng)上網(wǎng)查詢后,原來高通、帶阻濾波器的階數(shù)應該控制為奇數(shù),因為如果階數(shù)為偶數(shù),則在π點必有一零點,這對于高通帶阻來說是不允許的,故取階數(shù)為奇數(shù),而你FIR1濾波器階數(shù)為M+1階,所以你的M必須為偶數(shù),所以可以將程序中去窗長算法由原程序的: N2=2*pi*0.9/(0.1*pi);if rem(N2,2)==0 N2=N2+1;End 和: N3=2*pi*0.9/(0.1*pi);if rem(N3,2)==0 N3=N3+1;End 改為了:
N2=N2+mod(N2,2);和: B=0.1*pi;(B為過渡帶寬)N3=ceil(2*0.9*pi/B);N3=N3+mod(N3,2);2.在設計高通濾波器時先是使用的矩形窗,用矩形窗驗證出來的結果中低頻語音分量依舊很強,不能將其全部抑制在0,之后換窗,選著了最小衰減可以到達53dB的海明窗,再次試驗,非常成功!3.3.2結果分析
經(jīng)過回放三個不同類型濾波器輸出的語音信號,并與原語音信號對比得到了如下結論。
語音高頻成分音質(zhì)非常尖銳,齒音中,聲音有些暗淡。語音低頻成分音質(zhì)沉穩(wěn),空間感覺強,語音渾厚。語音中頻成分音質(zhì)有力度,有通透感。
4.體會與收獲
以往都是通過課本來感性的認知語音信號,通過本次的課程設計,讓我對語音信號有了一個較為實際的認識。于此同時,讓我再次把數(shù)字信號處理及數(shù)字濾波器的設計方法重新進行了復習和學習。而對于Matlab,也再次讓我感受到了其功能的強大。最為重要的是,本次課 17
程設計讓我重新審視了學習的過程:只去做實驗是不行的,首先還是要思考,遇到了問題查書籍,百度搜索也只是一種手段,更加重要的是想,再理解,只有這樣才能真正的做好實驗。
5.參考文獻
《數(shù)字信號處理》錢同惠、百度文庫
第二篇:數(shù)字信號處理教語音信號處理課程設計心得
這次課程設計雖然遇到了很多問題,很多困難,但是也學到了很多東西。不僅學到了書本上的東西,而且學到了很多課本上沒有的東西,很多程序里的東西,特別是程序語法,總是有錯誤,但是總是不知道錯在哪里,在細心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。還有各種各樣問題,通過查網(wǎng)絡和請教同學來弄明白,這個過程是痛苦的,有時候有些問題不能馬上解決,感到很頭痛,真想放棄這個問題,但是堅持下來,并且解決這些問題的時候,真的有種苦盡甘來的感覺。
應用MATLAB進行語音信號的處理是與我們所學課程及專業(yè)緊密相連的,有著很強的實踐性。做這個課程設計的時候,并不是非常的順利,我也有遇到很多困難。剛開始,我用自己的mp3錄制的一個wav文件做語音信號處理,程序始終現(xiàn)實如下錯誤提示:
??? Error using ==> wavread Error using ==> wavread Data compression format(IMA ADPCM)is not supported.我在查閱了很多資料,在網(wǎng)上也查閱相關信息,花費了大量時間也沒找出結果,最后發(fā)現(xiàn)在WAV格式的語音文件有兩種格式,即PCM格式和IMA ADPCM格式,而在MATLAB中用wavread函數(shù)進行語音處理時,并不能直接處理IMA ADPCM格式的語音信號,經(jīng)過格式轉換之后(選擇PCM格式),我運行出了正確的結果。剛開始由于對濾波器的濾波原理并不是很了解,于是我又翻出學過的數(shù)字信號處理課本,認真研究起各種濾波器了,這才使我明白了大多數(shù)濾波器是如何工作地,不再單單只是懂理論,理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論。實驗過程中,我感覺到初始語音信號和濾波輸出后的語音信號在音色上有一定的差別,這說明了信號在處理、傳輸過程中有損耗。不管對于什么樣的課題,其實也是有很多東西可以發(fā)掘的,這需要我們在平時多積累,多思考,只有這樣,才能取得更大的進步,才能學有所用,學有所長。
通過這次設計,進一步加深了對數(shù)字信號處理的了解,讓我對它有了更加濃厚的興趣。通過這次課程設計使我懂得了,平時的理論知識只有通過自己動手做一個課題,從做這個課題的過程中發(fā)現(xiàn)問題,解決問題,這個學習的過程,會比我們平時只通過課堂上聽講得到的知識更加生動立體,跟讓人記憶深刻。在設計的過程中,我發(fā)現(xiàn)同學間的互幫互助真的很重要。當我們有問題的時候,大家一起討論,將自己的觀點表達出來,當發(fā)現(xiàn)別人的觀點與自己的不同的時候,我們通過查閱資料找到最終正確的答案,這個過程是互利互惠的。這也培養(yǎng)了我們以后走上工作崗位后的團隊精神,對我們以后的為人處世都有很大幫助。同時我們在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。
總的來說,通過這次的課程設計我對語音信號有了全面的認識,對數(shù)字信號處理的知識又有了深刻的理解,讓我感受到只有在充分理解課本知識的前提下,才能更好的應用這個工具;并且熟練的應用MATLAB也可以很好的加深我對課程的理解,方便我的思維。這次設計使我了解了MATLAB的使用方法,學會分析濾波器的優(yōu)劣和性能,提高了分析和動手實踐能力。同時我相信,進一步加強對MATLAB的學習與研究對我今后的學習將會起到很大的幫助!
第三篇:數(shù)字信號處理課程設計
目 錄
摘要...........................................................................................................................................1 1 緒論..............................................................................................................................................2
1.1 DSP系統(tǒng)特點和設計基本原則......................................................................................2 1.2 國內(nèi)外研究動態(tài).............................................................................................................2 2系統(tǒng)設計........................................................................................................................................3 3硬件設計........................................................................................................................................5
3.1 硬件結構...........................................................................................................................5 3.2 硬件電路設計...................................................................................................................7
3.2.1 總輸入電路...........................................................................................................7 3.2.2 總輸出電路...........................................................................................................7 3.2.3 語音輸入電路.......................................................................................................9 3.2.4 語音輸出電路.......................................................................................................9 實驗結果及分析.........................................................................................................................10 4.1 實驗結果.........................................................................................................................10 4.2 實驗分析.........................................................................................................................12 5 總結與心得體會.........................................................................................................................13 參考文獻.........................................................................................................................................14 致謝................................................................................................................................................15
摘要
基于DSP的語音信號處理系統(tǒng),該系統(tǒng)采用TMS320VC5509作為主處理器,TLV320AIC23B作為音頻芯片,在此基礎上完成系統(tǒng)硬件平臺的搭建和軟件設計,從而實現(xiàn)對語音信號的采集、濾波和回放功能,它可作為語音信號處理的通用平臺。
語音是人類相互之間進行交流時使用最多、最自然、最基本也是最重要的信息載體。在高度信息化的今天,語音信號處理是信息高速公路、多媒體技術、辦公自動化、現(xiàn)代通信及智能系統(tǒng)等新興領域應用的核心技術之一。通常這些信號處理的過程要滿足實時且快速高效的要求,隨著DSP技術的發(fā)展,以DSP為內(nèi)核的設備越來越多,為語音信號的處理提供了良好的平臺。本文設計了一個基于TMS320VC5509定點的語音信號處理系統(tǒng),實現(xiàn)對語音信號的采集、處理與回放等功能,為今后復雜的語音信號處理算法的研究和實時實現(xiàn)提供一個通用平臺。
關鍵詞:語音處理;DSP;TMS320VC5509;TLV320AIC23B
1 緒論
語音是人類相互間所進行的通信的最自然和最簡潔方便的形式,語音通信是一種理想的人機通信方式。語音通信的研究涉及到人工智能、數(shù)字信號處理、微型計算機技術、語言聲學、語言學等許多領域,所以說語音的通信是一個多學科的綜合研究領域,其研究成果具有重要的學術價值。另外通過語音來傳遞信息是人類最重要的、最有效、最常用的交換信息的形式。語言是人類特有的功能,聲音是人類常用的工具,是相互傳遞信息的主要手段。同時也是眾構成思想交流和感情溝通的最主要的途徑。
1.1 DSP系統(tǒng)特點和設計基本原則
DSP(digital signal processor)是一種獨特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數(shù)字信號。再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字數(shù)據(jù)解譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復雜指令程序,遠遠超過通用微處理器,是數(shù)字化電子世界中日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特色。
1.2 國內(nèi)外研究動態(tài)
語音信號處理作為一個重要的研究領域,已經(jīng)有很長的研究歷史。但是它的快速發(fā)展可以說是從1940年前后Dudley的聲碼器和Potter等人的可見語音開始的;20世紀60年代中期形成的一系列數(shù)字信號處理的理念和技術基礎;到了80年代,由于矢量量化、隱馬爾可夫模型和人工神經(jīng)網(wǎng)絡等相繼被應用于語音信號處理,并經(jīng)過不斷改進與完善,使得語音信號處理技術產(chǎn)生了突破性的進展。一方面,對聲學語音學統(tǒng)計模型的研究逐漸深入,魯棒的語音識別、基于語音段的建模方法及隱馬爾可夫模型與人工神經(jīng)網(wǎng)絡的結合成為研究的熱點。另一方面,為了語音識別實用化的需要,講者自適應、聽覺模型、快速搜索識別算法以及進一步的語言模型的研究等課題倍受關注。
在通信越來越發(fā)達的當今世界,尤其最近幾十年,語音壓縮編碼技術在移動 通信、IP電話通信、保密通信、衛(wèi)星通信以及語音存儲等很多方面得到了廣泛的應用。因此,語音編碼一直是通信和信號處理的研究熱點,并其取得了驚人的進展,目前在PC機上的語音編碼已經(jīng)趨于成熟,而如何在嵌入式系統(tǒng)中實時實現(xiàn)語音壓縮編碼則是近些年來語音信號處理領域的研究熱點之一。
2系統(tǒng)設計
在實際生活中,當聲源遇到物體時會發(fā)生反射,反射的聲波和聲源聲波一起傳輸,聽者會發(fā)現(xiàn)反射聲波部分比聲源聲波慢一些,類似人們面對山體高聲呼喊后可以在過一會兒聽到回聲的現(xiàn)象。聲音遇到較遠物體產(chǎn)生的反射會比遇到較近的反射波晚些到達聲源位置,所以回聲和原聲的延遲隨反射物體的距離大小改變。同時,反射聲音的物體對聲波的反射能力,決定了聽到的回聲的強弱和質(zhì)量。另外,生活中的回聲的成分比較復雜,有反射、漫反射、折射,還有回聲的多次反射、折射效果。
當已知一個數(shù)字音源后,可以利用計算機的處理能力,用數(shù)字的方式通過計算模擬回聲效應。簡單的講,可以在原聲音流中疊加延遲一段時間后的聲流,實現(xiàn)回聲效果。當然通過復雜運算,可以計算各種效應的混響效果。如此產(chǎn)生的回聲,我們稱之為數(shù)字回聲。
本次實驗的程序流程圖如下:
圖2.1 程序流程圖
本次實驗的系統(tǒng)框圖如下:
圖2.2 系統(tǒng)框圖
3硬件設計
3.1 硬件結構
圖3.1是系統(tǒng)的硬件結構框圖, 系統(tǒng)主要包括VC5509和A IC23 兩個模塊。
圖3.1系統(tǒng)硬件結構框圖
利用VC5509 的片上外設I2C(Inter-Integrated Circuit, 內(nèi)部集成電路)模塊配置AIC23 的內(nèi)部寄存器;通過VC5509 的McBSP(Multi channel Buffered Serial Ports, 多通道緩存串口)接收和發(fā)送采樣的音頻數(shù)據(jù)??刂仆ǖ乐辉谂渲肁IC23 的內(nèi)部寄存器時工作, 而當傳輸音頻數(shù)據(jù)時則處于閑置狀態(tài)。
AIC23通過麥克風輸入或者立體聲音頻輸入采集模擬信號, 并把模擬信號轉化為數(shù)字信號, 存儲到DSP的內(nèi)部RAM中,以便DSP處理。
當DSP完成對音頻數(shù)據(jù)的處理以后, AIC23再把數(shù)字信號轉化為模擬信號, 這樣就能夠在立體聲輸出端或者耳機輸出端聽到聲音。
AIC23能夠?qū)崿F(xiàn)與VC5509 DSP的McBSP端口的無縫連接, 使系統(tǒng)設計更加簡單。接口的原理框圖, 如下圖所示。
圖3.2 AIC23與VC5509接口原理圖
系統(tǒng)中A IC23的主時鐘12 MHz直接由外部的晶振提供。MODE接數(shù)字地, 表示利用I2 C控制接口對AIC23傳輸控制數(shù)據(jù)。CS接數(shù)字地, 定義了I2 C總線上AIC23的外設地址, 通過將CS接到高電平或低電平, 可以選擇A IC23作為從設備在I2 C總線上的地址。SCLK和SDIN是AIC23控制端口的移位時鐘和數(shù)據(jù)輸入端,分別與VC5509的I2C模塊端口SCL和SDA相連。
收發(fā)時鐘信號CLKX1和CLKR1由A IC23的串行數(shù)據(jù)輸入時鐘BCLK提供, 并由A IC23的幀同步信號LRCIN、LRCOUT啟動串口數(shù)據(jù)傳輸。DX1和DR1分別與A IC23 的D IN 和DOUT 相連, 從而完成VC5509與AIC23間的數(shù)字信號通信。
3.2 硬件電路設計
3.2.1 總輸入電路
圖3.3 總輸入電路
從左到右各部分電路為:
話筒,開關,語音輸入電路,UA741高增益放大電路,有源二階帶 通濾波器。
3.2.2 總輸出電路
圖3.4 總輸出電路
從左到右各部分電路為:
LM386高頻功率放大器及其外圍器件連接電路,語音輸出電路,開關,揚聲器。
3.2.3 語音輸入電路
圖3.5語音輸入電路
3.2.4 語音輸出電路
圖3.6 語音輸出電路
語音信號通道包括模擬輸入和模擬輸出兩個部分。模擬信號的輸入輸出電路如圖所示。上圖中MICBIAS 為提供的麥克風偏壓,通常是3/4 AVDD,MICIN為麥克風輸入,可以根據(jù)需要調(diào)整輸入增益。下圖中LLINEOUT 為左聲道輸出,RLINEOUT為右聲道輸出。用戶可以根據(jù)電阻阻值調(diào)節(jié)增益的大小,使語音輸入輸出達到最佳效果。從而實現(xiàn)良好的模擬語音信號輸入與模擬信號的輸出。4 實驗結果及分析
4.1 實驗結果
按“F5”鍵運行,注意觀察窗口中的bEcho=0,表示數(shù)字回聲功能沒有激活。這時從耳機中能聽到麥克風中的輸入語音放送。將觀察窗口中bEcho的取值改成非0值。這時可從耳機中聽到帶數(shù)字回聲道語音放送。
分別調(diào)整uDelay和uEffect的取值,使他們保持在0-1023范圍內(nèi),同時聽聽耳機中的輸出有何變化。
當uDelay和uEffect的數(shù)值增大時,數(shù)字回聲的效果就會越加的明顯。
圖4.1 修改前程序圖
圖4.2 修改前程序圖
圖4.3 頻譜分析
圖4.4 左聲道及右聲道波形 4.2 實驗分析
所以,從本實驗可知當已知一個數(shù)字音源后,可以利用計算機的處理能力,用數(shù)字的方式通過計算模擬回聲效應。簡單的講,可以在原聲音流中疊加延遲一段時間后的聲流,實現(xiàn)回聲效果。當然通過復雜運算,可以計算各種效應的混響效果。
聲音放送可以加入數(shù)字回聲,數(shù)字回聲的強弱和與原聲的延遲均可在程序中設定和調(diào)整。5 總結與心得體會
通過本次課程設計,我明白了細節(jié)決定成敗這句話的道理,在實驗中,有很多注意的地方,都被忽視了,導致再花費更多的時間去修改,這嚴重影響了試驗的進度。同時,在本次實驗中我了解了ICETEK – VC5509 – A板上語音codec芯片TLV320AIC23的設計和程序控制原理,并進一步掌握了數(shù)字回聲產(chǎn)生原理、編程及其參數(shù)選擇、控制,以及了解了VC5509DSP擴展存儲器的編程使用方法。
這一學期的理論知識學習加上這次課程設計,使我對DSP有了更加深刻的了解,對數(shù)字信號的處理功能,軟硬件相結合,語音信號的采集與放送等等方面都有了很深的了解,相信本次課程設計,無論是對我以后的學習,還是工作等方面都有一個很大的幫助。因此,本次課程設計讓我受益匪淺。
參考文獻
[1]李利.DSP原理及應用[M].北京:中國水利水電出版社,2004.[2]王安民,陳明欣,朱明.TMS320C54xxDSP實用技術[M].北京:清華大學出版社,2007 [3]彭啟琮,李玉柏.DSP技術[M].成都:電子科技大學出版社,1997 [4]李宏偉,等.基于幀間重疊譜減法的語音增強方法[J].解放軍理工大學學報,2001(1):41~44 [5]TexasInstrumentsIncorporated.TMS320C54x系列DSP的CPU與外設[M].梁曉雯,裴小平,李玉虎,譯.北京:清華大學出版社,2006 [6]趙力.語音信號處理[M].北京:機械工業(yè)出版社,2003比較圖4和圖5,可以看到1200Hz以上的頻譜明顯得到了抑制。
[7]江濤,朱光喜.基于TMS320VC5402的音頻信號采集與系統(tǒng)處理[J].電子技術用,2002,28(7):70~72[8]TexasInstrumentsIncorporated:TMS320VC5402Datasheet,2001
致謝
在本次課程設計的即將完成之際,筆者的心情無法平靜,本文的完成既是筆者孜孜不倦努力的結果,更是指導老師樊洪斌老師親切關懷和悉心指導的結果。在整個課程設計的選題、研究和撰寫過程中,老師都給了我精心的指導、熱忱的鼓勵和支持,他的精心點撥為我開拓了研究視野,修正了寫作思路,對課程設計的完善和質(zhì)量的提高起到了關鍵性的作用。另外,導師嚴謹求實的治學態(tài)度、一絲不茍的工作作風和高尚的人格魅力,都給了學生很大感觸,使學生終生受益。在此,學生謹向老師致以最真摯的感激和最崇高的敬佩之情。
另外,還要感謝這段時間來陪我一起努力同學,感謝我們這個小團隊,感謝每一個在學習和生活中所有給予我關心、支持和幫助的老師和同學們,幾年來我們一起學習、一起玩耍,共同度過了太多的美好時光。我們始終是一個團結、友愛、積極向上的集體。
第四篇:數(shù)字信號處理課程設計..
課程設計報告
課程名稱: 數(shù)字信號處理 課題名稱: 語音信號的處理與濾波
姓 名: 學 號: 院 系: 專業(yè)班級: 指導教師: 完成日期: 2013年7月2日
目錄
第1部分 課程設計報告………………………………………3 一.設計目的……………………………………………3 二.設計內(nèi)容……………………………………………3 三.設計原理……………………………………………3 四.具體實現(xiàn)……………………………………………5 1.錄制一段聲音…………………………………5 2.巴特沃斯濾波器的設計………………………8 3.將聲音信號送入濾波器濾波…………………13 4.語音信號的回放………………………………19 5.男女語音信號的頻譜分析……………………19 6.噪聲的疊加和濾除……………………………22 五. 結果分析……………………………………………27 第2部分 課程設計總結………………………………28 一. 參考文獻……………………………………………28
第1部分 課程設計報告
一.設計目的
綜合運用本課程的理論知識進行頻譜分析以及濾波器設計,通過理論推導得出相應結論,并利用MATLAB作為工具進行實現(xiàn),從而復習鞏固課堂所學的理論知識,提高對所學知識的綜合應用能力,并從實踐上初步實現(xiàn)對數(shù)字信號的處理。
二.設計內(nèi)容
錄制一段個人自己的語音信號,并對錄制的信號進行采樣;畫出采樣后語音信號的時域波形和頻譜圖;給定濾波器的性能指標,采用窗函數(shù)法和雙線性變換法設計濾波器,并畫出濾波器的頻率響應;然后用自己設計的濾波器對采集的信號進行濾波,畫出濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化;回放語音信號;換一個與你性別相異的人錄制同樣一段語音內(nèi)容,分析兩段內(nèi)容相同的語音信號頻譜之間有什么特點;再錄制一段同樣長時間的背景噪聲疊加到你的語音信號中,分析疊加前后信號頻譜的變化,設計一個合適的濾波器,能夠把該噪聲濾除;
三.設計原理
1.在Matlab軟件平臺下,利用函數(shù)wavrecord(),wavwrite(),wavread(),wavplay()對語音信號進行錄制,存儲,讀取,回放。
2.用y=fft(x)對采集的信號做快速傅立葉變換,并用[h1,w]=freqz(h)進行DTFT變換。
3.掌握FIR DF線性相位的概念,即線性相位對h(n)、H(?)及零點的約束,了解四種FIR DF的頻響特點。
4.在Matlab中,F(xiàn)IR濾波器利用函數(shù)fftfilt對信號進行濾波。
5.抽樣定理
連續(xù)信號經(jīng)理想抽樣后時域、頻域發(fā)生的變化(理想抽樣信號與連續(xù)信號頻譜之間的關系)
理想抽樣信號能否代表原始信號、如何不失真地還原信號即由離散信號恢復連續(xù)信號的條件(抽樣定理)
理想采樣過程描述: 時域描述:
?a(t)?xa(t)?T(t)??xa(t)?(t?nT)??xa(nT)?(t?nT)xn???n??????T(t)?頻域描述:利用傅氏變換的性質(zhì),時域相乘頻域卷積,若
n?????(t?nT)??a(t)Xa(j?)?xXa(j?)?xa(t)?T(j?)??T(t)
則有
?(j?)?1X(j?)??(j?)XaaT2?1?2?1??Xa(j?)??Xa(j??jk)??Xa(j??jk?s)Tk???TTk????(j?)與X(j?)的關系:理想抽樣信號的頻譜是連續(xù)信號頻譜的Xaa
周期延拓,重復周期為?s(采樣角頻率)。如果:
?X(j?)?Xa(j?)??a??0???s/2???s/2即連續(xù)信號是帶限的,且信號最高頻率不超過抽樣頻率的二分之一,則可不失真恢復。
奈奎斯特采樣定理:要使實信號采樣后能夠不失真還原,采樣頻率必須大于信號最高頻率的兩倍:?s?2?h 或 fs?2fh
四.具體實現(xiàn)
1.錄制一段聲音
1.1錄制并分析
在MATLAB中用wavrecord、wavread、wavplay、wavwrite對聲音進行錄制、讀取、回放、存儲。
程序如下:
Fs=8000;%抽樣頻率 time=3;%錄音時間 fprintf('按Enter鍵錄音%ds',time);%文字提示 pause;%暫停命令 fprintf('錄音中......');x=wavrecord(time*Fs,Fs,'double');%錄制語音信號 fprintf('錄音結束');%文字提示 fprintf('按Enter鍵回放錄音');pause;%暫停命令
wavplay(x,Fs);%按任意鍵播放語音信號
wavwrite(x,Fs,'C:UsersacerDesktop數(shù)字信號sound.wav');%存儲語音信號
N=length(x);%返回采樣點數(shù) df=fs/N;%采樣間隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 figure(2);subplot(2,1,1);plot(x);%錄制信號的時域波形 title('原始信號的時域波形');%加標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%加網(wǎng)格
y0=fft(x);%快速傅立葉變換 figure(2);subplot(2,1,2);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 title('原始信號的頻譜圖');%加標題
grid;%加網(wǎng)格
圖1.1 原始信號的時域與頻譜圖
1.2濾除無效點
針對實際發(fā)出聲音落后錄制動作半拍的現(xiàn)象,如何拔除對無效點的采樣的問題: 出現(xiàn)這種現(xiàn)象的原因主要是錄音開始時,人的反應慢了半拍,導致出現(xiàn)了一些無效點,而后而出現(xiàn)的無效的點,主要是已經(jīng)沒有聲音的動作,先讀取聲音出來,將原始語音信號時域波形圖畫出來,根據(jù)己得到的信號,可以在第二次讀取聲音的后面設定采樣點,取好有效點,畫出濾除無效點后的語音信號時域波形圖,對比可以看出。這樣就可以解決這個問題。
x=wavread('C:UsersacerDesktop數(shù)字信號sound.wav', 7
[4000,24000]);%從4000點截取到24000結束 plot(x);%畫出截取后的時域圖形 title('截取后的聲音時域圖形');%標題 xlabel('頻率');ylabel('振幅');grid;%畫網(wǎng)格
圖1.2 去除無效點
2.巴特沃斯濾波器的設計
2.1設計巴特沃思低通濾波器
MATLAB程序如下。濾波器圖如圖3.3所示。
%低通濾波
fp=1000;fs=1200;Fs=22050;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(1);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯低通濾波器');xlabel('頻率(HZ)');ylabel('耗損(dB)');gridon;9
圖2.1 巴特沃思低通濾波器
2.2設計巴特沃思高通濾波器
MATLAB程序如下。濾波器圖如圖3.5所示。%高通濾波
fp=4800;fs=5000;Fs=22050;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);10
[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'high','s');[Bz,Az]=bilinear(B,A,Fs1);figure(1);[h,w]=freqz(Bz,Az,512,Fs1*22050);plot(w,abs(h));title('巴特沃斯高通濾波器');xlabel('頻率(HZ)');ylabel('耗損(dB)');grid on;
圖2.2巴特沃思高通濾波器
2.3設計巴特沃思帶通濾波器
MATLAB程序如下。濾波器圖如圖3.7所示。%帶通濾波
fp=[1200,3000];fs=[1000,3200];Fs=8000;rp=1;rs=100;wp=2*pi*fp/Fs;ws=2*pi*fs/Fs;T=1;Fs1=1;wap=2*tan(wp/2);was=2*tan(ws/2);[N,wc]=buttord(wap,was,rp,rs,'s');[B,A]=butter(N,wc,'s');[Bz,Az]=bilinear(B,A,Fs1);figure(4);[h,w]=freqz(Bz,Az,512,Fs1*1000);plot(w,abs(h));title('巴特沃斯帶通濾波器');xlabel('頻率(HZ)');ylabel('耗損(dB)');grid on;12
圖2.3巴特沃思帶通濾波器
3.將聲音信號送入濾波器濾波
x=wavread('C:UsersacerDesktop數(shù)字信號sound.wav');%播放原始信號
wavplay(x,fs);%播放原始信號 N=length(x);%返回采樣點數(shù) df=fs/N;%采樣間隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 figure(4);subplot(4,2,1);plot(x);%錄制信號的時域波形
title('原始信號的時域波形');%加標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%加網(wǎng)格
y0=fft(x);%快速傅立葉變換 subplot(4,2,3);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 title('原始信號的頻譜圖');%加標題 grid;%加網(wǎng)格
3.1低通濾波器濾波 fs=8000;beta=10.056;wc=2*pi*1000/fs;ws=2*pi*1200/fs;width=ws-wc;wn=(ws+wc)/2;n=ceil(12.8*pi /width);h=fir1(n,wn/pi,'band',kaiser(n+1,beta));[h1,w]=freqz(h);
ys=fftfilt(h,x);%信號送入濾波器濾波,ys為輸出 fftwave=fft(ys);%將濾波后的語音信號進行快速傅立葉變換 figure(4);subplot(4,2,2);%在四行兩列的第二個窗口顯示圖形 plot(ys);%信號的時域波形
title('低通濾波后信號的時域波形');%加標題 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 grid;%網(wǎng)格
subplot(4,2,4);%在四行兩列的第四個窗口顯示圖形 plot(f, abs(fftwave(n1)));%繪制模值 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義
title('低通濾波器濾波后信號的頻譜圖');%標題 grid;%加網(wǎng)格
wavplay(ys,8000);%播放濾波后信號
3.2高通濾波器濾波 fs=8000;beta=10.056;ws=2*5000/fs;wc=2*4800/fs;
width=ws-wc;wn=(ws+wc)/2;n=ceil(12.8*pi/width);h=fir1(n,wn/pi, 'high',kaiser(n+2,beta));[h1,w]=freqz(h);ys=fftfilt(h,x);%將信號送入高通濾波器濾波 subplot(4,2,5);%在四行兩列的第五個窗口顯示圖形 plot(ys);%信號的時域波形 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 title('高通濾波后信號的時域波形');%標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%網(wǎng)格
fftwave=fft(ys);%將濾波后的語音信號進行快速傅立葉變換 subplot(4,2,7);%在四行兩列的第七個窗口顯示圖形 plot(f,abs(fftwave(n1)));%繪制模值 axis([0 1 0 50]);xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義
title('高通濾波器濾波后信號的頻譜圖');%標題 grid;%加網(wǎng)格
wavplay(ys,8000);%播放濾波后信號
3.3帶通濾波器 fs=8000;beta=10.056;wc1=2*pi*1000/fs;wc2=2*pi*3200/fs;ws1=2*pi*1200/fs;ws2=2*pi*3000/fs;width=ws1-wc1;wn1=(ws1+wc1)/2;wn2=(ws2+wc2)/2;wn=[wn1 wn2];n=ceil(12.8/width*pi);h=fir1(n,wn/pi,'band',kaiser(n+1,beta));[h1,w]=freqz(h);ys1= fftfilt(h,x);%將信號送入高通濾波器濾波 figure(4);subplot(4,2,6);%在四行兩列的第六個窗口顯示圖形 plot(ys1);%繪制后信號的時域的圖形 title('帶通濾波后信號的時域波形');%加標題 xlabel('頻率w/pi');ylabel('幅值/A');%顯示縱坐標表示的意義 grid;%網(wǎng)格
fftwave=fft(ys1);%對濾波后的信號進行快速傅立葉變換 subplot(4,2,8);%在四行兩列的第八個窗口顯示圖形
plot(f, abs(fftwave(n1)));%繪制模值 axis([0 1 0 50]);xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 title('帶通濾波器濾波后信號的頻譜圖');%加標題 grid;%網(wǎng)格
wavplay(ys1,8000);%播放濾波后信號 圖形如下:
原始信號的時域波形幅值/A0-1012x 10原始信號的頻譜圖34幅值/A1低通濾波后信號的時域波形0.50-0.5012頻率w/pi3400.51頻率w/pi高通濾波后信號的時域波形幅值/A0幅值/A0幅值/Ax 10高通濾波器濾波后信號的頻譜圖5012頻率w/pi34幅值/A0.20-0.2幅值/A2001000x 10低通濾波器濾波后信號的頻譜圖200100000.51頻率w/pi帶通濾波后信號的時域波形0.50-0.501234頻率w/pix 10帶通濾波器濾波后信號的頻譜圖50幅值 00.5頻率w/pi1000.5頻率w/pi1
分析:三個濾波器濾波后的聲音與原來的聲音都發(fā)生了變化。其中低
通的濾波后與原來聲音沒有很大的變化,其它兩個都又明顯的變化
4.語音信號的回放
sound(xlow,Fs,bits);%在Matlab中,函數(shù)sound可以對聲音進行回放,其調(diào)用格式: sound(xhigh, Fs,bits);%sound(x, Fs, bits);sound(xdaitong, Fs,bits);5.男女語音信號的頻譜分析
5.1 錄制一段異性的聲音進行頻譜分析
Fs=8000;%抽樣頻率 time=3;%錄音時間 fprintf('按Enter鍵錄音%ds',time);%文字提示 pause;%暫停命令 fprintf('錄音中......');x=wavrecord(time*Fs,Fs,'double');%錄制語音信號 fprintf('錄音結束');%文字提示 fprintf('按Enter鍵回放錄音');pause;%暫停命令 wavplay(x,Fs);%按任意鍵播放語音信號
wavwrite(x,Fs,'C:UsersacerDesktop數(shù)字信號sound2.wav');%存儲語音信號
5.2 分析男女聲音的頻譜
x=wavread(' C:UsersacerDesktop數(shù)字信號sound2.wav ');%播放原始信號,解決落后半拍
wavplay(x,fs);%播放原始信號 N=length(x);%返回采樣點數(shù) df=fs/N;%采樣間隔 n1=1:N/2;
f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 figure(1);subplot(2,2,1);plot(x);%錄制信號的時域波形
title('原始女生信號的時域波形');%加標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%加網(wǎng)格
y0=fft(x);%快速傅立葉變換 subplot(2,2,2);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始女生信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 grid;%加網(wǎng)格
[y,fs,bits]=wavread(' C:UsersacerDesktop數(shù)字信號sound.wav ');% 對語音信號進行采樣
wavplay(y,fs);%播放原始信號 N=length(y);%返回采樣點數(shù) df=fs/N;%采樣間隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 subplot(2,2,3);plot(y);%錄制信號的時域波形
title('原始男生信號的時域波形');%加標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%加網(wǎng)格
y0=fft(y);%快速傅立葉變換
subplot(2,2,4);%在四行兩列的第三個窗口顯示圖形 plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始男生信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 grid;%加網(wǎng)格
5.3男女聲音的頻譜圖
原始女生信號的時域波形0.50-0.5-1150100原始女生信號的頻譜圖幅值/A幅值 012345000x 10原始男生信號的時域波形0.50.5頻率w/pi原始男生信號的頻譜圖1300200幅值/A0幅值 012x 1034100-0.5000.5頻率w/pi1
圖5.3男女聲音信號波形與頻譜對比
分析:就時域圖看,男生的時域圖中振幅比女生的高,對于頻譜圖女生的高頻成分比較多
6.噪聲的疊加和濾除
6.1錄制一段背景噪聲
Fs=8000;%抽樣頻率 time=3;%錄音時間 fprintf('按Enter鍵錄音%ds',time);%文字提示 pause;%暫停命令 fprintf('錄音中......');x=wavrecord(time*Fs,Fs,'double');%錄制語音信號
fprintf('錄音結束');%文字提示 fprintf('按Enter鍵回放錄音');pause;%暫停命令 wavplay(x,Fs);%按任意鍵播放語音信號 wavwrite(x,Fs,'C:UsersacerDesktop數(shù)字信號噪音.wav');%存儲語音信號
6.2 對噪聲進行頻譜的分析
[x1,fs,bits]=wavread(' C:UsersacerDesktop數(shù)字信號噪音.wav ');%對語音信號進行采樣
wavplay(x1,fs);%播放噪聲信號 N=length(x1);%返回采樣點數(shù) df=fs/N;%采樣間隔
n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 figure(5);subplot(3,2,1);plot(x1);%信號的時域波形 title('噪聲信號的時域波形');grid;ylabel('幅值/A');y0=fft(x1);%快速傅立葉變換
subplot(3,2,2);plot(f,abs(y0(n1)));%噪聲信號的頻譜圖 ylabel('幅值');title('噪聲信號的頻譜圖');
6.3原始信號與噪音的疊加
fs=8000;[x,fs,bits]=wavread(' C:UsersacerDesktop數(shù)字信號sound.wav ');%對錄入信號進行采樣
[x1,fs,bits]=wavread(' C:UsersacerDesktop數(shù)字信號噪音.wav ');%對噪聲信號進行采樣
yy=x+x1;%將兩個聲音疊加
6.4疊加信號的頻譜分析:
wavplay(yy,fs);%播放疊加后信號 N=length(yy);%返回采樣點數(shù) df=fs/N;%采樣間隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 figure(5);subplot(3,2,3);plot(yy,'LineWidth',2);%信號的時域波形
title('疊加信號的時域波形');xlabel('時間/t');ylabel('幅值/A');grid;y0=fft(yy);%快速傅立葉變換 subplot(3,2,4);plot(f,abs(y0(n1)));%疊加信號的頻譜圖 title('疊加信號的頻譜圖');xlabel('頻率w/pi');ylabel('幅值/db');grid;
6.5 設計一個合適的濾波器將噪聲濾除 fs=18000;%采樣頻率 Wp=2*1000/fs;%通帶截至頻率 Ws=2*2000/fs;%阻帶截至頻率 Rp=1;%最大衰減 Rs=100;%最小衰減
[N,Wn]=buttord(Wp,Ws,Rp,Rs);%buttord函數(shù)(n為階數(shù),Wn為截至頻率)
[num,den]=butter(N,Wn);%butter函數(shù)(num為分子系數(shù)den為分母系數(shù))
[h,w]=freqz(num,den);%DTFT變換
ys=filter(num,den,yy);%信號送入濾波器濾波,ys為輸出 fftwave=fft(ys);%將濾波后的語音信號進行快速傅立葉變換 figure(5);subplot(3,2,5);plot(ys);%信號的時域波形
title('低通濾波后信號的時域波形');%加標題 ylabel('幅值/A');%顯示標表示的意義 grid;%網(wǎng)格 subplot(3,2,6);plot(f, abs(fftwave(n1)));%繪制模值 title('低通濾波器濾波后信號的頻譜圖');%標題 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 grid;%加網(wǎng)格
wavplay(ys,8000);%播放濾波后信號 grid;圖形如下:
噪聲信號的時域波形1100噪聲信號的頻譜圖幅值/A0-1幅值0123450000.5疊加信號的頻譜圖1x 10疊加信號的時域波形10-101時間/t2200幅值/db34幅值/A100000.5頻率w/pi1x 10低通濾波后信號的時域波形0.5低通濾波器濾波后信號的頻譜圖200幅值/A0-0.5幅值/A012x 1034100000.5頻率w/pi1
圖6.1噪音的疊加與濾除前后頻譜對比
7.結果分析
1.錄制剛開始時,常會出現(xiàn)實際發(fā)出聲音落后錄制動作半拍,可在[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav')加 窗[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav',[100 10000]),窗的長度可根據(jù)需要定義。
2.語音信號通過低通濾波器后,把高頻濾除,聲音變得比較低沉。當通過高通濾波器后,把低頻濾除,聲音變得比較就尖銳。通過帶通濾波器后,聲音比較適中。
3.通過觀察男生和女生圖像知:時域圖的振幅大小與性別無關,只與說話人音量大小有關,音量越大,振幅越大。頻率圖中,女生高 27
頻成分較多。
4.疊加噪聲后,噪聲與原信號明顯區(qū)分,但通過低通濾波器后,噪聲沒有濾除,信號產(chǎn)生失真。原因可能為噪聲與信號頻率相近無法濾除。
第2部分 課程設計總結
通過本次課程設計,使我們對數(shù)字信號處理相關知識有了更深刻的理解,尤其是對各種濾波器的設計。在設計的過程中遇到了很多問題,剛剛開始時曾天真的認為只要把以前的程序改了參數(shù)就可以用了,可是問題沒有我想象中的那么簡單,單純的搬程序是不能解決問題的。通過查閱資料和請教同學收獲了很多以前不懂的理論知識。再利用所學的操作,發(fā)現(xiàn)所寫的程序還是沒有能夠運行,通過不斷地調(diào)試,運行,最終得出了需要的結果。整個過程中學到了很多新的知識,特別是對Matlab的使用終于有些了解。在以后的學習中還需要深入了解這方面的內(nèi)容。在這次的課程設計中讓我體會最深的是:知識來不得半點的馬虎。也認識到自己的不足,以后要進一步學習。
八.參考文獻
[1]數(shù)字信號處理教程(第三版)程佩青 清華大學出版社 [2]MATLAB信號處理 劉波 文忠 電子工業(yè)出版社 [3]MATLAB7.1及其在信號處理中的應用 王宏 清華大學出版社
[4]MATLAB基礎與編程入門 張威 西安電子科技大學出版社
[5] 數(shù)字信號處理及其MATLAB實驗 趙紅怡 張常 化學工業(yè)出版社
[6]MATLAB信號處理詳解 陳亞勇等 人民郵電出版社 [7] 數(shù)字信號處理
錢同惠 機械工業(yè)出版社 29
第五篇:語音信號處理課程設計指導剖析
數(shù)字信號處理課程設計報告
學院:電子信息學院
班級:通信131
姓名:*** 2016年 月 日
語音信號處理
目錄
一、設計目的.................................2
二、設計要求及任務...........................2 2.1 語音信號的采集........................2 2.2 語音信號的頻譜分析;..................2
三、課程設計平臺.............................3
四、設計原理與計算方法.......................3 4.1卷積運算..............................3 4.2 采樣定理..............................3
五、設計內(nèi)容.................................4 5.1利用帶阻濾波器的進行濾波的具體步驟....4 5.1.1語音信號的錄入與提取..............4 5.1.2加入噪聲信號......................6 5.1.3 語音信號和噪聲信號相加...........8 5.1.4濾波器設計........................9 5.1.5對信號進行濾波...................11 5.2利用低通濾波器進行濾波...............12 六:總結....................................14
語音信號處理
一、設計目的
1、學會MATLAB的使用,掌握MATLAB程序設計方法;
2、掌握在Windows環(huán)境下語言信號采集的方法;
3、掌握數(shù)字信號處理的基本概念、基本理論和基本方法;
4、掌握MATLAB設計IIR數(shù)字濾波器的方法;
5、學會用MATLAB對信號進行分析和處理;
二、設計要求及任務
2.1 語音信號的采集
本設計利用計算機Windows下的錄音機錄入一句語音信號,然后在Matlab軟件平臺下,利用函數(shù)waveread對語音信號進行采樣,記住采樣頻率和采樣點數(shù)。
2.2 語音信號的頻譜分析;
在Matlab中,可以利用函數(shù)FFT對信號進行快速傅里葉變換,得到信號的頻譜特性,然后加入一干擾信號,要求畫出語音信號干擾前后的時域波形,并對其頻譜進行分析。
1、設計數(shù)字濾波器,給出性能指標(參考指標);
(1)低通濾波器的性能指標:fp=1000Hz,fs=1200Hz,As=100dB,Ap=1dB(2)高通濾波器的性能指標:fs=4800Hz,fp=5000Hz,As=100dB,Ap=1dB(3)帶通濾波器的性能指標:fp1=1200Hz,fp2=3000Hz,fs1=1000Hz, fps2=3200Hz,As=100dB,Ap=1dB;
采用雙線性變換法設計上面一種類型的數(shù)字濾波器,要求使用切比雪夫II型濾波器。
2、用濾波器對信號進行濾波
語音信號處理
畫出濾波后信號的時域波形及頻譜,并對濾波前后的信號進行對比,分析信號的變化。
3、回放語音信號,分析濾波前后的語音變化。
在熟悉數(shù)字信號處理課程理論的基礎上,通過MATLAB仿真實現(xiàn)語音信號的采集與處理,進一步加深對數(shù)字信號處理理論和技術的掌握。
三、課程設計平臺
計算機、MATLAB6.5以上
四、設計原理與計算方法
4.1卷積運算
卷積和乘積運算在頻域和時域是一一對應的,兩個信號在時域的卷積可以轉化為求兩者在頻域的乘積后再反變換,同理在頻域的卷積等時域的乘積。而信號的頻域求解有快速傅里葉FFT算法。
卷積與傅里葉變換有著密切的關系。利用這一點性質(zhì),即兩函數(shù)的傅里葉變換的乘積等于它們卷積后的傅里葉變換,能使傅里葉分析中許多問題的處理得到簡化。
由卷積得到的函數(shù)f*g 一般要比f 和g 都光滑。特別當g 為具有緊支集的光滑函數(shù),f 為局部可積時,它們的卷積f * g 也是光滑函數(shù)。利用這一性質(zhì),對于任意的可積函數(shù)f,都可以簡單地構造出一列逼近于f 的光滑函數(shù)列,這種方法稱為函數(shù)的光滑化或正則化。
卷積的概念還可以推廣到數(shù)列、測度以及廣義函數(shù)上去。4.2 采樣定理
采樣定理,又稱香農(nóng)采樣定理,奈奎斯特采樣定理,是信息論,特別是通訊與信號處理學科中的一個重要基本結論。E.T.Whittaker(1915年發(fā)表的統(tǒng)計理論), 3
語音信號處理
克勞德·香農(nóng)與Harry Nyquist都對它作出了重要貢獻。另外,V.A.Kotelnikov也對這個定理做了重要貢獻。
采樣是將一個信號(即時間或空間上的連續(xù)函數(shù))轉換成一個數(shù)值序列(即時間或空間上的離散函數(shù))。采樣定理指出,如果信號是帶限的,并且采樣頻率高于信號帶寬的兩倍,那么,原來的連續(xù)信號可以從采樣樣本中完全重建出來。帶限信號變換的快慢受到它的最高頻率分量的限制,也就是說它的離散時刻采樣表現(xiàn)信號細節(jié)的能力是有限的。采樣定理是指,如果信號帶寬不到采樣頻率的一半(即奈奎斯特頻率),那么此時這些離散的采樣點能夠完全表示原信號。高于或處于奈奎斯特頻率的頻率分量會導致混疊現(xiàn)象。大多數(shù)應用都要求避免混疊,混疊問題的嚴重程度與這些混疊頻率分量的相對強度有關。
五、設計內(nèi)容
5.1利用帶阻濾波器的進行濾波的具體步驟
5.1.1語音信號的錄入與提取
用電腦所帶的錄音工具錄制一段錄音,并將聲音保存,因為錄入的聲音不是wav格式,因此用格式工廠軟件將其進行轉換位wav格式。
利用Matlab對語音信號進行FFT分析,并畫出源語音信號的時域波形和頻域波形。實驗代碼:
[x,fs]=wavread('c1.wav');%利用wavread函數(shù)對語音信號進行提取 figure(1)subplot(2,1,1);N=length(x);T=1/fs;
t=0:T:(N-1)*T;%時間間隔
plot(t,x)%以時間為橫軸,x為縱軸畫圖 title('原語音信號時域分析')%圖形命名 xlabel('t(s)')ylabel('x')
以上為時域分析,接下來為頻域分析
語音信號處理
f=(0:N-1)*fs/N;X=fft(x);subplot(2,1,2)plot(f,abs(X))axis([0 25000 0 60]);title('原語音信號頻域分析')xlabel('f(Hz)')ylabel('X')
語音信號圖形:
語音信號處理
5.1.2加入噪聲信號
在此選擇余弦函數(shù)作為噪聲信號,因為正弦和余弦函數(shù)的頻域為兩條豎直的線,便于濾波
實驗代碼:
y=0.003*sin(50000*t);
y1=[y' y'];%對噪音信號進行轉換,便于信號相加(見下圖有說明)Y=fft(y);figure(2)subplot(2,1,1)plot(t,y)
title('干擾信號時域波形')xlabel('t(s)')
ylabel('y=0.003*sin(50000*t)')Y=fft(y);subplot(2,1,2)plot(f,abs(Y))
axis([0 25000 0 60]);%取在語音信號范圍內(nèi)的噪聲信號 title('干擾信號頻域波形')xlabel('f(Hz)')ylabel('Y')
語音信號處理
通過圖中劃線的部分可以看出,通過y1=[y' y']此句可以將x和y這兩個變量類型統(tǒng)一,以便噪聲與語音信號的相加
語音信號處理
噪聲信號圖形:
5.1.3 語音信號和噪聲信號相加
實驗代碼:
x1=wavread('c1.wav');x2=x1+y1;figure(3)subplot(2,1,1)plot(t,x2)
title('加入噪聲信號時域波形')xlabel('t(s)')ylabel('x')X2=fft(x2);subplot(2,1,2)plot(f,abs(X2))
axis([0 25000 0 60]);title('加入噪聲信號頻域波形')
語音信號處理
xlabel('f(Hz)')ylabel('Y')
兩信號相加圖形:
5.1.4濾波器設計
fp1=0.5*10^4;fp2=4*10^4;fs1=0.6*10^4;fs2=3.7*10^4;Rp=1;As=100;Fs=80000;
wp11=2*pi*fp1/Fs;wp22=2*pi*fp2/Fs;ws11=2*pi*fs1/Fs;
語音信號處理
ws22=2*pi*fs2/Fs;
OmegaP11=2*Fs*tan(wp11/2);OmegaP22=2*Fs*tan(wp22/2);OmegaS11=2*Fs*tan(ws11/2);OmegaS22=2*Fs*tan(ws22/2);OmegaP=[OmegaP11,OmegaP22];OmegaS=[OmegaS11,OmegaS22];%預畸變化
[N,OmegaC]=cheb2ord(OmegaP,OmegaS,Rp,As,'s');[b,a]=cheby2(N,As,OmegaS,'stop','s');[bz,az]=bilinear(b,a,Fs);%AD轉換 [H,w]=freqz(bz,az);db=20*log10(abs(H));figure(4)plot(w/pi,db)title('帶阻濾波器')xlabel('w/pi')ylabel('Db')
濾波器圖形:
語音信號處理
5.1.5對信號進行濾波
實驗代碼:
H=filter(bz,az,x2);figure(5)subplot(211)plot(t,H)
title('濾波后時域')xlabel('t(s)')ylabel('x')subplot(212)H1=fft(H);plot(f,abs(H1));axis([0 25000 0 60]);title('濾波后頻域')xlabel('f(Hz)')
語音信號處理
ylabel('Y')
濾波后圖形:
對比原圖源信號已經(jīng)被濾出來了 5.2利用低通濾波器進行濾波
前三步和上面帶阻濾波器一樣便不再重復敘述,從低通濾波器的設計開始 低通濾波器實驗代碼: fp1=0.25*10^4;fs1=0.5*10^4;Rp=1;As=100;Fs=30000;
wp11=2*pi*fp1/Fs;ws11=2*pi*fs1/Fs;
OmegaP=2*Fs*tan(wp11/2);OmegaS=2*Fs*tan(ws11/2);%頻率預畸
語音信號處理
[N,OmegaC]=cheb2ord(OmegaP,OmegaS,Rp,As,'s');%為了得到N C [z0,p0,k0]=Cheb2ap(N,As);%歸一化原型低通濾波器零極點 a0=real(poly(p0));b0=k0*real(poly(z0));
[b,a]=lp2lp(b0,a0,OmegaC);%將歸一化原型低通轉換成低通濾波器
[bz,az]=bilinear(b,a,Fs);%雙線性變換AF到DF [H,w]=freqz(bz,az);db=20*log10(abs(H));figure(4)plot(w/pi,db)title('低通濾波器')xlabel('w/pi')ylabel('Db')
此處設計低通濾波器時與上面方法不同,此處先求出了歸一化原型低通濾波器,在利用歸一化原型低通濾波器轉換成低通濾波器 低通濾波器圖形:
語音信號處理
濾波后圖形:
從圖中可以看出,利用低通濾波器也還原出了源語音信號,并且比帶阻的效果稍好一點
六、總結
這次課程設計雖然遇到了很多問題,很多困難,但是也學到了很多東西。不僅學到了書本上的東西,而且學到了很多課本上沒有的東西,很多程序里的東西,特別是程序語法,總是有錯誤,但是總是不知道錯在哪里,在細心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。還有各種各樣問題,通過查網(wǎng)絡和請教同學來弄明白,這個過程是痛苦的,有時候有些問題不能馬上解決,感到很頭痛,真想放棄這個問題,但是堅持下來,并且解決這些問題的時候,真的有種苦盡甘來的感覺。
應用MATLAB進行語音信號的處理是與我們所學課程及專業(yè)緊密相連的,有著很強的實踐性。做這個課程設計的時候,并不是非常的順利,我也有遇到很多困難。剛開始,我用自己的mp3錄制的一個音頻文件做語音信號處理,程序始終現(xiàn)實如下錯誤提示:
語音信號處理
??? Error using ==> wavread Error using ==> wavread Data compression format(IMA ADPCM)is not supported.我在查閱了很多資料,在網(wǎng)上也查閱相關信息,最后發(fā)現(xiàn)只有WAV格式的音頻信號才能被wavread函數(shù)識別,這只是其中的一個小困難,當然后來也出現(xiàn)了許多錯誤,不過在我們的精心調(diào)試下,代碼終于運行成功 通過這次設計,進一步加深了對數(shù)子信號處理的了解,讓我對它有了更加濃厚的興趣。通過這次課設使我懂得,平時的理論知識只有通過自己動手做一個課題,從做這個課題的過程中發(fā)現(xiàn)問題,解決問題,這個學習的過程,會比我們平時在課堂上聽到的知識更加的生動立體,更能讓人記憶深刻。
總的來說,通過這次的課程設計我對語音信號有了全面的認識,對數(shù)字信號處理又有了深刻的理解,讓我們感受到只有在充分理解課本知識的前提下,才更更好的應用這個工具。同時我相信,matlab會對我以后的學習中起到更大的幫助
參考文獻
[1] 高西全、丁玉美編著,數(shù)字信號處理。西安:西安電子科技大學出版社,2008.[2]丁玉美、高西全編著,數(shù)字信號處理學習指導。西安:西安電子科技大學出版社,2001.[3]鄭君里等編,信號與系統(tǒng)。北京:高等教育出版社,2000.[4]劉樹棠譯,數(shù)字信號處理——使用MATLAB。西安:西安交通大學出版社,2002.[5]導向科技編著,MATLAB程序設計與實例應用。北京:中國鐵道出版社,2001.[6]羅軍輝等編著,MATLAB7.0在數(shù)字信號處理中的應用。北京:機械工程出版社,2005.[7]陳懷琛等編著,MATLAB及在電子信息課中的應用。北京:電子工業(yè)出版社,2002.[8]胡廣書編組,數(shù)字信號處理——理論、算法與實現(xiàn)。北京:清華大學出版社,2002.[9]梁虹等編,信號與線性系統(tǒng)分析——機遇MATLAB的方法與實現(xiàn)。北京:高等教育出版社,2006.語音信號處理
[10]劉衛(wèi)國主編,MATLAB程序設計與應用(第二版)。北京:高等教育出版社,2006.