基于MATLAB的語音信號采集與處理課程設計_第1頁
基于MATLAB的語音信號采集與處理課程設計_第2頁
基于MATLAB的語音信號采集與處理課程設計_第3頁
基于MATLAB的語音信號采集與處理課程設計_第4頁
基于MATLAB的語音信號采集與處理課程設計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 成績 課程設計報告 題 目:基于MATLAB的語音信號采集與處理學生姓名: 學生學號: 系 別: 電氣信息工程學院 專 業: 電子信息工程 屆 別: 2013 指導教師: 基于MATLAB的語音信號采集與處理學生:指導教師:電氣信息工程學院電子與通信工程系1 課程設計的任務與要求1.1 課程設計的任務 利用MATLAB對語音信號進行分析和處理,采集語音信號后,利用MATLAB軟件平臺進行頻譜分析;并對所采集的語音信號加入干擾噪聲,對加入噪聲的信號進行頻譜分析,設計合適的濾波器濾除噪聲,恢復原信號。語音信號的“ 短時譜”對于非平穩信號, 它是非周期的, 頻譜隨時間連續變化, 因此由傅里葉變換得

2、到的頻譜無法獲知其在各個時刻的頻譜特性。如果利用加窗的方法從語音流中取出其中一個短斷, 再進行傅里葉變換, 就可以得到該語音的短時譜。1.2 課程設計的要求本次課程設計的課題為基于MATLAB的語音信號采集與處理,學會運用MATLAB的信號處理功能,采集語音信號,并對語音信號進行濾波及變換處理,觀察其時域和頻域特性,加深對信號處理理論的理解,并為今后熟練使用MATLAB進行系統的分析仿真和設計奠定基礎。此次實習課程主要是為了進一步熟悉對matlab軟件的使用,以及學會利用matlab對聲音信號這種實際問題進行處理,將理論應用于實際,加深對它的理解。1.3 課程設計的研究基礎信號與系統、Matl

3、ab程序設計及應用2基于MATLAB的語音信號采集與處理方案的制定(1). 語音信號的采集及分析基于聲卡進行數字信號的采集。將話筒插入計算機的語音輸入插口上,啟動錄音機。按下錄音按鈕,對話筒說話,說完后停止錄音。要保存文件時,利用了計算機上的A/D轉換器,把模擬的聲音信號變成了離散的量化了的數字信號,放音時,它又通過D/A轉換器,把保存的數字數據恢復為原來的模擬的聲音信號。在 Matlab軟件平臺下可以利用函數wavread對語音信號進行采樣,得到了聲音數據變量x1,同時把x1的采樣頻率fs=22050Hz和數據位Nbits=16Bit放進了MATALB的工作空間。圖figure 1為原始語音

4、信號的時域圖形。從圖中可以看出在時域環境下,信號呈現出6不規則的信號峰值。通過freqz函數繪制原始語音信號的頻率響應圖figure 2 。然后對語音信號進行頻譜分析,在Matlab中可以利用函數fft對信號行快速傅里葉變換,得到信號的頻譜圖figure 3,從圖中可以看出對各個頻點上的隨機信號在頻域進行抽樣 ,抽樣頻率為 22050Hz。(2). 給原始信號加上一個高頻噪聲在Matlab中人為設計一個固定頻率5500Hz的噪聲干擾信號。噪聲信號通常為隨機序列,在本設計中用正弦序列代替,干擾信號構建命令函數為d=Au*sin(2*pi*5500*t)',給出的干擾信號為一個正弦信號,針

5、對上面的語音信號 ,采集了其中一段。再對噪音信號進行頻譜變換得到其頻譜圖,從圖中可以看出干擾信號,在4000Hz和 6000Hz頻點處有一高峰 ,其中 5500Hz 正是本設計所要利用的。(3). 設計一個濾波器,濾除高頻噪聲由模擬濾波器變換為數字濾波器時,采用的是雙線性變換法, 它保留的是從模擬到數字域的系統函數表示。在濾波器的選取時, 由于設計方法的側重點不同, 作出比較是困難的。如果FIR濾波器情況下,最優的設計將是橢圓濾波器。本設計是用雙線性變換法設計BW帶阻型濾波器的。在 MATLAB中 ,可以利用函數 butterworth,設計FIR濾波器,利用 MATLAB 中的函數freqz

