第一篇:數字信號處理實習感想
數字圖像處理個人體會
這次實習讓我學會了如何用MATLAB語句來實現一些功能,雖然用起來還不是很熟練,但收獲不少。最重要的一點是讓我對圖像處理的原理有了更深一層的理解。
此次實習的主要任務是用MATLAB創建一個軟件平臺,在該平臺上設定好數字圖像處理的一些相關功能。這些功能包括數字圖像處理中所學到的各種處理圖像的方法,我們將它們劃分為四個模塊:1)圖像增強與恢復;2)彩色圖像處理;3)形態學圖像處理;4)圖像提取與分割。這些基本的圖像處理方法都可以用我們學過的MATLAB語句來實現,只需要設計好版面,并處理好軟件的細節功能就可以了。之后我們就分配任務,每個人做兩個模塊,我負責的是圖形增強與恢復和圖像提取與分割兩個部分。剛開始的時候由于我對MATLAB語言的不熟練,所以還不能很容易地就把每個函數建立起來,不過經過了一段實際操作后,只要明白了圖像處理的方法做起來都很順手了!
我們完成了數字圖像處理軟件的功能后,并沒有滿足,還拓展了一些功能,比如說圖像的打開和保存,對于一些有影響到處理效果的參數還設置了輸入框。此外,有些軟件總是會存在很多的漏洞,像是圖像處理完后下一次打開原圖像部分還會出現上一次處理的圖像之類的種種問題。在老師的指導和幫助下,我們也都將之逐一地完善了。
在實習過程中,我們并沒有很嚴格的計劃工作時間,但整體效率還是很高的,相對于別的組來說,我們完成得算比較快的。當然,這主要歸功于我們組的另外一位很會查資料,所以就算再棘手的問題也總是能很快就被解決。而我比較擅長的就是版面設計,做一二界面需要的時間很短,我們在做這個軟件的過程中沒有因為分工爭吵,一切都進行得很順利!
實習初期我們遇到了很多困難,便會有種不知所措的感覺,不過在接下去的實習過程中,困難總是會被一一克服,原本頭痛的問題最后都會給我們新的收獲。做完這個數字圖像處理的實習,不僅僅讓我對本學期學過的圖像處理方法的原理了解得更透徹了,而且對MATLAB的操作也變得更加熟練。除此之外,我們還在實習的最后學會了怎樣在MATLAB中打包文件,這個方法弄明白了就很簡單了,不明白的時候就覺得很復雜。就跟我們每次做實習的時候是一個道理,每次還沒開始做的時候,總是會感到很有壓力,對于自己不了解的東西總是會存在恐懼,但是經過一段時間的思考和認識后,就會突然頓悟到其實它并沒有想象中的困難。或許這就是學習的精神吧!
最后,我們要感謝院里給我們提供了這次實習的機會,感謝黃忠朝老師和玉罡老師指導我們完成了這次實習。希望以后每一次實習都可以學到更多更有用的知識。
第二篇:數字信號處理課程設計..
課程設計報告
課程名稱: 數字信號處理 課題名稱: 語音信號的處理與濾波
姓 名: 學 號: 院 系: 專業班級: 指導教師: 完成日期: 2013年7月2日
目錄
第1部分 課程設計報告………………………………………3 一.設計目的……………………………………………3 二.設計內容……………………………………………3 三.設計原理……………………………………………3 四.具體實現……………………………………………5 1.錄制一段聲音…………………………………5 2.巴特沃斯濾波器的設計………………………8 3.將聲音信號送入濾波器濾波…………………13 4.語音信號的回放………………………………19 5.男女語音信號的頻譜分析……………………19 6.噪聲的疊加和濾除……………………………22 五. 結果分析……………………………………………27 第2部分 課程設計總結………………………………28 一. 參考文獻……………………………………………28
第1部分 課程設計報告
一.設計目的
綜合運用本課程的理論知識進行頻譜分析以及濾波器設計,通過理論推導得出相應結論,并利用MATLAB作為工具進行實現,從而復習鞏固課堂所學的理論知識,提高對所學知識的綜合應用能力,并從實踐上初步實現對數字信號的處理。
二.設計內容
錄制一段個人自己的語音信號,并對錄制的信號進行采樣;畫出采樣后語音信號的時域波形和頻譜圖;給定濾波器的性能指標,采用窗函數法和雙線性變換法設計濾波器,并畫出濾波器的頻率響應;然后用自己設計的濾波器對采集的信號進行濾波,畫出濾波后信號的時域波形和頻譜,并對濾波前后的信號進行對比,分析信號的變化;回放語音信號;換一個與你性別相異的人錄制同樣一段語音內容,分析兩段內容相同的語音信號頻譜之間有什么特點;再錄制一段同樣長時間的背景噪聲疊加到你的語音信號中,分析疊加前后信號頻譜的變化,設計一個合適的濾波器,能夠把該噪聲濾除;
三.設計原理
1.在Matlab軟件平臺下,利用函數wavrecord(),wavwrite(),wavread(),wavplay()對語音信號進行錄制,存儲,讀取,回放。
2.用y=fft(x)對采集的信號做快速傅立葉變換,并用[h1,w]=freqz(h)進行DTFT變換。
3.掌握FIR DF線性相位的概念,即線性相位對h(n)、H(?)及零點的約束,了解四種FIR DF的頻響特點。
4.在Matlab中,FIR濾波器利用函數fftfilt對信號進行濾波。
5.抽樣定理
連續信號經理想抽樣后時域、頻域發生的變化(理想抽樣信號與連續信號頻譜之間的關系)
理想抽樣信號能否代表原始信號、如何不失真地還原信號即由離散信號恢復連續信號的條件(抽樣定理)
理想采樣過程描述: 時域描述:
?a(t)?xa(t)?T(t)??xa(t)?(t?nT)??xa(nT)?(t?nT)xn???n??????T(t)?頻域描述:利用傅氏變換的性質,時域相乘頻域卷積,若
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?)的關系:理想抽樣信號的頻譜是連續信號頻譜的Xaa
周期延拓,重復周期為?s(采樣角頻率)。如果:
?X(j?)?Xa(j?)??a??0???s/2???s/2即連續信號是帶限的,且信號最高頻率不超過抽樣頻率的二分之一,則可不失真恢復。
奈奎斯特采樣定理:要使實信號采樣后能夠不失真還原,采樣頻率必須大于信號最高頻率的兩倍:?s?2?h 或 fs?2fh
四.具體實現
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數字信號sound.wav');%存儲語音信號
N=length(x);%返回采樣點數 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;%加網格
y0=fft(x);%快速傅立葉變換 figure(2);subplot(2,1,2);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 title('原始信號的頻譜圖');%加標題
grid;%加網格
圖1.1 原始信號的時域與頻譜圖
1.2濾除無效點
針對實際發出聲音落后錄制動作半拍的現象,如何拔除對無效點的采樣的問題: 出現這種現象的原因主要是錄音開始時,人的反應慢了半拍,導致出現了一些無效點,而后而出現的無效的點,主要是已經沒有聲音的動作,先讀取聲音出來,將原始語音信號時域波形圖畫出來,根據己得到的信號,可以在第二次讀取聲音的后面設定采樣點,取好有效點,畫出濾除無效點后的語音信號時域波形圖,對比可以看出。這樣就可以解決這個問題。
x=wavread('C:UsersacerDesktop數字信號sound.wav', 7
[4000,24000]);%從4000點截取到24000結束 plot(x);%畫出截取后的時域圖形 title('截取后的聲音時域圖形');%標題 xlabel('頻率');ylabel('振幅');grid;%畫網格
圖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數字信號sound.wav');%播放原始信號
wavplay(x,fs);%播放原始信號 N=length(x);%返回采樣點數 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;%加網格
y0=fft(x);%快速傅立葉變換 subplot(4,2,3);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 title('原始信號的頻譜圖');%加標題 grid;%加網格
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;%網格
subplot(4,2,4);%在四行兩列的第四個窗口顯示圖形 plot(f, abs(fftwave(n1)));%繪制模值 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義
title('低通濾波器濾波后信號的頻譜圖');%標題 grid;%加網格
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;%網格
fftwave=fft(ys);%將濾波后的語音信號進行快速傅立葉變換 subplot(4,2,7);%在四行兩列的第七個窗口顯示圖形 plot(f,abs(fftwave(n1)));%繪制模值 axis([0 1 0 50]);xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義
title('高通濾波器濾波后信號的頻譜圖');%標題 grid;%加網格
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;%網格
fftwave=fft(ys1);%對濾波后的信號進行快速傅立葉變換 subplot(4,2,8);%在四行兩列的第八個窗口顯示圖形
plot(f, abs(fftwave(n1)));%繪制模值 axis([0 1 0 50]);xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 title('帶通濾波器濾波后信號的頻譜圖');%加標題 grid;%網格
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
分析:三個濾波器濾波后的聲音與原來的聲音都發生了變化。其中低
通的濾波后與原來聲音沒有很大的變化,其它兩個都又明顯的變化
4.語音信號的回放
sound(xlow,Fs,bits);%在Matlab中,函數sound可以對聲音進行回放,其調用格式: 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數字信號sound2.wav');%存儲語音信號
5.2 分析男女聲音的頻譜
x=wavread(' C:UsersacerDesktop數字信號sound2.wav ');%播放原始信號,解決落后半拍
wavplay(x,fs);%播放原始信號 N=length(x);%返回采樣點數 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;%加網格
y0=fft(x);%快速傅立葉變換 subplot(2,2,2);plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始女生信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 grid;%加網格
[y,fs,bits]=wavread(' C:UsersacerDesktop數字信號sound.wav ');% 對語音信號進行采樣
wavplay(y,fs);%播放原始信號 N=length(y);%返回采樣點數 df=fs/N;%采樣間隔 n1=1:N/2;f=[(n1-1)*(2*pi/N)]/pi;%頻帶寬度 subplot(2,2,3);plot(y);%錄制信號的時域波形
title('原始男生信號的時域波形');%加標題 ylabel('幅值/A');%顯示縱坐標的表示意義 grid;%加網格
y0=fft(y);%快速傅立葉變換
subplot(2,2,4);%在四行兩列的第三個窗口顯示圖形 plot(f,abs(y0(n1)));%原始信號的頻譜圖 title('原始男生信號的頻譜圖');%加標題 xlabel('頻率w/pi');%顯示橫坐標表示的意義 ylabel('幅值 ');%顯示縱坐標表示的意義 grid;%加網格
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數字信號噪音.wav');%存儲語音信號
6.2 對噪聲進行頻譜的分析
[x1,fs,bits]=wavread(' C:UsersacerDesktop數字信號噪音.wav ');%對語音信號進行采樣
wavplay(x1,fs);%播放噪聲信號 N=length(x1);%返回采樣點數 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數字信號sound.wav ');%對錄入信號進行采樣
[x1,fs,bits]=wavread(' C:UsersacerDesktop數字信號噪音.wav ');%對噪聲信號進行采樣
yy=x+x1;%將兩個聲音疊加
6.4疊加信號的頻譜分析:
wavplay(yy,fs);%播放疊加后信號 N=length(yy);%返回采樣點數 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函數(n為階數,Wn為截至頻率)
[num,den]=butter(N,Wn);%butter函數(num為分子系數den為分母系數)
[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;%網格 subplot(3,2,6);plot(f, abs(fftwave(n1)));%繪制模值 title('低通濾波器濾波后信號的頻譜圖');%標題 xlabel('頻率w/pi');ylabel('幅值/A');%顯示標表示的意義 grid;%加網格
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.錄制剛開始時,常會出現實際發出聲音落后錄制動作半拍,可在[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav')加 窗[x,fs,bits]=wavread('d:matlavworkwomamaaiwo.wav',[100 10000]),窗的長度可根據需要定義。
2.語音信號通過低通濾波器后,把高頻濾除,聲音變得比較低沉。當通過高通濾波器后,把低頻濾除,聲音變得比較就尖銳。通過帶通濾波器后,聲音比較適中。
3.通過觀察男生和女生圖像知:時域圖的振幅大小與性別無關,只與說話人音量大小有關,音量越大,振幅越大。頻率圖中,女生高 27
頻成分較多。
4.疊加噪聲后,噪聲與原信號明顯區分,但通過低通濾波器后,噪聲沒有濾除,信號產生失真。原因可能為噪聲與信號頻率相近無法濾除。
第2部分 課程設計總結
通過本次課程設計,使我們對數字信號處理相關知識有了更深刻的理解,尤其是對各種濾波器的設計。在設計的過程中遇到了很多問題,剛剛開始時曾天真的認為只要把以前的程序改了參數就可以用了,可是問題沒有我想象中的那么簡單,單純的搬程序是不能解決問題的。通過查閱資料和請教同學收獲了很多以前不懂的理論知識。再利用所學的操作,發現所寫的程序還是沒有能夠運行,通過不斷地調試,運行,最終得出了需要的結果。整個過程中學到了很多新的知識,特別是對Matlab的使用終于有些了解。在以后的學習中還需要深入了解這方面的內容。在這次的課程設計中讓我體會最深的是:知識來不得半點的馬虎。也認識到自己的不足,以后要進一步學習。
八.參考文獻
[1]數字信號處理教程(第三版)程佩青 清華大學出版社 [2]MATLAB信號處理 劉波 文忠 電子工業出版社 [3]MATLAB7.1及其在信號處理中的應用 王宏 清華大學出版社
[4]MATLAB基礎與編程入門 張威 西安電子科技大學出版社
[5] 數字信號處理及其MATLAB實驗 趙紅怡 張常 化學工業出版社
[6]MATLAB信號處理詳解 陳亞勇等 人民郵電出版社 [7] 數字信號處理
錢同惠 機械工業出版社 29
第三篇:數字信號處理實驗報告
JIANGSU
UNIVERSITY OF TECHNOLOGY
數字信號處理實驗報告
學院名稱: 電氣信息工程學院
專 業:
班 級: 姓 名: 學 號: 指導老師: 張維璽(教授)
2013年12月20日
實驗一 離散時間信號的產生
一、實驗目的
數字信號處理系統中的信號都是以離散時間形態存在的,所以對離散時間信號的研究是數字信號的基本所在。而要研究離散時間信號,首先需要產生出各種離散時間信號。使用MATLAB軟件可以很方便地產生各種常見的離散時間信號,而且它還具有強大繪圖功能,便于用戶直觀地處理輸出結果。
通過本實驗,學生將學習如何用MATLAB產生一些常見的離散時間信號,實現信號的卷積運算,并通過MATLAB中的繪圖工具對產生的信號進行觀察,加深對常用離散信號和信號卷積和運算的理解。
二、實驗原理
離散時間信號是指在離散時刻才有定義的信號,簡稱離散信號,或者序列。離散序列通常用x(n)來表示,自變量必須是整數。常見的離散信號如下:(1)單位沖激序列δ(n)
如果δ(n)在時間軸上延遲了k個單位,得到δ(n-k),即長度為N的單位沖激序列δ(n)可以通過下面的MATLAB命令獲得。
n=-(N-1):N-1 x=[zeros(1,N-1)1 zeros(1,N-1)]; stem(n,x)延遲K個采樣點的長度為N的單位沖激序列δ(n-k)(k n=0:N-1 y=[zeros(1,M)1 zeros(1,N-M-1)]; stem(n,y) (2)單位階躍序列u(n) 如果u(n)在時間軸上延遲了k個單位,得到u(n-k),即長度為N的單位階躍序列u(n)可以通過下面的MATLAB命令獲得。 n=-(N-1):N-1 x=[zeros(1,N-1)ones(1,N)]; stem(n,x)延遲的單位階躍序列可以使用類似于單位沖激序列的方法獲得。(3)矩形序列 矩形序列有一個重要的參數,就是序列的寬度N。矩形序列與u(n)之間的關系為矩形序列等= u(n)— u(n-N)。 因此,用MATLAB表示矩形序列可利用上面的單位階躍序列組合而成。(4)正弦序列x(n) 這里,正弦序列的參數都是實數。與連續的正弦信號不同,正弦序列的自變量n必須為整數。可以證明,只有當2π/w為有理數時,正弦序列具有周期性。 長度為N的正弦序列x(n)可以通過下面的MATLAB命令獲得。n=0:N-1 x=A*cos(2*pi*f*n/Fs+phase)(5)單邊實指數序列x(n) 長度為N的實指數序列x(n)可以通過下面的MATLAB命令實現。n=0:N-1 x=a.^n stem(n,x)單邊指數序列n的取值范圍為n>=0。當|a|>1時,單邊指數序列發散;當|a|<1時,單邊指數序列收斂。當a>0時,該序列均取正值;當a<0時,序列在正負擺動。 (6)負指數序列x(n) 當a=0時,得到虛指數序列x(n)。 與連續負指數信號一樣,我們將負指數序列實部和虛部的波形分開討論,得到如下結論: 1)當a>0時,負指數序列x(n)的實部和虛部分別是按指數規律增長的正弦振蕩序列; 2)當a<0時,負指數序列x(n)的實部和虛部分別是按指數規律衰減的正弦振蕩序列; 3)當a=0時,負指數序列x(n)即為虛指數序列,其實部和虛部分別是等幅的正弦振蕩序列; 長度為N的實指數序列x(n)可以通過下面的MATLAB命令實現。n=0:N-1 x=exp((a.+j*w)*n)stem(n,real(x))或 stem(n,imag(x)) 三、實驗內容及分析 ?1n?01、編制程序產生單位沖激序列??n???“?并繪出其圖及??n?”學號后兩位0n?0?形。程序:(1)N=4; n=-(N-1):N-1; x=[zeros(1,N-1)1 zeros(1,N-1)];stem(n,x); title('單位沖激序列'); grid on; (2)N=6; M=1;%學號01 n=-(N-1):N-1; y=[zeros(1,N-M+1)1 zeros(1,N-M-1)];stem(n,y); title('單位沖激序列');grid on; 分析:在上圖的基礎上向右平移了1個單位。 ?1n?02、編制程序產生單位階躍序列u?n???、u?n?“學號后兩位”?及 0n?0?u?n??u?n?“學號后兩位”?,并繪出其圖形。程序: 4 (1)N=5; n=-(N-1):N-1; x=[zeros(1,N-1)ones(1,N)];stem(n,x); title('單位階躍序列');grid on; (2)N=6; M=1;%學號01 n=-(N-1):N-1; x=[zeros(1,N-M+1)ones(1,N-M)];stem(n,x); title('單位階躍序列');grid on; 分析:在上圖的基礎上平移了1個單位.(3)N=6; M=1;%學號01 n=-(N-1):N-1; x=[zeros(1,N-1)ones(1,N)];y=[zeros(1,N-M+1)ones(1,N-M)];z=x-y;stem(n,z); title('單位階躍序列');grid on; 2?? 3、編制程序產生正弦序列x?n??cos?2?n?、x?n??cos??n?及 ?學號后兩位?x?n??sin?2n?并繪出其圖形。 程序:(1)N=5; A=1; w=2*pi;phi=0;n=0:0.05:N-1;x=A*cos(w*n+phi);stem(n,x);title('余弦信號');grid on; 分析:該序列具有周期性,且輸出為余弦信號.(2)N=5; A=1; w=2*pi/1;%學號01 phi=0;n=0:0.05:N-1;x=A*cos(w*n+phi);stem(n,x);title('余弦信號');grid on; ; 分析:該序列具有周期性,且輸出為余弦信號.(3)N=5; A=1; w=2*pi;phi=0; n=0:0.05:N-1;x=A*sin(w*n+phi);stem(n,x);title('正弦信號');grid on; 分析:該序列具有周期性,且輸出為正弦信號.4、編制程序產生復正弦序列x?n??e(2?j學號后兩位)n,并繪出其圖形。N=3; n=0:0.2:N-1; w=1;%學號01 x=exp((2+j*w)*n);subplot(2,1,1) stem(n,real(x)),title('實部');grid on;subplot(2,1,2) stem(n,imag(x)),title('虛部');grid on; 5、編制程序產生指數序列x?n??an,并繪出其圖形。其中a=學號后兩位、a=1/“學號后兩位”。 (1)N=10; n=0:N-1; a=1;%學號01 x=a.^n;stem(n,x);title('指數序列');grid on; (2)N=10; n=0:N-1; a=1;%學號01 x=a.^(-n);stem(n,x);title('指數序列');grid on; 實驗三 離散時間信號的頻域分析 一、實驗目的 信號的頻域分析是信號處理中一種有效的工具。在離散信號的頻域分析中,通常將信號表示成單位采樣序列的線性組合,而在頻域中,將信號表示成復變量或的線性組合。通過這樣的表示,可以將時域的離散序列映射到頻域以便于進一步的處理。 在本實驗中,將學習利用MATLAB計算離散時間信號的DTFT和DFT,并加深對其相互關系的理解。 二、實驗原理 (1)DTFT和DFT的定義及其相互關系。 (2)使用到的MATLAB命令有基于DTFT離散時間信號分析函數以及求解序列的DFT函數。 三、實驗內容及分析 (1)編程計算并畫出下面DTFT的實部、虛部、幅度和相位譜。 X(e)?jw0.0518?0.1553e1?1.2828ex(n)?cos?jw?jw?0.1553e?j2w?1.0388e?j2w?0.0518e?j3w?0.3418e?j3w (2)計算32點序列 5?n16,0≦n≦31的32點和64點DFT,分別繪出幅度譜圖形,并繪出該序列的DTFT圖形。 3-1 clear; x=[0.0518,-0.1553,0.1553,0.0518];y=[1,1.2828,1.0388,0.3418];w=[0:500]*pi/500 H=freqz(x,y,w); magX=abs(H);angX=angle(H);realX=real(H);imagX=imag(H);subplot(221);plot(w/pi,magX);grid; xlabel('frequency in pi unit');ylabel('magnitude');title('幅度 part');axis([0 0.9 0 1.1]); subplot(223);plot(w/pi,angX);grid; xlabel('frequency in pi unit');ylabel('radians');title('相位 part');axis([0 1-3.2 3.2]); subplot(222);plot(w/pi,realX);grid; xlabel('frequency in pi unit');ylabel('real part');title('實部 part');axis([0 1-1 1]); subplot(224);plot(w/pi,imagX);grid; xlabel('frequency in pi unit');ylabel('imaginary');title('虛部 part');axis([0 1-1 1.1]); 3-2 N=32;n=0:N-1; xn=cos(5*pi*n/16);k=0:1:N-1;Xk=fft(xn,N);subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));title('32點');figure N=64;n=0:N-1; xn=cos(5*pi*n/16);k=0:1:N-1;Xk=fft(xn,N);subplot(2,1,1);stem(n,xn);subplot(2,1,2);stem(k,abs(Xk));title('64點'); (1) (2) 實驗四 離散時間LTI系統的Z域分析 一、實驗目的 本實驗通過使用MATLAB函數對離散時間系統的一些特性進行仿真分析,以加深對離散時間系統的零極點、穩定性,頻率響應等概念的理解。學會運用MATLAB分析離散時間系統的系統函數的零極點;學會運用MATLAB分析系統函數的零極點分布與其時域特性的關系;學會運用MATLAB進行離散時間系統的頻率特性分析。 二、實驗原理 離散時間系統的系統函數定義為系統零狀態響應的Z變化與激勵的Z變化之比。 在MATLAB中系統函數的零極點可通過函數roots得到,也可借助函數tf2zp得到,tf2zp的語句格式為 [Z,P,K]=tf2zp(B,A)其中,B與A分別表示H(z)的分子與分母多項式的系數向量。它的作用是將H(z)的有理分式表示式轉換為零極點增益形式。 若要獲得系統函數H(z)的零極點分布圖,可直接應用zplane函數,其語句格式為 Zplane(B,A) 其中,B與A分別表示H(z)的分子和分母多項式的系數向量。它的作用是在z平面上畫出單位圓、零點與極點。 離散系統中z變化建立了時域函數h(n)與z域函數H(z)之間的對應關系。因此,z變化的函數H(z)從形式可以反映h(n)的部分內在性質。可根據系統的傳遞函數H(z)求單位沖激響應h(n)的函數impz、filter等。 利用系統的頻率響應,可以分析系統對各種頻率成分的響應特性,并推出系統的特性(高通、低通、帶通、帶阻等)。 MATLAB提供了求離散時間系統頻響特性的函數freqz,調用freqz的格式主要有兩種。一種形式為 [H,w]= reqz(B,A,N)其中,B與A分別表示H(z)分子和分母多項式的系數向量;N為正整數,默認值為512;返回值w包含[0,π]范圍內的N個頻率等分點;返回值H則是離散時間系統頻率響應在0~π范圍內N個頻率處的值。另一種形式為 [H,w]= freqz(B,A,N,‘whole’) 與第一種方式不同之處在于角頻率的范圍由[0,π]擴展到[0,2π]。 三、實驗內容與結果分析 已知LTI離散時間系統,要求由鍵盤實現系統參數輸入,并繪出幅頻和相頻響應曲線和零極點分布圖,進而分析系統的濾波特性和穩定性。 (一)程序 b=[0.0528,0.797,0.1295,0.1295,0.797,0.0528]; a=[1,-1.8107,2.4947,-1.8801,0.9537,-0.2336];w=[0:20:500]*pi/500; x1=0.0528+0.797*exp(-1*j*w)+0.1295*exp(-2*j*w)+0.1295*exp(-3*j*w)+0.797*exp(-4*j*w)+0.0528*exp(-5*j*w); x2=1-1.8107*exp(-1*j*w)+2.4947*exp(-2*j*w)+1.8801*exp(-3*j*w)+0.9537*exp(-4*j*w)+0.2336*exp(-5*j*w);x22=x2+(x2==0)*eps;x=x1./x22;magx=abs(x); angx=angle(x).*180/pi; subplot(2,2,3);zplane(b,a);title('零極點圖');subplot(2,2,2);stem(w/pi,magx);title('幅度部分');ylabel('振幅');subplot(2,2,4);stem(w/pi,angx); xlabel('以pi為單位的頻率');title('相位部分');ylabel('相位'); (二)波形圖 圖4-1 幅頻、相頻響應曲線、零極點分布圖 實驗六 IIR數字濾波器的設計 一、實驗目的 從理論上講,任何的線性是不變(LTI)離散時間系統都可以看做一個數字濾波器,因此設計數字濾波器實際就是設計離散時間系統。數字濾波器你包括IIR(無限沖激響應)和FIR(有限沖激響應)型,在設計時通常采用不同的方法。 本實驗通過使用MATLAB函數對數字濾波器進行設計和和實現,要求掌握IIR數字巴特沃斯濾波器、數字切比雪夫濾波器的設計原理、設計方法和設計步驟;能根據給定的濾波器指標進行濾波器設計;同時也加深學生對數字濾波器的常用指標和設計過程的理解。 二、實驗原理 在IIR濾波器的設計中,常用的方法是:先根據設計要求尋找一個合適的模擬原型濾波器,然后根據一定的準則將此模擬原型濾波器轉換為數字濾波器。 IIR濾波器的階數就等于所選的模擬原型濾波器的階數,所以其階數確定主要是在模擬原型濾波器中進行的。 IIR數字濾波器的設計方法如下:(1)沖激響應不變法。(2)雙線性變化法。 一般來說,在要求時域沖激響應能模仿模擬濾波器的場合,一般使用沖激響應不變法。沖激響應不變法一個重要特點是頻率坐標的變化是線性的,因此如果模擬濾波器的頻率響應帶限于折疊頻率的話,則通過變換后濾波器的頻率響應可不失真地反映原響應與頻率的關系。 與沖激響應不變法比較,雙線性變化的主要優點是靠頻率的非線性關系得到s平面與z平面的單值一一對應關系,整個值對應于單位圓一周。所以從模擬傳遞函數可直接通過代數置換得到數字濾波器的傳遞函數。 MATLAB提供了一組標準的數字濾波器設計函數,大大簡化了濾波器的設計工程。 (1)butter。 (2)cheby1、cheby2。 三、實驗內容及分析 利用MATLAB編程方法或利用MATLAB中fdatool工具設計不同功能的IIR數字濾波器。 1、基于chebyshev I型模擬濾波器原型使用沖激不變轉換方法設計數字濾波器,要求參數為通帶截止頻率?p?0.4?;通帶最大衰減Ap?1dB;阻帶截止頻率?s?0.4?;阻帶最小衰減As?35dB。 程序: wp=0.2*pi; %通帶邊界頻率 ws=0.4*pi; %阻帶截止頻率 rp=1; %通帶最大衰減 rs=35; %阻帶最小衰減 Fs=1000; %?ùéè3é?ù??3?1000hz [N,Wn]=cheb1ord(wp,ws,rp,rs,'s'); [Z,P,K]=cheby1(N,rp,Wn,'s');[H,W]=zp2tf(Z,P,K); figure(1);freqs(H,W);[P,Q]=freqs(H,W);figure(2);plot(Q*Fs/(2*pi),abs(P));grid on; xlabel('頻率/Hz');ylabel('幅度'); 2、基于Butterworth型模擬濾波器原型使用雙線性變換方法設計數字濾波器的,要求參數為截止頻率?p?0.4?;通帶最大衰減Ap?1dB;阻帶截止頻率?s?0.25?;阻帶最小衰減AS?40dB。程序: wp=0.4*pi;ws=0.25*pi;rp=1;rs=40;fs=500;ts=1/fs;wp1=wp*ts;ws1=ws*ts; wp2=2*fs*tan(wp1/2);ws2=2*fs*tan(ws1/2); [N,Wn]=buttord(wp2,ws2,rp,rs,'s');[Z,P,K]=buttap(N);[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bz,az]=bilinear(b,a,fs);[H,W]=freqz(bz,az);subplot(2,1,1);plot(W/pi,abs(H));grid on;xlabel('頻率')ylabel('幅度')subplot(2,1,2); plot(W/pi,20*log10(abs(H)));grid on;xlabel('頻率');ylabel('幅度(dB)'); 實驗七 FIR數字濾波器的設計 一、實驗目的 掌握用窗函數設計FIR數字濾波的原理及其設計步驟;熟悉線性相位數字濾波器的特性。學習編寫數字濾波器的設計程序的方法,并能進行正確編程;根據給定的濾波器指標,給出設計步驟。 二、實驗原理 如果系統的沖激響應h(n)為已知,則系統的輸入輸出關系為 y(n)=x(n)*h(n) 對于低通濾波器,只要設計出低通濾波器的沖激響應函數,就可以由式得到系統的輸出了。 但是將h(n)作為濾波器的脈沖響應有兩個問題:一是它是無限長的;二是它是非因果的。對此,采取兩項措施:一是將h(n)截短;二是將其右移。 設計時,要根據阻帶的最小衰減和過渡帶寬度來選擇恰當的窗函數類型和窗口長度N。常用的窗函數有矩形窗、海明窗和布萊克曼窗等。 窗函數設計FIR濾波器步驟如下: (1)給定理想頻率響應的幅頻特性和相頻特性; (2)求理想單位脈沖響應,在實際計算中,可對理想頻率響應采樣。(3)根據過渡帶寬度和阻帶最小衰減,確定窗函數類型和窗口長度N;(4)求FIR濾波器單位脈沖響應; (5)分析幅頻特性,若不滿足要求,可適當改變窗函數形式或長度N,重復上述設計過程,以得到滿意的結果。 三、實驗內容及分析 1、分別用海明窗和布萊克曼窗設計一個48階的FIR帶通濾波器,通帶為Wn??0.450.55?。程序1:海明窗設計 N=48; Window=hamming(N+1);w1=0.45;w2=0.55;ws=[w1,w2]; b=fir1(N,ws/pi,Window);freqz(b,1,512);title('海明窗');grid on; 程序2:萊克曼窗設計 N=48; Window=blackman(N+1);w1=0.45;w2=0.55;ws=[w1,w2]; b=fir1(N,ws/pi,Window);freqz(b,1,512);title('布萊克曼窗');grid on; 2、用矩形窗設計一個線性相位高通濾波器。其中He??jw?e?j????????00.3????? 0???0.3?程序: N=9; alpha=(N-1)/2;Wc=0.7*pi;n=(0:8);i=n-alpha;i=i+(i==0)*eps; h=(-1).^n.*sin((i).*Wc)./((i).*pi);%矩形窗函數設計的系統脈沖響應 w=(0:1:500)*2*pi/500; H=h*exp(-j*n'*w);%矩形窗函數設計的頻響 magH=abs(H);% 矩形窗函數設計的振幅 subplot(211);stem(n,h); axis([0,8,-0.4,0.4]);title('矩形窗設計h(n)');line([0,10],[0,0]);xlabel('n');ylabel('h');subplot(212);plot(w/pi,magH); xlabel('以pi為單位的頻率');ylabel('H振幅');axis([0,2,0,1.7]);title('矩形窗設計振幅譜'); 實驗心得體會: 這次實驗使我進一步加深了對MATLAB軟件的使用。從上次的信號系統實驗的初步使用到這一次的深入了解,有了更深刻的認識。對這種語言環境也有了新的了解。 在實驗的過程中,我對數字濾波器的整個過程有了很好的理解和掌握。IIR數字濾波器的設計讓我知道了巴特沃思濾波器和切比雪夫濾波器的頻率特性,還有雙線性變換及脈沖響應不變法設計的濾波器的頻率特性。做這兩個實驗的時候程序有點困難,但經過細心的改寫圖形最終出來了。FIR數字濾波器的設計出來的是兩種窗的圖形,通過兩種窗的比較,我了解了他們各自的特點,幅頻和相頻特性。 最后,感謝張老師對我的諄諄教導! 目 錄 摘要...........................................................................................................................................1 1 緒論..............................................................................................................................................2 1.1 DSP系統特點和設計基本原則......................................................................................2 1.2 國內外研究動態.............................................................................................................2 2系統設計........................................................................................................................................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的語音信號處理系統,該系統采用TMS320VC5509作為主處理器,TLV320AIC23B作為音頻芯片,在此基礎上完成系統硬件平臺的搭建和軟件設計,從而實現對語音信號的采集、濾波和回放功能,它可作為語音信號處理的通用平臺。 語音是人類相互之間進行交流時使用最多、最自然、最基本也是最重要的信息載體。在高度信息化的今天,語音信號處理是信息高速公路、多媒體技術、辦公自動化、現代通信及智能系統等新興領域應用的核心技術之一。通常這些信號處理的過程要滿足實時且快速高效的要求,隨著DSP技術的發展,以DSP為內核的設備越來越多,為語音信號的處理提供了良好的平臺。本文設計了一個基于TMS320VC5509定點的語音信號處理系統,實現對語音信號的采集、處理與回放等功能,為今后復雜的語音信號處理算法的研究和實時實現提供一個通用平臺。 關鍵詞:語音處理;DSP;TMS320VC5509;TLV320AIC23B 1 緒論 語音是人類相互間所進行的通信的最自然和最簡潔方便的形式,語音通信是一種理想的人機通信方式。語音通信的研究涉及到人工智能、數字信號處理、微型計算機技術、語言聲學、語言學等許多領域,所以說語音的通信是一個多學科的綜合研究領域,其研究成果具有重要的學術價值。另外通過語音來傳遞信息是人類最重要的、最有效、最常用的交換信息的形式。語言是人類特有的功能,聲音是人類常用的工具,是相互傳遞信息的主要手段。同時也是眾構成思想交流和感情溝通的最主要的途徑。 1.1 DSP系統特點和設計基本原則 DSP(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數字信號。再對數字信號進行修改、刪除、強化,并在其他系統芯片中把數字數據解譯回模擬數據或實際環境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦芯片。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。 1.2 國內外研究動態 語音信號處理作為一個重要的研究領域,已經有很長的研究歷史。但是它的快速發展可以說是從1940年前后Dudley的聲碼器和Potter等人的可見語音開始的;20世紀60年代中期形成的一系列數字信號處理的理念和技術基礎;到了80年代,由于矢量量化、隱馬爾可夫模型和人工神經網絡等相繼被應用于語音信號處理,并經過不斷改進與完善,使得語音信號處理技術產生了突破性的進展。一方面,對聲學語音學統計模型的研究逐漸深入,魯棒的語音識別、基于語音段的建模方法及隱馬爾可夫模型與人工神經網絡的結合成為研究的熱點。另一方面,為了語音識別實用化的需要,講者自適應、聽覺模型、快速搜索識別算法以及進一步的語言模型的研究等課題倍受關注。 在通信越來越發達的當今世界,尤其最近幾十年,語音壓縮編碼技術在移動 通信、IP電話通信、保密通信、衛星通信以及語音存儲等很多方面得到了廣泛的應用。因此,語音編碼一直是通信和信號處理的研究熱點,并其取得了驚人的進展,目前在PC機上的語音編碼已經趨于成熟,而如何在嵌入式系統中實時實現語音壓縮編碼則是近些年來語音信號處理領域的研究熱點之一。 2系統設計 在實際生活中,當聲源遇到物體時會發生反射,反射的聲波和聲源聲波一起傳輸,聽者會發現反射聲波部分比聲源聲波慢一些,類似人們面對山體高聲呼喊后可以在過一會兒聽到回聲的現象。聲音遇到較遠物體產生的反射會比遇到較近的反射波晚些到達聲源位置,所以回聲和原聲的延遲隨反射物體的距離大小改變。同時,反射聲音的物體對聲波的反射能力,決定了聽到的回聲的強弱和質量。另外,生活中的回聲的成分比較復雜,有反射、漫反射、折射,還有回聲的多次反射、折射效果。 當已知一個數字音源后,可以利用計算機的處理能力,用數字的方式通過計算模擬回聲效應。簡單的講,可以在原聲音流中疊加延遲一段時間后的聲流,實現回聲效果。當然通過復雜運算,可以計算各種效應的混響效果。如此產生的回聲,我們稱之為數字回聲。 本次實驗的程序流程圖如下: 圖2.1 程序流程圖 本次實驗的系統框圖如下: 圖2.2 系統框圖 3硬件設計 3.1 硬件結構 圖3.1是系統的硬件結構框圖, 系統主要包括VC5509和A IC23 兩個模塊。 圖3.1系統硬件結構框圖 利用VC5509 的片上外設I2C(Inter-Integrated Circuit, 內部集成電路)模塊配置AIC23 的內部寄存器;通過VC5509 的McBSP(Multi channel Buffered Serial Ports, 多通道緩存串口)接收和發送采樣的音頻數據。控制通道只在配置AIC23 的內部寄存器時工作, 而當傳輸音頻數據時則處于閑置狀態。 AIC23通過麥克風輸入或者立體聲音頻輸入采集模擬信號, 并把模擬信號轉化為數字信號, 存儲到DSP的內部RAM中,以便DSP處理。 當DSP完成對音頻數據的處理以后, AIC23再把數字信號轉化為模擬信號, 這樣就能夠在立體聲輸出端或者耳機輸出端聽到聲音。 AIC23能夠實現與VC5509 DSP的McBSP端口的無縫連接, 使系統設計更加簡單。接口的原理框圖, 如下圖所示。 圖3.2 AIC23與VC5509接口原理圖 系統中A IC23的主時鐘12 MHz直接由外部的晶振提供。MODE接數字地, 表示利用I2 C控制接口對AIC23傳輸控制數據。CS接數字地, 定義了I2 C總線上AIC23的外設地址, 通過將CS接到高電平或低電平, 可以選擇A IC23作為從設備在I2 C總線上的地址。SCLK和SDIN是AIC23控制端口的移位時鐘和數據輸入端,分別與VC5509的I2C模塊端口SCL和SDA相連。 收發時鐘信號CLKX1和CLKR1由A IC23的串行數據輸入時鐘BCLK提供, 并由A IC23的幀同步信號LRCIN、LRCOUT啟動串口數據傳輸。DX1和DR1分別與A IC23 的D IN 和DOUT 相連, 從而完成VC5509與AIC23間的數字信號通信。 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為麥克風輸入,可以根據需要調整輸入增益。下圖中LLINEOUT 為左聲道輸出,RLINEOUT為右聲道輸出。用戶可以根據電阻阻值調節增益的大小,使語音輸入輸出達到最佳效果。從而實現良好的模擬語音信號輸入與模擬信號的輸出。4 實驗結果及分析 4.1 實驗結果 按“F5”鍵運行,注意觀察窗口中的bEcho=0,表示數字回聲功能沒有激活。這時從耳機中能聽到麥克風中的輸入語音放送。將觀察窗口中bEcho的取值改成非0值。這時可從耳機中聽到帶數字回聲道語音放送。 分別調整uDelay和uEffect的取值,使他們保持在0-1023范圍內,同時聽聽耳機中的輸出有何變化。 當uDelay和uEffect的數值增大時,數字回聲的效果就會越加的明顯。 圖4.1 修改前程序圖 圖4.2 修改前程序圖 圖4.3 頻譜分析 圖4.4 左聲道及右聲道波形 4.2 實驗分析 所以,從本實驗可知當已知一個數字音源后,可以利用計算機的處理能力,用數字的方式通過計算模擬回聲效應。簡單的講,可以在原聲音流中疊加延遲一段時間后的聲流,實現回聲效果。當然通過復雜運算,可以計算各種效應的混響效果。 聲音放送可以加入數字回聲,數字回聲的強弱和與原聲的延遲均可在程序中設定和調整。5 總結與心得體會 通過本次課程設計,我明白了細節決定成敗這句話的道理,在實驗中,有很多注意的地方,都被忽視了,導致再花費更多的時間去修改,這嚴重影響了試驗的進度。同時,在本次實驗中我了解了ICETEK – VC5509 – A板上語音codec芯片TLV320AIC23的設計和程序控制原理,并進一步掌握了數字回聲產生原理、編程及其參數選擇、控制,以及了解了VC5509DSP擴展存儲器的編程使用方法。 這一學期的理論知識學習加上這次課程設計,使我對DSP有了更加深刻的了解,對數字信號的處理功能,軟硬件相結合,語音信號的采集與放送等等方面都有了很深的了解,相信本次課程設計,無論是對我以后的學習,還是工作等方面都有一個很大的幫助。因此,本次課程設計讓我受益匪淺。 參考文獻 [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].北京:機械工業出版社,2003比較圖4和圖5,可以看到1200Hz以上的頻譜明顯得到了抑制。 [7]江濤,朱光喜.基于TMS320VC5402的音頻信號采集與系統處理[J].電子技術用,2002,28(7):70~72[8]TexasInstrumentsIncorporated:TMS320VC5402Datasheet,2001 致謝 在本次課程設計的即將完成之際,筆者的心情無法平靜,本文的完成既是筆者孜孜不倦努力的結果,更是指導老師樊洪斌老師親切關懷和悉心指導的結果。在整個課程設計的選題、研究和撰寫過程中,老師都給了我精心的指導、熱忱的鼓勵和支持,他的精心點撥為我開拓了研究視野,修正了寫作思路,對課程設計的完善和質量的提高起到了關鍵性的作用。另外,導師嚴謹求實的治學態度、一絲不茍的工作作風和高尚的人格魅力,都給了學生很大感觸,使學生終生受益。在此,學生謹向老師致以最真摯的感激和最崇高的敬佩之情。 另外,還要感謝這段時間來陪我一起努力同學,感謝我們這個小團隊,感謝每一個在學習和生活中所有給予我關心、支持和幫助的老師和同學們,幾年來我們一起學習、一起玩耍,共同度過了太多的美好時光。我們始終是一個團結、友愛、積極向上的集體。 南京郵電大學 實 驗 報 告 實驗名稱_____熟悉MATLAB環境 ___ 快速傅里葉變換及其應用 ____IIR數字濾波器的設計_ FIR數字濾波器的設計 課程名稱 數字信號處理A 班級學號_______09002111___________ 姓 名 王都超 開課時間 2011/2012學年,第 二 學期 實驗一 熟悉MATLAB環境 一、實驗目的 (1)熟悉MATLAB的主要操作命令。(2)學會簡單的矩陣輸入和數據讀寫。(3)掌握簡單的繪圖命令。 (4)用MATLAB編程并學會創建函數。(5)觀察離散系統的頻率響應。 二、實驗內容 (1)數組的加、減、乘、除和乘方運算。輸入A=[1 2 3 4],B=[3,4,5,6],求 C=A+B,D=A-B,E=A.*B,F=A./B,G=A.^B。并用stem語句畫出A、B、C、D、E、F、G。 D = -2 E = F = 0.3333 0.5000 0.6000 0.6667 G = 243 4096(2)用MATLAB實現下列序列: a)x(n)?0.8n 0?n?1 5n=0:1:15;x1=0.8.^n;a=(0.2+3*i)*n;stem(x1)b)x(n)?e(0.2?3j)n 0?n?15 n=0:1:15;x2=exp(a);a=(0.2+3*i)*n;stem(x2) c)x(n)?3cos(0.125?n?0.2?)?2sin(0.25?n?0.1?) 0?n?15 (4)繪出下列時間函數的圖形,對x軸、y軸以及圖形上方均須加上適當的標注: a)x(t)?sin(2?t)0?t?10s b)x(t)?cos(100?t)sin(?t)0?t?4s t=0:0.01:4;x=cos(100*pi*t).*sin(pi*t);plot(t,x, 'r-');xlabel('t'),ylabel('x(t)'),title('cos') (6)給定一因果系統H(z)?(1?頻響應和相頻響應。 2z?1?z?2)/(1?0.67z?1?0.9z?2),求出并繪制H(z)的幅 (7)計算序列{8-2-1 2 3}和序列{2 3-1-3}的離散卷積,并作圖表示卷積結果。 (8)求以下差分方程所描述系統的單位脈沖響應h(n), 0?n?50 y(n)?0.1y(n?1)?0.06y(n?2)?x(n)?2x(n?1) 實驗過程與結果(含實驗程序、運行的數據結果和圖形); clear all;N=50;a=[1-2];b=[1 0.1-0.06];x1=[1 zeros(1,N-1)];n=0:1:N-1;h=filter(a,b,x1);stem(n,h)axis([-1 53-2.5 1.2]) 實驗二 快速傅里葉變換及其應用 一、實驗目的 (1)在理論學習的基礎上,通過本實驗,加深對FFT的理解,熟悉MATLAB中的有關函數。(2)應用FFT對典型信號進行頻譜分析。 (3)了解應用FFT進行信號頻譜分析過程中可能出現的問題,以便在實際中正確應用FFT。(4)應用FFT實現序列的線性卷積和相關。 二、實驗內容 實驗中用到的信號序列 a)高斯序列 ??(n?p)q?xa(n)??e?0?20?n?15 其他 b)衰減正弦序列 ?e?ansin(2?fn)xb(n)??0?0?n?15其他 c)三角波序列 ?n?xc(n)??8?n?0?0?n?34?n?7 其他 d)反三角波序列 ?4?n?xd(n)??n?4?0?0?n?34?n?7 其他 (1)觀察高斯序列的時域和幅頻特性,固定信號xa(n)中參數p=8,改變q的值,使q分別等于2,4,8,觀察它們的時域和幅頻特性,了解當q取不同值時,對信號序列的時域幅頻特性的影響;固定q=8,改變p,使p分別等于8,13,14,觀察參數p變化對信號序列的時域及幅頻特性的影響,觀察p等于多少時,會發生明顯的泄漏現象,混疊是否也隨之出現?記錄實驗中觀察到的現象,繪出相應的時域序列和幅頻特性曲線。 (3)觀察三角波和反三角波序列的時域和幅頻特性,用N=8點FFT分析信號序列xc(n)和觀察兩者的序列形狀和頻譜曲線有什么異同?繪出兩序列及其幅頻特性xd(n)的幅頻特性,曲線。 在xc(n)和xd(n)末尾補零,用N=32點FFT分析這兩個信號的幅頻特性,觀察幅頻特性發生了什么變化?兩種情況的FFT頻譜還有相同之處嗎?這些變化說明了什么? (5)用FFT分別實現xa(n)(p=8,q=2)和xb(n)(a=0.1,f=0.0625)的16點循環卷積和線性卷積。 n=0:15;p=8;q=2; xa=exp(-(n-p).^2/q);subplot(2,3,1);stem(n,xa,'.');title('xa波形'); Xa=fft(xa,16);subplot(2,3,4);stem(abs(Xa),'.'); title('Xa(k)=FFT[xa(n)]的波形 ');A=1;f=0.0625;a=0.1; xb=exp(-a*n).*sin(2*pi*f*n);subplot(2,3,2);stem(n,xb,'.');title('xb波形');Xb=fft(xb,16);subplot(2,3,5);stem(abs(Xb),'.'); title('Xb(k)=FFT[xb(n)]的波形 '); 實驗過程與結果(含實驗程序、運行的數據結果和圖形); 實驗三 IIR數字濾波器的設計 一、實驗目的 (1)掌握雙線性變換法及脈沖響應不變法設計IIR數字濾波器的具體設計方法及其原理,熟悉用雙線性變換法及脈沖響應不變法設計低通、高通和帶通IIR數字濾波器的計算機編程。 (2)觀察雙線性變換及脈沖響應不變法設計的濾波器的頻域特性,了解雙線性變換法及脈沖響應不變法的特點。 (3)熟悉巴特沃思濾波器、切比雪夫濾波器和橢圓濾波器的頻率特性。 二、實驗內容(1)P162 例4.4 設采樣周期T=250?s(采樣頻率fs=4kHz),分別用脈沖響應不變法和雙線性變換法設計一個三階巴特沃思低通濾波器,其3dB邊界頻率為fc=1kHz。 脈沖響應不變法: fc=1000;fs=4000;OmegaC=2*pi*fc;[B,A]=butter(3, OmegaC,'s');[num1,den1]=impinvar(B,A,fs);[h1,w]=freqz(num1,den1);f = w/pi*fs/2;plot(f,abs(h1)); 雙線性變換法: fc=1000;fs=4000; OmegaC=2*fs*tan(pi*fc/fs);[B,A]=butter(3, OmegaC,'s');[num2,den2]=bilinear(B,A,fs);[h2,w]=freqz(num2,den2);f = w/pi*fs/2;plot(f,abs(h2)); 同一圖中畫兩條曲線: fc=1000;fs=4000;OmegaC=2*pi*fc;[B,A]=butter(3, OmegaC,'s');[num1,den1]=impinvar(B,A,fs);[h1,w]=freqz(num1,den1);f = w/pi*fs/2; OmegaC=2*fs*tan(pi*fc/fs);[B,A]=butter(3, OmegaC,'s');[num2,den2]=bilinear(B,A,fs);[h2,w]=freqz(num2,den2);f = w/pi*fs/2;plot(f,abs(h1),'r-.');hold on;plot(f,abs(h2),'g-'); (選做)(2)fc=0.2kHz,?=1dB,fr=0.3kHz,At=25dB,T=1ms;分別用脈沖響應不變法及雙線性變換法設計一巴特沃思數字低通濾波器,觀察所設計數字濾波器的幅頻特性曲線,記錄帶寬和衰減量,檢查是否滿足要求。比較這兩種方法的優缺點。 實驗過程與結果(含實驗程序、運行的數據結果和圖形); 實驗四 FIR數字濾波器的設計 一、實驗目的 (1)掌握用窗函數法,頻率采樣法及優化設計法設計FIR濾波器的原理及方法,熟悉相應的計算機編程; (2)熟悉線性相位FIR濾波器的幅頻特性和相頻特性; (3)了解各種不同窗函數對濾波器性能的影響。 二、實驗內容 (1)生成一個長度為20的矩形窗,畫出其時域和幅頻特性曲線。n=0:1:19;N=20;win(1:20)=1;[H,w]=freqz(win,1);subplot(2,1,1);stem(n,win)subplot(2,1,2);plot(w,abs(H)); (2)用矩形窗設計一個21階的線性相位低通FIR數字濾波器,截止頻率Wc=0.25π,求出濾波器系數,并繪出濾波器的幅頻特性。修改程序,分別得到階次為N=41,61的濾波器,并顯示其各自的幅頻曲線。 a)在上面所得的幾幅圖中,在截止頻率兩邊可以觀察到幅頻響應的擺動行為。請問波紋的數量與濾波器脈沖響應的長度之間有什么關系? b)最大波紋的高度與濾波器脈沖響應的長度之間有什么關系? 實驗過程與結果(含實驗程序、運行的數據結果和圖形); 21階的線性相位低通FIR數字濾波器: Wc=0.25*pi;N=21;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中間的點單獨算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函數 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 41階的線性相位低通FIR數字濾波器: Wc=0.25*pi;N=41;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中間的點單獨算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函數 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 61階的線性相位低通FIR數字濾波器: Wc=0.25*pi;N=61;M=(N-1)/2; %位移量 for n=0:(N-1) if(n== fix(M)) %中間的點單獨算 hd(n+1)=Wc/pi; else hd(n+1)=sin(Wc*(n-M))/(pi*(n-M));end;end;win=boxcar(N);%%%不同窗函數 h=hd.*win';[H,w]=freqz(h,1);n=0:1:N-1;subplot(3,1,1);stem(n,h)subplot(3,1,2);plot(w,abs(H));subplot(3,1,3);plot(w,angle(H)); 數字信號處理實驗小結及心得體會: 通過這次實驗,我對MATLAB語言有了一定的認識,雖然還不能完全用MATLAB獨立編寫程序,但對這種語言環境有了新的了解。我知道了一般的加減乘除在MATLAB中不同的意義。知道輸入、輸出語句怎么形成。通過快速傅里葉變換及其應用的實驗,加深了我對FFT的理解,還有對各典型信號的頻譜分析,改變參數后時域和幅頻特性的變化。IIR數字濾波器的設計讓我知道了巴特沃思濾波器和切比雪夫濾波器的頻率特性,還有雙線性變換及脈沖響應不變法設計的濾波器的頻率特性。做這個實驗的時候程序有點困難,很多細節問題不能考慮清楚,導致圖形出不來。FIR數字濾波器的設計出來的是三種窗的圖形,通過三種窗的比較,我了解了他們各自的特點,幅頻和相頻特性。我在這次實驗中的收獲很大,接觸了很多新的知識,但在實驗寫程序時,我發現自己還有很多不足。很多程序寫不完全。這是自己今后要加強的地方。第四篇:數字信號處理課程設計
第五篇:數字信號處理實驗報告