第一篇:--基于MATLAB的語音信號的頻譜分析
DSP課程設計
——基于MATLAB的聲音信號頻譜分析
1. 課程設計目的
綜合運用數學信號處理的理論知識進行語音信號的頻譜分析,通過理論推導得出相應結論,再利用MATLAB作為編程工具進行計算機實現,從而加深對所學知識的理解,建立概念。
2. 理解設計基本要求
1)熟悉離散信號和系統的時域特性。
2)熟悉線性卷積和相關的計算編程方法。
3)掌握序列傅里葉變換的計算機實現方法,利用序列傅里葉變換對離散信號、系統和系統的響應進行頻域分析。4)學會MATLAB的使用,掌握MATLAB的程序設計方法。5)利用MATLAB對wav文件進行頻譜分析。6)分別用不同的濾波器對加噪語音信號進行濾波,選擇最佳濾波器。
3. 課程設計內容
選擇一個wav文件作為分析的對象,或錄制一段語音信號,對其進行頻譜分析,分別對加噪前后的語音信號進行頻譜分析,再通過不同濾波器根據信號的頻譜特點重構語音信號,選出最佳濾波方案。
4. 課程設計實現步驟
(1)語音信號的獲取
選擇一個wav文件作為分析的對象,可以利用Windows下的錄音機或其他軟件,錄制一段自己的話音,在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于讀取語音,采樣值放在向量y中,fs表示采樣頻率(Hz),bits表示采樣位數。[N1 N2]表示讀取的值從N1點到N2點的值。
sound(y);用于對聲音的回放。向量y則就代表了一個信號,也即一個復雜的“函數表達式”,也可以說像處理一個信號的表達式一樣處理這個聲音信號。
下面是語音信號在MATLAB中的語言程序,它實現了語音的讀入與打開,并繪出了語音信號時域波形,然后對語音信號進行頻譜分析。在MATLAB中,可以利用函數fft對信號進行快速傅里葉變化,得到信號的頻譜特性。
在頻譜特性中分析最大值的位置(可能有幾個),它代表的頻率和時域的采樣時間有關,相鄰的兩點之間的距離為。其中,N是離散傅里葉變換用的點數,是采樣的時間,前面在讀取 wav文件時得到了采樣頻率。
既然知道了該聲波的頻譜,按頻率就可以反演它的時域值,利用以上分析的主要峰值來重構聲波。由于沒有考慮相位和其他的頻譜分量,所以波形和原來的波形相差甚大,但大體的頻率是沒有錯的。
fs=25600;
%語音信號采樣頻率為25600 [x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面語音音頻.wav');
sound(x,fs,bits);
%播放語音信號
y1=fft(x,4096);
%對信號做2048點FFT變換 f=fs*(0:2047)/4096;figure(1)magy1=abs(y1);angy1=angle(y1);subplot(3,1,1),plot(x);title('原始信號波形')subplot(3,1,2),plot(magy1);title('原始信號幅值')subplot(3,1,3),plot(angy1);title('原始信號相位')figure(2)freqz(x)
%繪制原始語音信號的頻率響應圖 title('頻率響應圖')figure(3)plot(f,abs(y1(1:2048)));title('原始語音信號頻譜')xlabel('Hz');ylabel('fudu');
axis([0 4500 0 400])
(2)wav語音信號加噪聲
在MATLAB軟件平臺下,給原始的語音信號疊加上噪聲,噪聲類型分為如下幾種:(1)單頻噪色(正弦干擾);(2)高斯隨機噪聲。繪出加噪聲后的語音信號時域和頻譜圖,在視覺上與原始語音信號圖形對比,也可通過Windows播放軟件從聽覺上進行對比,分析并體會含噪語音信號頻譜和時域波形的改變。本實驗采用正弦干擾。
clc;clear;fs=22050;
%語音信號采樣頻率為22050 [x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面語音音頻.wav');%讀取語音信號的數據,賦給變量x y1=fft(x,4096);
%對信號做4096點FFT變換 f=fs*(0:511)/4096;t=(0:length(x)-1)/22050;x1=[0.05*sin(2*pi*10000*t)]';x2=x+x1;sound(x2,fs,bits);figure(1)subplot(2,1,1)plot(x)
%做原始語音信號的時域圖形 title('原語音信號時域圖')subplot(2,1,2)plot(x2)
%做原始語音信號的時域圖形 title('加高斯噪聲后語音信號時域圖')xlabel('time n');ylabel('fudu');y2=fft(x2,4096);figure(2)subplot(2,1,1)plot(abs(y1))title('原始語音信號頻譜');xlabel('Hz');ylabel('fudu');subplot(2,1,2)plot(abs(y2))title('加噪語音信號頻譜');xlabel('Hz');ylabel('fudu');axis([0 4500 0 300]);wavwrite(x2,fs,'C:Documents and SettingsAdministrator桌面語音加噪.wav');
(3)巴特沃斯低通濾波
對加入高斯隨機噪聲和正弦噪聲的語音信號進行濾波。用雙線性變換法設計了巴特沃斯數字低通IIR濾波器對兩加噪語音信號進行濾波,并繪制了巴特沃斯低通濾波器的幅度圖和兩加噪語音信號濾波前后的時域圖和頻譜圖。clear all;fb = 1000;fc = 1200;fs = 22050;wp=0.1*pi;ws=0.4*pi;Rp=1;Rs=15;Fs=22050;Ts=1/Fs;wp1=2/Ts*tan(wp/2);%將模擬指標轉換成數字指標 ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%選擇濾波器的最小階數
[Z,P,K]=buttap(N);%創建butterworth模擬濾波器 [Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bd,ad]=bilinear(b,a,Fs);%用雙線性變換法實現模擬濾波器到數字濾波器的轉換 [h,w]=freqz(bd,ad);figure(1)subplot(111);plot(w*fs/(2*pi),abs(h))grid;title('濾波器的性能分析');pause;figure(2)[x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面語音加噪.wav');n=length(x);f=fs*(0:(n/2-1))/n;X=fft(x);z=filter(bd,ad,x);subplot(211);plot(x);title('原始信號的波形');subplot(212);plot(z);title('濾波后信號的波形');pause;figure(3)sound(z,fs,bits);subplot(211);plot(f,abs(X(1:n/2)));title('原始信號的頻譜');xlabel('Hz');Z=fft(z);subplot(212);plot(f,abs(Z(1:n/2)));title('濾波后的信號頻譜');xlabel('Hz');wavwrite(z,fs,'C:Documents and SettingsAdministrator桌面語音巴濾.wav');
(4)漢明窗的FIR低通濾波
使用窗函數法,選用海明窗設計了數字FIR低通濾波器對加了正弦噪聲的語音信號進行濾波,并繪制了濾波器濾波后的語音信號時域圖和頻譜圖。%FIR濾波
fs=22050;[x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面語音加噪.wav');wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta);%取整 t=0:(size(x)-1);wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1));%選擇窗函數,并歸一化截止頻率 f1=fftfilt(b,x);figure(1)freqz(b,1,512)[h1,w1]=freqz(b,1);plot(w1*fs/(2*pi),20*log10(abs(h1)));figure(2)subplot(2,1,1)plot(t,x)title('濾波前的時域波形');subplot(2,1,2)plot(t,f1);title('濾波后的時域波形');sound(f1);%播放濾波后的語音信號 F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%畫出濾波前的頻譜圖 title('濾波前的頻譜')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512)));%畫出濾波后的頻譜圖 title('濾波后的頻譜')xlabel('Hz');ylabel('fuzhi');wavwrite(f1,fs,'C:Documents and SettingsAdministrator桌面語音F濾.wav');
5. 課程設計心得體會
本設計采用了高效快捷的開發工具——MATLAB,實現了語音信號的采集,對語音信號加噪聲及設計濾波器濾除噪聲的一系列工作。從頻率響應圖中可以看出:巴特沃斯濾波器具有單調下降的幅頻特性,通帶內是平滑的。海明窗設計的FIR濾波器的頻率特性幾乎在任何頻帶上都比巴特沃斯濾波器的頻率特性好,過渡帶也比較小,只是海明窗設計的濾波器下降斜度較小對語言的過渡失真進行了補償。
我們小組初步完成了設計任務,由于個人能力有限以及團隊合作不夠默契等諸多問題,還存在許多不足的地方,比如濾波器的設計種類還比較單一,沒有做更多的濾波效果比較等。在以后的工作和學習中會更加努力來完善設計任務。
參考文獻
[1]周輝,董正宏,數字信號處理及MATLAB實現,北京希望出版社,2006 [2]王樹勛.數字信號處理處理基礎及試驗.北京:機械工業出版社,1992 [3]井上伸雄.數字信號處理的應用.北京:科學出版社,1991 [4]鄭君里,楊為理.信號與系統(第二版),高等教育出版社,1981
第二篇:基于matlab的語音信號濾波處理——數字信號處理課程設計
數字信號處理課程設計
題目: 學院: 專業: 班級: 學號: 姓名: 指導教師:
基于matlab的語音信號濾波處理
物理與電子信息學院電子信息工程
摘要:
語音信號處理是研究用數字信號處理技術和語音學知識對語音信號進行處理的新興學科,是目前發展最為迅速的學科之一,通過語音傳遞信息是人類最重要,最有效,最常用和最方便的交換信息手段,所以對其的研究更顯得尤為重要。
Matlab語言是一種數據分析和處理功能十分強大的計算機應用軟件,它可以將聲音文件變換成離散的數據文件,然后用起強大的矩陣運算能力處理數據。這為我們的本次設計提供了強大并良好的環境!
本設計要求自己錄制一段自己的語音后,在MATLAB軟件中采集語音信號、回放語音信號并畫出語音信號的時域波形和頻譜圖。再在Matlab中分別設計不同形式的FIR數字濾波器。之后對采集的語音信號經過不同的濾波器(低通、高通、帶通)后,觀察不同的波形,并進行時域和頻譜的分析。對比處理前后的時域圖和頻譜圖,分析各種濾波器對于語音信號的影響。最后分別收聽進行濾波后的語音信號效果,做到了解在怎么樣的情況下該用怎么樣的濾波器。
目錄
1.設計內容……………………………………………………………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調試結果描述…………………………………………………10 3.3所遇問題及結果分析…………………………………………15
3.3.1所遇主要問題…………………………………………16
3.3.2結果分析………………………………………………16 4.體會與收獲…………………………………………………………17 5.參考文獻……………………………………………………………17
1.設計內容:
1.首先錄制好一段自己的語音。
2.用Matlab分別設計好3種類型的濾波器(指標自己確定):低通型、高通型、帶通型。3.用Matlab將語音信號進行采樣,并分別將其通過所設計的3種濾波器。4.用Matlab自帶的語音返回函數收聽濾波后的語音信號,分析并比較其與原語音信號的差異。
2.設計原理:
語音信號時一種非平穩的時變信號,它帶著各種信息。在語音編碼、語音合成、語音識別和語音增強等語音處理中無一例外需要提取語音中包含的各種信息。語音信號分析的目的就在于方便有效的提取并表示語音信號所攜帶的信息。語音信號處理可以分為時域和變換域等處理方法,其中時域分析是最簡單的方法,直接對語音信號的時域波形進行分析,崎嶇的特征參數主要有語音的短時能量,短時平均過零率,短時自相關函數等。2.1語音信號的時域分析
信號提取:通過圖形用戶界面上的菜單功能按鍵采集電腦上的一段音頻信號,完成音頻信號的頻率,幅度等信息的提取,并得到該語音信號的波形圖。
信號調整:在設計的用戶圖形界面下對輸入的音頻信號進行各種變化,如變化幅度、改變頻率等操作,以實現對語音信號的調整。
2.2語音信號的頻域分析
信號的傅里葉表示在信號的分析和處理中起著重要的作用。因為對于線性系統來說,可以很方便地確定其對正弦或復指數和的響應,所以傅里葉分析方法能完善地解決許多信號分析和處理問題。另外,傅里葉表示使信號的某些特性變得更明顯,因此,它能更深入地說明信號的各項紅物理現象。
由于語音信號時隨著時間變化的,通常認為,語音是一個受準周期脈沖或隨機噪聲源激勵的線性系統的輸出。輸出頻譜是聲道系統頻率響應與激勵源頻譜的乘積。身份到系統的頻率響應及激勵源都是隨時間變化的,因此一般標準的傅里葉表示雖然適用于周期及平穩隨機信號的表示,但不能直接用于語音信號。由于語音信號可以認為在短時間內,近似不變,因而可以采用短時分析法。
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('信號經過低通濾波器(時域)');figure(5);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_low))));title('信號經過低通濾波器(頻域)');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);%數字濾波器頻率響應 title('高通濾波器的頻率響應');
x1_high = filter(b2,1,x1);%對信號進行高通濾波 figure(7);plot(x1_high);title('信號經過高通濾波器(時域)');figure(8);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_high))));title('信號經過高通濾波器(頻域)')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);%數字濾波器頻率響應 title('帶通濾波器的頻率響應');x1_daitong = filter(b3,1,x1);%對信號進行帶通濾波 figure(10);plot(x1_daitong);title('信號經過帶通濾波器(時域)');figure(11);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_daitong))));title('信號經過帶通濾波器(頻域)');3.1.5語音信號的回放(分別執行)
sound(x1,fs,bits);%原始信號
sound(x1_low,fs,bits);%經過低通濾 sound(x1_high,fs,bits);%經過高通濾波 sound(x1_daitong,fs,bits);%經過帶通濾波
3.2調試結果描述
原始語音信號的時域圖形:
原始語音信號頻譜:
低通濾波器的頻率響應:
信號經過低通濾波后的時域波形:
信號經過低通濾波后的頻域波形
高通濾波器的頻率響應:
信號經過高通濾波后的時域波形:
信號經過高通濾波后的頻域波形:
帶通濾波器的頻率響應:
信號經過帶通濾波后的時域波形:
信號經過帶通濾波后的頻域波形:
3.3所遇問題及結果分析
3.3.1所遇主要問題
1.在高通與帶通濾波器的設計時老是報錯,但同樣的用法在低通濾波器中就可以實現
b2=fir1(N2,wc2/pi,'high',Window);??? Error using ==> fir1 The window length must be the same as the filter length.其要求在fir函數中所選用的窗長要和濾波器長度一致。但在參考書上指出,濾波器階數必須為窗長加1。經上網查詢后,原來高通、帶阻濾波器的階數應該控制為奇數,因為如果階數為偶數,則在π點必有一零點,這對于高通帶阻來說是不允許的,故取階數為奇數,而你FIR1濾波器階數為M+1階,所以你的M必須為偶數,所以可以將程序中去窗長算法由原程序的: 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結果分析
經過回放三個不同類型濾波器輸出的語音信號,并與原語音信號對比得到了如下結論。
語音高頻成分音質非常尖銳,齒音中,聲音有些暗淡。語音低頻成分音質沉穩,空間感覺強,語音渾厚。語音中頻成分音質有力度,有通透感。
4.體會與收獲
以往都是通過課本來感性的認知語音信號,通過本次的課程設計,讓我對語音信號有了一個較為實際的認識。于此同時,讓我再次把數字信號處理及數字濾波器的設計方法重新進行了復習和學習。而對于Matlab,也再次讓我感受到了其功能的強大。最為重要的是,本次課 17
程設計讓我重新審視了學習的過程:只去做實驗是不行的,首先還是要思考,遇到了問題查書籍,百度搜索也只是一種手段,更加重要的是想,再理解,只有這樣才能真正的做好實驗。
5.參考文獻
《數字信號處理》錢同惠、百度文庫
第三篇:基于MATLAB的有噪聲的語音信號處理的課程設計要點
DSP實驗課程設計實驗報告
DSP實驗課程設計實驗報告
姓名: 學號: 班級:
1.課程設計題目:
基于MATLAB的有噪聲的語音信號處理的課程設計。
2.課程設計的目的:
綜合運用數字信號處理的理論知識進行頻譜分析和濾波器設計,通過理論推導得出相應的結論,再利用MATLAB做為編程工具進行計算機實現,從而加深對所學知識的理解,建立概念。
3.課程設計的要求:
(1)熟悉離散信號和系統的時域特性。(2)掌握序列快速傅里葉變換FFT方法。
(3)學會MATLAB的使用,掌握MATLAB的程序設計方法。(4)利用MATLAB對語音信號進行頻譜分析。
(5)掌握MATLAB設計各種數字濾波器的方法和對信號進行濾波的方法。
4.課程設計的內容:
錄制一段語音信號,對語音信號進行頻譜分析,利用MATLAB中的隨機函數產生噪聲加入到語音信號中,使語音信號被污染,然后進行頻譜分析,設計FIR和IIR數字濾波器,并對噪聲污染的語音信號進行濾波,分析濾波后的信號的時域和頻域特征,回放語音信號。
5.課程設計的步驟:
(1)語音信號的獲取
通過錄音軟件錄制一段語音“數字信號處理”,命名為“OriSound”,時長大約1到2秒,在MATLAB中,通過使用wavread函數,對語音進行采樣: [y,fs,nbits]=wavread('OriSound');%語音信號的采集 采樣值放在向量y中,采樣頻率為fs,采樣位數為nbits。
DSP實驗課程設計實驗報告
(2)語音信號的頻譜分析
畫出語音信號的時域波形,然后對語音信號進行頻譜分析,在MATLAB中,通過使用fft函數對信號進行快速傅里葉變換,得到信號的頻譜特性。
因此采集語音并繪出波形和頻譜的模塊程序如下:
[y,fs,nbits]=wavread('OriSound');
sound(y,fs,nbits);
n=length(y);
Y=fft(y,n);
figure;subplot(2,1,1);
plot(y);title('原始信號波形','fontweight','bold');axis([ 00000 80000-1 1]);
grid;subplot(2,1,2);
plot(abs(Y));title('原始信號頻譜','fontweight','bold');axis([ 0 150000 0 4000]);
grid;
結果如下:
%語音信號的采集 %語音信號的播放 %計算語音信號的長度 %快速傅里葉變換 %繪出時域波形
%通過嘗試確定合適的坐標參數 %繪出頻域頻譜
%通過嘗試確定合適的坐標參數
DSP實驗課程設計實驗報告
可以看到,語音信號的頻率集中在低頻部分。
(3)產生噪聲信號
在MATLAB中,通過使用randn函數產生隨機噪聲信號,并加到語音信號中得到被污染的語音信號,回放語音信號。
產生隨機噪聲: Noise=0.2*randn(n,1);其中用0.2倍乘噪聲用來適當削減噪聲的作用,便于對語音信號進行處理并比較效果。
(4)污染信號頻譜分析
對被污染的加噪信號進行時域和頻域分析。
加噪聲并分析信號波形頻譜的模塊程序及說明如下:
DSP實驗課程設計實驗報告
[y,fs,nbits]=wavread('OriSound.wav');
sound(y,fs,nbits);
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
sound(s);
figure;subplot(2,1,1);
plot(s);title('加噪語音信號的時域波形','fontweight','bold');axis([ 00000 80000-1 1]);
grid;S=fft(s);
subplot(2,1,2);
plot(abs(S));title('加噪語音信號的時域波形','fontweight','bold');axis([ 0 150000 0 4000]);grid;
結果如下:
%語音信號采集
%回放語音信號便于比較效果 %計算語音信號長度
%產生隨機噪聲信號Noise
%將Noise添加到原始信號,得到污
染信號s
%回放污染信號s %繪制加噪信號時域波形
%對s進行快速傅里葉變換得到頻譜
%繪制加噪信號頻域頻譜
DSP實驗課程設計實驗報告
可以看到,隨機噪聲均勻的分布在整個頻譜范圍內。
(5)設計FIR和IIR數字濾波器
在MATLAB中,根據頻譜特征設計FIR和IIR濾波器。在Matlab中,可以利用函數fir1設計FIR濾波器,利用函數butter,cheby1設計IIR濾波器,利用Matlab中的函數freqz畫出各步濾波器的頻率響應。
低通濾波器的性能指標:fp=1000Hz,fc=1200Hz,As=100db ,Ap=1dB 高通濾波器的性能指標:fp=3500Hz,fc=4000Hz,As=100dB,Ap=1dB;
帶通濾波器的性能指標:fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB 在MATLAB中,利用[N,wc]=butter(N,wc,Rp,As,'s')設計并計算巴特沃斯模擬濾波器的階數N和3dB截止頻率wc;[B,A]=cheby1(N,Rp,wpo,'ftypr')設計切比雪夫I型濾波器。
在課程設計中,共設計了六種濾波器對信號進行濾波:FIR低通,高通,帶通濾波器,IIR低通,高通,帶通濾波器。通過對原始信號和加噪信號的頻譜進行觀察,原始語音信號頻譜集中在低頻段,而隨機噪聲接近均勻的分布在整個頻譜范圍內,因此推測選用低通濾波器去噪性能要好于高通和帶通濾波器。
(6)對污染信號進行濾波
在MATLAB中用FIR和IIR濾波器對加噪信號進行濾波,其中通過利用函數fftfilt用FIR濾波器濾波,通過利用函數filter用IIR濾波器濾波。
(7)回放語音信號
在MATLAB中,通過用sound函數對語音信號進行回放,用以比較各濾波器的濾波效果。
各濾波器設計模塊的程序和說明如下:
(1)IIR低通濾波器設計
DSP實驗課程設計實驗報告
[y,fs,nbits]=wavread('OriSound.wav');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;
wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;[n11,wn11]=buttord(wp,ws,1,50,'s');
[b11,a11]=butter(n11,wn11,'s');
[num11,den11]=bilinear(b11,a11,0.5);
z11=filter(num11,den11,s);
sound(z11,fs,nbits);
m11=fft(z11);
figure;subplot(2,2,1);
plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([ 0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m11),'r');title('濾波后信號的頻譜','fontweight','bold');axis([ 0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z11);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
%語音信號采集 %計算語音信號長度
%產生隨機噪聲信號Noise
%將Noise添加到原始信號,得到污
染信號s
%快速傅里葉變換
%低通濾波器的階數和截止頻率 %S域頻率響應的參數
%利用雙線性變換實現頻率響應S域到Z域的變換
%濾波
%回放濾波后的信號 %濾波后的信號頻譜 %繪出濾波前的信號頻譜
%繪出濾波后的信號頻譜
%繪出濾波前的信號波形
%繪出濾波后的信號波形
DSP實驗課程設計實驗報告
可以看出,濾波后將非低頻部分的噪聲頻率濾掉,但還有一些高于原始語音信號的頻率沒有被去除。
(2)IIR高通濾波器設計
[y,fs,nbits]=wavread('OriSound');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Fp1=1200;Fs1=1000;Ft=8000;wp1=tan(pi*Fp1/Ft);ws1=tan(pi*Fs1/Ft);wp=1;ws=wp1*wp/ws1;[n13,wn13]=cheb1ord(wp,ws,1,50,'s');
%語音信號采集
%計算語音信號的長度 %產生隨機噪聲
%語音信號加入噪聲得到加噪信號 %快速傅里葉變換
%模擬的低通濾波器階數和截止頻率
DSP實驗課程設計實驗報告
[b13,a13]=cheby1(n13,1,wn13,'s');
%S域的頻率響應的參數 [num,den]=lp2hp(b13,a13,wn13);
%S域低通參數轉為高通的 [num13,den13]=bilinear(num,den,0.5);%利用雙線性變換實現頻率響應S域到Z域轉
換 z13=filter(num13,den13,s);
%濾波 sound(z13,fs,nbits);
%回放濾波后的信號 m13=fft(z13);
%濾波后的信號頻譜 figure;subplot(2,2,1);
%繪出濾波前的信號頻譜 plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
%繪出濾波后的信號頻譜 plot(abs(m13),'r');title('濾波后信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
%繪出濾波前的信號波形 plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
%繪出濾波后的信號波形 plot(z13);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
DSP實驗課程設計實驗報告
可以看出,濾波后將原始信號絕大部分頻譜濾掉,剩下噪聲信號,不能采用。
(3)IIR帶通濾波器設計
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
q=10.^(-rs/20);fpts=[wp ws];
%語音信號采集 %計算語音信號的長度 %產生隨機噪聲
%語音信號加噪
%快速傅里葉變換
%通帶阻帶波紋
DSP實驗課程設計實驗報告
mag=[1 0];dev=[p q];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);
b21=fir1(n21,wn21,kaiser(n21+1,beta));
z21=fftfilt(b21,s);
sound(z21,fs,nbits);
m21=fft(z21);
figure(4);subplot(2,2,1);
plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m21),'r');title('濾波后信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z21);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
%由kaiserord求濾波器的階數和截止頻率
%設計濾波器 %濾波
%回放濾波后的信號 %濾波后的信號頻譜 %繪出濾波前的信號頻譜
%繪出濾波后的信號頻譜
%繪出濾波前的信號波形
%繪出濾波后的信號波形
DSP實驗課程設計實驗報告
可以看出,大部分噪聲被去除,與低通IIR濾波器的效果差不多,稍好于低通。
(4)FIR低通濾波器
[y,fs,nbits]=wavread('OriSound');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
q=10.^(-rs/20);fpts=[wp ws];
%語音信號采集
%計算語音信號的長度 %產生隨機噪聲
%語音信號加噪
%快速傅里葉變換
%通帶阻帶波紋
DSP實驗課程設計實驗報告
mag=[1 0];dev=[p q];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%由kaiserord求濾波器的階數和截止頻
b21=fir1(n21,wn21,kaiser(n21+1,beta));
z21=fftfilt(b21,s);
sound(z21,fs,nbits);
m21=fft(z21);
figure(4);subplot(2,2,1);
plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m21),'r');title('濾波后信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z21);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
率
%由fir1設計濾波器 %濾波
%回放濾波后的信號 %濾波后的信號頻譜 %繪出濾波前的信號頻譜
%繪出濾波后的信號頻譜
%繪出濾波前的信號波形
%繪出濾波后的信號波形
DSP實驗課程設計實驗報告
可以看出:大部分的噪聲頻率被濾除,幾乎完整的保留了原始信號的頻譜,濾波效果最好,但是由于在低頻部分仍然有隨機信號的干擾,所以回放信號較原始信號音質稍差。
(5)FIR高通濾波器
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
%語音信號采集
%計算語音信號的長度 %產生隨機噪聲
%語音信號加噪
%快速傅里葉變換
%通帶阻帶波紋
DSP實驗課程設計實驗報告
q=10.^(-rs/20);fpts=[ws wp];mag=[0 1];dev=[p q];[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',kaiser(n23+1,beta));
%由fir1設計濾波器 z23=fftfilt(b23,s);
sound(z23,fs,nbits);
m23=fft(z23);
figure;subplot(2,2,1);
plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m23),'r');title('濾波后信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z23);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
%濾波 %回放濾波后的信號 %濾波后的信號頻譜 %繪出濾波前的信號頻譜%繪出濾波后的信號頻譜%繪出濾波前的信號波形%繪出濾波后的信號波形
DSP實驗課程設計實驗報告
可以看到,濾波后只剩部分高頻噪聲頻率,原始語音信號頻率被濾除,因此無法恢復語音信號。
(6)FIR帶通濾波器
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=2200;wp1=tan(pi*Fp1/Ft);
wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);
%語音信號采集
%計算語音信號的長度 %產生隨機噪聲
%語音信號加噪
%快速傅里葉變換
%帶通到低通濾波器參數轉換
DSP實驗課程設計實驗報告
w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp*wp2-w.^2)/(bw*w);[n22,wn22]=buttord(wp,ws,1,50,'s');
[b22,a22]=butter(n22,wn22,'s');
z22=fftfilt(b22,s);
sound(z22,fs,nbits);
m22=fft(z22);
figure;subplot(2,2,1);
plot(abs(S),'g');title('濾波前信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m22),'r');title('濾波后信號的頻譜','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('濾波前信號的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z22);title('濾波后的信號波形','fontweight','bold');axis([00000 100000-1 1]);grid;
結果如下:
%低通濾波器階數和截止頻率 %S域的頻率響應的參數 %濾波
%回放濾波后的信號 %濾波后的信號頻譜 %繪出濾波前的信號頻譜
%繪出濾波后的信號頻譜
%繪出濾波前的信號波形
%繪出濾波后的信號波形
DSP實驗課程設計實驗報告
可以看到,濾波器將部分低頻濾去,也就濾掉了部分原始信號頻率,因此無法正常恢復語音信號。
(8)設計GUI界面
創建一個GUI界面,可以方便的管理各個模塊。
首先通過File-->New-->GUI創建一個GUI界面,然后對界面進行設計,最后對各個空間編寫回調函數。
效果如下:
DSP實驗課程設計實驗報告
其中,“原始語音頻譜分析”可以對原始語音信號進行波形和頻譜的顯示,“加噪后頻譜分析”可以對加噪后語音信號進行波形和頻譜的顯示,“濾波器對加噪語音信號進行濾波模塊”中的各濾波器控件分別可以利用相應的濾波器對加噪后的語音信號進行濾波處理并回放。
6.課程設計總結:
在這次課程設計中,我設計制作了加噪語音信號濾波提取的系統,綜合運用了之前幾次實驗,尤其是濾波器設計方面的MATLAB知識,并最后得到了比較理想的效果。通過這次課程設計,我加深了對濾波器方面知識的理解。用自己設計的各種濾波器對污染信號進行處理,也讓我更加清楚的理解了濾波器的濾波特性,比較并找到最合適的濾波器。
這次課程設計是一個不小的挑戰,通過不斷的學習和嘗試,最終制作完成,在這個過程中我也有了很多的提高和收獲。比如,如何在語音信號中添加噪聲,如何靈活的利用各種濾波器對語音信號進行處理,如何用MATLAB設計GUI界面并對控件添加回調函數等。其中,印象最深的是GUI界面的設計。通過查找資料,我掌握了設計GUI基本界面的方法,把所
DSP實驗課程設計實驗報告
有的功能集中到一個界面中,操作簡便又實用美觀。當然,這次設計也讓我認識到自身的不足,比如編程經驗欠缺,知識聯系能力不強等。但是通過不斷的改進,我在這兩方面都有了很大的提高,對課堂知識的掌握和精進有很大的幫助。
第四篇:頻譜分析儀和信號分析儀區別及常見問題解答
頻譜分析儀和信號分析儀區別及常見問題解答
頻譜分析儀和信號分析儀這兩個術語往往可以互換使用,不過兩者在功能和能力上還是有一定區別。當今的分析儀可進行更全面的頻域、時域和調制域信號分析,用“信號分析儀”來描述更為準確。
頻譜分析儀:測量在儀器的整個頻率范圍內輸入信號幅度隨頻率進行變化的情況。其最主要的用途是測量已知和未知信號的頻譜功率。
矢量信號分析儀:測量在儀器的中頻帶寬內輸入信號在單一頻率上的幅度和相位。其最主要的用途是對已知信號進行通道內測量,例如誤差矢量幅度、碼域功率和頻譜平坦度。
信號分析儀:同時執行頻譜分析儀和矢量信號分析儀的功能。
頻譜分析儀常見問題解答:
1、是否有不同類型的頻譜分析儀?
有兩類頻譜分析儀,類型由獲取信號頻譜所使用的方法決定。掃描調諧頻譜分析儀使用超外差式接收機對一部分輸入信號頻譜進行下變頻(使用電壓控制振蕩器和混頻器),達到帶通濾波器的中心頻率。采用超外差式體系結構的電壓控制振蕩器在一系列頻率上進行掃描,支持儀器完整頻率范圍的假設。快速傅立葉變換(FFT)分析儀計算離散傅立葉變換(DFT),這個數學過程可將輸入信號的波形轉換成其頻譜分量。
2、我何時應使用臺式頻譜分析儀而不是手持式頻譜分析儀?
臺式頻譜和信號分析儀提供卓越的技術指標和測量應用軟件,而手持式頻譜分析儀更適合現場工程師使用。
3、頻譜分析儀能否得到實時結果?
可以,實時頻譜分析儀使用了混合方法,即首先使用超外差技術將輸入信號下變頻到較低頻率,然后使用 FFT 技術對其進行分析。
4、我能否使用頻譜分析儀對信號進行解調?
通過將頻譜分析儀或信號分析儀與 Agilent 89600 VSA 靈活調制分析軟件或測量應用軟件結合使用,您能夠解調廣泛的標準和通用數字信號與制式。
5、安捷倫提供什么類型的頻譜分析儀?
安捷倫提供廣泛的信號分析儀產品,包括掃描調諧和 FFT 頻譜分析儀、頻譜分析儀軟件和頻譜分析儀測量應用軟件。
6、安捷倫頻譜分析儀產品覆蓋什么頻率范圍?
安捷倫提供從直流至 50 GHz 的多種頻譜分析儀和信號分析儀產品,使用外部混頻器可擴展到 325 GHz。
第五篇:DSP語音信號處理
摘
要
語音信號處理是研究數字信號處理技術和語音信號進行處理的一門學科,是一門新型的學科,是在多門學科基礎上發展起來的綜合性技術,它涉及到數字信號處理、模式識別、語言學。語音信號處理是研究用數字信號處理技術對語音信號處理的一門學科。處理的目的是要得到一些語音參數以便高效的傳輸或存儲;或者是通過處理的某種運算以達到某種用途的要求。語音信號處理又是一門邊緣學科。如上所訴,它是“語言語音學”與“數字信號處理”兩個學科相結合的產物。
語音信號處理屬于信息科學的一個重要分支,大規模集成技術的高度發展和計算機技術的飛速前進,推動了這一技術的發展。在數字音頻技術和多媒體技術迅速發展的今天,傳統的磁帶語音錄放系統因體積大、使用不便、放音不清晰而受到了巨大挑戰。本次課程設計提出的體積小巧,功耗低的數字化語音存儲與回放系統,可以有效的解決傳統的語音錄放系統在電子與信息處理的使用中受到的限制。
本文提出了語音信號處理課程建設的實驗環節中的一些考慮,作為專業課程的學習,實驗內容不能僅僅停留在驗證性實驗上,還應增加實驗延伸的設計要求,是學生加深對理論分析認識的同時,強調培養學生的實際動手能力和知識綜合運用能力。從而提高語音信號的教學和實驗的質量。實驗內容采用MATLAB編程實現,不僅易于語音信號處理的實現,更易引導學生完成實驗延伸的設計。
第一章 緒論
1.1選題背景
在我們的現實生活中從磁帶、錄像帶到CD、VCD、DVD;從黑白電視機、彩色電視機、高清晰度電視機到具有數字信號處理功能的電視機;從留聲機、錄音機到語音信箱;現在正出在模擬信息到數字信息的變革之中,傳統的磁帶語音錄放系統因其體積大,使用不便,在電子與信息處理的使用中受到許多限制。
雖然,目前廣播電視系統尚未實現真正的數字化,相信在不久的將來,真正的數字電視、數字收音機、數字收錄機將進入家庭。所以,研究音頻信號的數字化存儲、處理和回放系統有著很重要的現實意義。
通過設計語音信號實驗箱可以對語音信號實現各種形式的變換,因此學會對語音信號的處理,也可自行研究將此語音處理技術應用到現實生活中。
1.2課題意義
語音信號處理的一門比較實用的電子工程的專業課程,語音是人類獲取信息的重要來源和利用信息的重要手段,通過語言相互傳遞信息是人類最重要的基本功能之一,語音是人類特有的功能,它是創造和記載幾千年來人類文明史的根本手段,是人類最重要、最有效、最常用和最方便的交換信息的形式。
語音信號處理是研究用數字信號處理技術對語音信號進行處理的一門學科,它是一門新興的學科,同時又是綜合性的多學科領域剛也涉及面很廣的交叉學科。
第二章 課程設計要求及系統原理
2.1 課程設計基本要求
(1)學會MATLAB的使用,掌握MATLAB的程序設計方法;
(2)掌握在windows環境下語音信號的采集方法;
(3)掌握數字信號處理的基本概念,基本理論和基本方法;
(4)掌握MATLAB設計方法;
(5)學會用MATLAB對信號進行分析和處理。
2.2 系統基本原理
語音采集原理是,人耳能聽到的聲音是一種范圍為20Hz—20kHz,而一般語音頻率最高為3.4kHz。語音的采集是指語音聲波信號經麥克風和高頻放大器轉換成有一定幅度的模擬量電信號,然后再轉換成數字量的全過程。
本次設計的基本原理是對語音的錄音和放音進行數字化控制。其中,關鍵技術在于:為了增加語音存儲時間,提高存儲器的利用率,采用了非失真壓縮算法對語音信號進行壓縮后再存儲,而在回放時再進行解壓縮;同時,對輸入語音信號進行數字濾波以抑制雜音和干擾,從而確保了語音回放的可靠質量。
通過設計一個GUI實驗箱,并添加相應的控制控件,添加一個聲音文件,通過MATLAB編程,使其通過各種按鈕實現語音信號處理的各種功能,最后做成一個完整的語音信號處理實驗箱。
第三章 設計方案論證
3.1 設計理論依據
3.1.1采樣定理:
在進行模擬/數字信號的轉換過程中,當采樣頻率fs.max大于信號中最高頻率fmax的2倍時,則采樣之后的數字信號完整的保留了原始信號中的信號,一般實際應用中保證采樣頻率為信號最高頻率的5—10倍;采樣定理又稱奈奎斯特定理。
3.1.2采樣頻率:
采樣頻率是指計算機每秒鐘采集多少個聲音樣本,是描述聲音文件的音質、音調、衡量聲卡、聲音文件的質量標準。采樣頻率越高,即采樣的間隔時間越短,則在單位時間內計算機得到的聲音樣本數據就越多,對聲音波形的表示也就越精確,采樣頻率與聲音頻率之間有一定的關系,根據奈奎斯特理論,只有采樣頻率高于聲音信號最高頻率的2倍的時候,才能把數字信號表示的聲音還原成為原來的聲音,這就是說采樣頻率是衡量聲卡采集、記錄和還原聲音文件的質量標準。
3.1.3采樣位數與采樣頻率
采樣位數即采樣值或取樣值,用來衡量聲音波動變化的參數,是指聲卡在采集和播放聲音文件時候使用數字聲音信號的二進制為數。采樣頻率是指錄音設備在一秒鐘內對聲音信號的采樣次數,采樣頻率越高聲音的還原就越真實越自然。
采樣位數和采樣頻率對于音頻接口來說是最為重要的兩個基本指標,也是選擇音頻接口的兩個重要標準。無論采樣頻率如何,理論上來說采樣的位數決定了音頻數據最大的力度范圍。每增加一個采樣位數相當于力度范圍增加了6dB。采樣位數越多則捕捉到的信號越精確。對于采樣率來說你可以想象它類似于一個照相機。顯然采樣率越高,計算機提取的聲音越多,對于原始的還原也越加精確。
第四章 圖形用戶界面設計
4.1 圖形用戶界面概念
圖形用戶界面或圖形用戶接口是指采用圖形方式顯示的計算機操作環境由用戶接口。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說更為簡便易用。
GUI是MATLAB提供的圖形用戶界面開發環境,提供了一系列用于創建圖形用戶界面的工具,從而簡化界面布局和編程工作。
4.2用戶界面設計
4.2.1 GUI設計模板
在MATLAB主窗口中,選擇File菜單中的New菜單項,再選擇其中的GUI命令,就會顯示圖形用戶界面的設計模板。
MATLAB為GUI設計一共準備了四個模板,分別是Blank GUI、GUI with Uicontrols、GUI with Axes and Menu、Modal Question Dialog。
當用戶選擇不同的模板時,在GUI設計模板界面的右邊就會顯示出與該模板對應的GUI圖形。
4.2.2 GUI設計窗口
在GUI設計模板中選中一個模板,然后單擊OK按鈕,就會顯示GUI設計窗口,選擇不同的GUI設計模式時,在GUI設計窗口中顯示的結果是不一樣的。
GUI設計窗口由菜單欄、工具欄、空間工具欄以及圖形對象設計區等部分組成。GUI設計窗口的菜單欄有File、Edit、View、Layout、Tools和Help六個菜單項,使用其中的命令可以完成圖形用戶界面的設計操作。
4.2.3 GUI設計窗口的基本操作
(1)前面板的設計:在GUI設計窗口創建圖形對象后,通過雙擊該對象,就會顯示該對象的屬性編輯器。如下圖所示。例如,創建一個Push Button對象,并設計該對象的屬性值。
圖4-1 按鈕屬性編輯器
通過以上的按鈕屬性編輯器可以根據個人情況對按鈕的名稱、顏色、大小等方面的屬性進行修改,使按鈕在視覺上變的更加完美。
(2)按鈕功能的實現:在GUI設計窗口創建按鈕后,通過右鍵單擊按鈕,選擇View callbacks下的callback對相應的按鈕進行編程,使按鈕實現相應的功能,如下圖所示對按鈕的響應功能進行設置。
圖4-2 按鈕功能編輯器
進入到按鈕程序編輯窗口,通過編程即可實現按鈕的相應功能,如下圖:
圖4-3 按鈕的編程實現界面
通過對各個按鈕控件的修改,和對m文件程序的添加就完成對GUI窗口的設計,最后得到的圖形化操作界面如下圖所示:
圖4-4 圖形化操作界面
4.2.4 語音的錄入與打開
在MATLAB中,[y,fa,bits]=wavread(‘Blip’,[N1 N2]);用于讀取語音,7
采樣值放在向y中,fs表示采樣頻率,bits表示采樣位數。[N1 N2]表示讀取從N1點到N2點的值。
Suond(x,fs,bits);用于對聲音的回放,向量y則就代表了一個信號也就是說可以像處理一個信號表達式一樣處理這個聲音信號。
第五章 課程設計的軟件實現
5.1 部分函數語法格式
讀wav文件: x=wavread(‘filename’)數組a及b中元素相乘: a.*b 創建圖形窗口命令: figure 繪圖函數: plot(x)坐標軸: axis([xmin xmax ymin ymax])坐標軸注解: xlabel(‘?’)ylabel(‘?’)圖例注解: legend(‘?’)一階高通濾波器: y=filter([1-0.09375],1,x)分幀函數: f=enframe(x,len,inc)x為輸入語音信號,len指定了幀長,inc指定幀移,函數返回為nXlen的一個矩陣,每一行都是一幀數據。
5.2語音信號處理的相關函數
5.2.1語音信號的短時譜:
周期性聲門波可表示為:
(5-1)其中,g[n]是聲門波的單周期的波形,p[n]是間隔為P的周期采樣序列。當u[n]通過線性非時變聲道,且該聲道的單位沖擊響應為h[n]時,聲道輸出為:
(5-2)為了觀察一段語音,需要降生到輸出乘以一個一時刻τ 為中心的窗函數 w[n,τ] ,即得到:
(5-3)
這段語音信號的頻域表達式為:
(5-4)
即語音信號的譜包絡為
語譜圖就是現實時變頻譜幅度特征的圖形表達式為:
(5-5)
將語音信號短時譜程序寫入到MATLAB中得到單色語譜圖的波形如下:
圖5-1 語音信號單色語譜圖
5.2.2 自相關方法估計語音信號的聲道參數:
由均方預測誤差最小的得到正則方程:
(5-6)
其中,(5-7)
在最佳解時的誤差為
(5-8)
在自相關法中式5-6,式5-8變為
(5-9)
(5-10)由式5-9和式5-10可列出方程組式5-11
(5-11)
解方程組式5-9求出線性預測系數,通過誤差式5-11可求出增益G
(5-12)
加窗后信號頻譜圖如下:
圖5-2 加窗后信號頻譜圖
通過以上的方法,改變參數分別求得4極點模型頻率響應和6極點模型頻率響應,6極點波形如下圖所示:
圖5-3 六極點波形圖
最后通過以上方法用一個函數分別實現以上三個功能,三個波形顯示在一個界面,通過觀察圖形,查看它們之間的分別。三者比較所得到的波形如下:
圖5-4 三者比較波形圖
5.2.3 基音周期檢測
數據為濁音語音信號speech1_10k(10000樣點/秒)用25ms的漢明窗對語音信號speech1_10k進行加窗處理,并畫出所得到的加窗信號的自相關函數,再用根據中心消波法及三電平中心消波法原理改進程序,最后對比中方法基音檢測的效果并分析結果。
實驗原理及方法
(1)自相關檢測原理:對于離散的數字語音信號序列x(n),如果周期N,則自相關函數也是同周期的周期函數。即:x(n)=x(n+N)。清音信號沒有周期性,他的自相關函數也沒有周期。濁音新海具有準周期性。自相關基音檢測正是利用這一性質對語音信號進行基音檢測的。
(2)中心消波法檢測原理:中心消波處理是使用如下圖所示的中心消波函數進行處理的:
圖5-5 中心消波檢測圖
(3)三電平消波法原理:為了減少自相關計算中的乘法運算,可以把上述中心消波以后的信號y(n)的自相關用兩個信號的互相關代替,其中一個信號是y(n)另一個信號是對y(n)進行三電平量化產生的結果。且這個信號有三種可能的取值,因而這里的互相關計算只需要做加減法,而這個互相關序列的周期性與y(n)的自相關序列是近似相同的。
三電平法對語音信號處理得到的波形如下:
圖5-6 三電平法波形圖
中心消波法得到的波形如下圖:
圖5-7 中心消波法波形圖
5.3 GUI實驗箱操作界面設計
通過對各個控件的編程和對參數的設計,最后得到的GUI實驗箱操作界
面如下圖所示,通過界面上的各個按鈕即可實現相應的功能。
圖5-8 GUI實驗箱操作界面
第六章 心得體會
通過本次課程設計完成了對語音信號的讀取與打開,與課題的要求十分相符;初略的完成了界面的設計,但也存在相當的不足,達到了打開語音文件,顯示已定波形。語音信號處理時語音學與數字信號處理技術相結合的交叉學科,將語音當做一種特殊的信號,即一種“復雜向量”來看待。也就是說,體現了數字信號處理技術。
本次課程設計時希望將數字信號處理技術應用與某一實際領域,這里就是指對語音的處理。作為存儲與計算機中的語音信號,其本身就是離散化了的向量,我們只需要將這些離散的量提取出來美酒可以對其進行處理了。
本次課設,用到了處理數字信號的強有力工具MATLAB,通過MATLAB李的幾個命令函數的調用,很輕易的在實際化語音與數字信號的理論之間搭了一座橋。
最后,還利用了MATLAB的另一強大功能——GUI界面設計。設計出了一個建議的用戶應用界面,可以讓人實現界面操作。
通過本次課程設計讓我更加了解了語音信號處理在現實中的強大的應用空間,同時查閱了很多相關的資料,應用MTALAB軟件來完成,熟練掌握了MATLAB軟件,本次課程設計要求用GUI設計模塊,查閱了很多資料,更加深刻的陸奧了了這方面知識。
本次課程設計,我明白了理論的學習需要在實踐中才能得到鞏固。在課程設計中,只有動手慢慢研究,才能真正了解MATLAB軟件平臺中可以直接設計數字濾波器的各個函數的調用,對設計GUI實驗箱的所有函數的運用有了比較好的認識。
通過這個課程設計,我學到了很多MATLAB和語音信號的知識,提高了自己在語音信號設計方面的知識能力,動手能力和思維能力都得到了一定的提升,希望自己以后可以更多的繼續學習這一門課程設計方面的知識。
附 錄
1.源程序代碼:
參考文獻
[1] 劉慶華 陳紫強《基于MATLAB和DSP的語音信號處理課程的建設》 電氣電子教學學報 2006 10(3):124-128 [2] 張力 《MATLAB在語音信號處理輔助教學中的應用》 電氣電子教學學報 2005 27卷2期:96-99 [3] 鄧立新 楊震《信息技術融入“語音信號處理”課程的教學實踐》電氣電子教學學報 2005 27卷5期:13-16 [4] 胡航,《語音信號處理》 哈爾濱工業大學出版社 2005年2月,第二版:135-137 [5] 張平,《MATLAB基礎與應用》 北京航空航天大學出版社 2007,第二版:85-92 [6] 謝德芳 《數字信號處理》 北京科學出版社 2005,第一版
[7] 張雄偉 《現代語音處理技術及應用》 機械工業出版社 2006,第二版 [8] 吳家安 《語音編碼技術及應用》 機械工業出版社 2006 第一版 [9] 劉幺和 宋庭新 《語音識別與控制應用技術》 科學出版社 2008 第二版
[10] 李昌立 吳善培 《數字語音編碼實用教程》 人民郵電出版社 2004 第一版
[11] 姚天仁 《數字語音處理》 華中科技大學出版社 1992 第二版 [12] 朱敏雄 《計算機語音技術(修訂版)》 北京航空航天大學出版社 2002 第一版
[13] 王炳錫 《語音編碼》 西安電子科技大學出版社 2002 第一版