6、 畫出各濾波器的頻率響應。用設計好的帶阻濾波器對含噪語音信號進行濾波,在Matlab中 FIR濾波器利用函數fftfilt對信號進行濾波,FIR濾波器利用函數filter對信號進行濾波。在一個窗口同時畫出濾波前后的波形及頻譜。從圖中可以看出 ,5500Hz看到的高峰消失了 ,語音信號與開始的一樣 ,濾波器成功的濾除了干擾信號。利用MATLAB對語音信號進行分析和處理,采集語音信號后,利用MATLAB軟件平臺進行頻譜分析;并對所采集的語音信號加入干擾噪聲,對加入噪聲的信號進行頻譜分析,設計合適的濾波器濾除噪聲,恢復原信號。3 基于MATLAB的語音信號采集與處理方案的設計設計步驟:1)打開Mat

7、lab軟件;2)點擊File新建M文件;3)在編輯框內寫入系統Matlab程序;4)點擊保存并運行程序,顯示仿真圖形。4 基于MATLAB的語音信號采集與處理的仿真與調試4.1 仿真軟件介紹Matlab是一種交互式的、以矩陣為基礎的軟件開發環境,它用于科學和工程的計算與可視化。Matlab的編程功能簡單,并且很容易擴展和創造新的命令與函數。應用Matlab可方便地解決復雜數值計算問題。Matlab具有強大的Simulink動態仿真環境,可以實現可視化建模和多工作環境間文件互用和數據交換。Simulink支持連續、離散及兩者混合的線性和非線性系統,也支持多種采樣速率的多速率系統;Simulink

8、為用戶提供了用方框圖進行建模的圖形接口,它與傳統的仿真軟件包用差分方程和微分方程建模相比,更直觀、方便和靈活。用戶可以在Matlab和Simulink兩種環境下對自己的模型進行仿真、分析和修改。用于實現通信仿真的通信工具包(Communication toolbox,也叫Commlib,通信工具箱)是Matlab語言中的一個科學性工具包,提供通信領域中計算、研究模擬發展、系統設計和分析的功能,可以在Matlab環境下獨立使用,也可以配合Simulink使用。另外,Matlab的圖形界面功能GUI(Graphical User Interface)能為仿真系統生成一個人機交互界面,便于仿真系統的

9、操作。因此,Matlab在通信系統仿真中得到了廣泛應用,本文也選用該工具對數字調制系統進行仿真。4.2 系統仿真實現 1用MATLAB對原始語音信號進行分析,畫出它的時域波形和頻譜程序:fs=22050; %語音信號采樣頻率為22050x1=readwav('c.wav'); %讀取語音信號的數據,賦給變量x1,sound(x1,22050); %播放語音信號y1=fft(x1,1024); %對信號做1024點FFT變換f=fs*(0:511)/1024; %將0到511,步長為1的序列的值與fs相乘并除以1024的值,賦值給ffigure(1) %創建圖形窗1plot(x1

10、) %做原始語音信號的時域圖形title('原始語音信號');xlabel('time n'); %x軸的名字是“time n”ylabel('fuzhi n'); %y軸的名字是“fuzhi n”figure(2)freqz(x1) %繪制原始語音信號的頻率響應圖title('頻率響應圖')figure(3)subplot(2,1,1); %創建兩行一列繪圖區間的第1個繪圖區間 plot(abs(y1(1:512) %做原始語音信號的FFT頻譜圖title('原始語音信號FFT頻譜')subplot(2,1,2)

11、;plot(f,abs(y1(1:512); %abs是絕對值,plot是直角坐標下線性刻度曲線title('原始語音信號頻譜')xlabel('Hz');ylabel('幅值');時域波形和頻譜:圖1 原始語音信號圖2 語音信號頻率響應圖圖3 原始語音信號FFT與信號頻譜2. 給原始的語音信號加上一個高頻余弦噪聲,頻率為5500hz。對加噪后的語音進行分析,并畫出其信號時域和頻譜圖。程序:fs=22050; x1=wavread('c.wav'); %讀取語音信號的數據,賦給變量x1f=fs*(0:511)/1024; %將0到

12、511,步長為1的序列的值與fs相乘并除以1024的值,賦值給ft=0:1/fs:(length(x1)-1)/fs; %將0到x1的長度減1后的值除以fs的值,且步長為1/fs的值,的序列的值,賦予tAu=0.03; %噪聲幅值d=Au*sin(2*pi*5500*t)' %所加的噪聲是正弦信號x2=x1+d; %將正弦信號噪聲加在語音信號上sound(x2,22050); %播放語音信號y1=fft(x1,1024); %對信號y1做1024點FFT變換y2=fft(x2,1024); %對信號y2做1024點FFT變換figure(1); %創建圖形窗1plot(t,x2); %

13、做加噪后的信號時域圖形(繪出t對x2的線性圖)title('加噪后的信號');xlabel('time n'); %x軸的名字是“time n”ylabel('fuzhi n'); %y軸的名字是“fuzhi n”figure(2) %創建圖形窗2subplot(2,1,1); % 創建兩行一列繪圖區間的第1個繪圖區間plot(f,abs(y1(1:512); %做原始語音信號的頻譜圖title('原始語音信號頻譜');xlabel('Hz'); %x軸的名字是“time n”ylabel('fuzhi&#

14、39;); % y軸的名字是“fuzhi”subplot(2,1,2); %創建兩行一列繪圖區間的第2個繪圖區間plot(f,abs(y2(1:512); %做加噪后的語音信號的頻譜圖(abs是絕對值,plot是直角坐標下線性刻度曲線)title('加噪后的信號頻譜');xlabel('Hz'); %x軸的名字是“time n”ylabel('fuzhi'); % y軸的名字是“fuzhi”時域波形和頻譜: 圖4 加噪后的信號時域圖圖5 原始信號與加噪后信號頻譜對比與原始信號對比,區別:先原始信號沒加噪音之前0到2000有幅值,在4000到600

15、0之間沒有幅值,但是在加了噪音之后4000到6000之間出現最大幅值12,超出正常值。如圖5原始信號與加噪后信號頻譜對比圖所示。3. 設計合適的濾波器,濾除高頻噪聲,繪出濾波后的信號頻域和時域波形:程序:fs=22050;x,fs,Nbit=readwav('c.wav');sound(x,fs);t=0:1/22050:(length(x)-1)/22050;figure(1)plot(x)title('原始語音信號');xlabel('time n');ylabel('fuzhi');figure(2)freqz(x);tit

16、le('頻率響應圖');n=length(x);y1=fft(x,n);y2=fftshift(x);f=0:fs/n:fs*(n-1)/n;figure(3)subplot(2,1,1);plot(abs(y2);title('原始語音信號FFT頻譜');subplot(2,1,2)plot(f,abs(y2);title('原始語音信號頻譜'); %加噪聲k=1:1:n;c1=10*sin(2*pi*2000*k);figure(4)plot(k,c1)title('噪聲時域圖');figure(5)freqz(c1);tit

17、le('噪聲信號頻率響應')s=length(c1);xc=fft(c1,s);xcc=fftshift(xc);f=0:fs/s:fs*(s-1)/s;figure(6)plot(f,abs(xcc)title('噪聲信號頻譜圖'); %噪聲與原始信號疊加z=x'+c1;y3=fft(z,s);y4=fftshift(y3);f=0:fs/s:fs*(s-1)/s;figure(7)plot(f,abs(y4);axis(0 8000 0 400);title('含語音信號的頻譜');figure(8)subplot(2,1,1);pl

18、ot(f,abs(y4)title('加噪音后的語音頻譜')%用雙線性變換法設計巴特沃思低通濾波器wp=0.25*pi; %通帶截止頻率ws=0.3*pi; %阻帶截止頻率Rp=1; %通帶最大衰減(db)Rs=15; %阻帶最大衰減(db)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'); %選擇濾波器的最小階數(估算得到Butterworth低通濾波器的最小階數N和3dB截止頻率W

19、c)Z,P,K=buttap(N); %創建Butterworth低通濾波器原型Bap,Aap=zp2tf(Z,P,K); %將零極點增益轉換為普遍分子,分母b,a=lp2lp(Bap,Aap,Wn); %將普遍的分子和分母轉換為以Wn為截止頻率bz,az=bilinear(b,a,Fs); %用雙線性變換法實現模擬濾波器到數字濾波器的轉換(模擬轉換為數字)H,W=freqz(bz,az); %求頻率響應figure(9)plot(W*Fs/(2*pi),abs(H) %繪制Butterworth低通濾波器頻率響應曲線grid %添加圖格xlabel('頻率Hz')ylabel

20、('頻率響應幅度')title('Butterworth')f1=filter(bz,az,z); %利用上面已做好的濾波器(已bz和az為特征的濾波器)對x2信號進行濾波,賦值給f1figure(10)subplot(2,1,1) %創建兩行一列繪圖區間的第1繪圖區間plot(t,z) %做加噪后的信號時域圖形title('濾波前的時域波形');subplot(2,1,2) %創建兩行一列繪圖區間的第2繪圖區間plot(t,f1); title('濾波后的時域波形');sound(f1,22050); %播放語音信號p=leng

21、th(f1);F0=fft(f1,p);f=0:fs/p:fs*(s-1)/p;figure(11)y2=fft(z,1024); %對信號y2做1024點FFT變換subplot(2,1,1); %創建兩行一列繪圖區間的第1繪圖區間plot(f,abs(y4); title('濾波前的頻譜')xlabel('Hz'); %x軸的名字是“Hz”ylabel('fuzhi'); %y軸的名字是“fuzhi”subplot(2,1,2)F1=plot(f,abs(F0); title('濾波后的頻譜')xlabel('Hz&#

22、39;);ylabel('fuzhi')時域波形和頻譜: 圖6 低通濾波器頻率響應曲線圖7 濾波前后時域波形圖 圖8 濾波前后頻譜圖與原噪音信號對比,區別:通過對比分析可知,濾波后的輸出波形和原始語音加噪聲信號的圖形發生了一些變化,在3000-6000Hz之間的信號消失,出現0-1000和7000-8000之間的信號。濾波后的輸出波形明顯在對應時間幅度比原語音加噪聲信號的要小,而且濾波的效果也與,已很接近原來的聲音,人耳幾乎辨別不出 。從頻譜圖中我們還可以看出聲音的能量信號主要集中在低頻部分,說明高頻語音信號被濾出,濾波器達到既定要求。5 總結 5.1 設計小結 利用MATLAB對語音信號進行分析和處理,采集語音信號后,利用MATLAB軟件平臺進行頻譜分析;并對所采集的語音信號加入干擾噪聲,對加入噪聲的信號進行頻譜分析,設計合適的濾波器濾除噪聲,恢復原信號。 5.2 收獲體會 通過MATLAB課程設計,我對MATLAB這個仿真軟件有了更進一步的認識和了解。在設計過程中,我通過自己摸索,查閱資料,并且在老師的指導下完成了:語音信號的采集及分析;給原始信號加上一個高頻噪聲;設計一個濾波器,濾除高頻噪聲;并最終將課程設計報告總結完畢。在整個設計過程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論