數字信號處理綜合實驗 ——提取混音音頻

在學習了IIR濾波器的設計後,可以試圖對一個混頻信號進行濾波處理,下面附上我的實驗報告。

 

一、實驗目的

設計合適的IIR數字濾波器分別提取給定的混音文件中蛐蛐叫聲和直升飛機的轟鳴聲。獨立編寫實現上述功能的MATLAB程序,並生成提取後的音頻文件。熟悉MATLAB變成,以及數字信號處理相關的MATLAB函數和命令。

 

二、實驗內容

(1)首先在電腦上安裝matlab2014及其相應組件,並將數字信號處理實驗指導書上的代碼示例進行練習,熟悉matlab的編程。

(2)藉助audioread函數獲取該音頻文件的音頻信號

(3)然後通過matlab畫出混音信號在時域下的幅度曲線、在頻域下的聲圖譜,觀察其頻率分佈,可以看出飛機的轟鳴聲位於0-2000Hz的範圍內,三聲蟬鳴則位於4000-5500Hz的範圍內,在清楚了所要濾波的範圍之後,即可開始設計IIR濾波器。

(4)低通濾波器:這裏取通帶頻率爲2500hz,阻帶頻率爲4000hz,通帶最大衰減爲0.1dB,阻帶最小衰減爲60dB。我選擇的是用已有的buttord計算出最符合條件的巴特沃思濾波器的階數n和截止頻率,再用butter計算n階巴特沃斯數字濾波器系統函數分子、分母多項式的係數向量b、a。求出之後使用filter函數進行濾波。

帶通濾波器:通帶頻率爲[4000,6000]hz,阻帶頻率爲[3500,6500]hz, 通帶最大衰減爲0.1dB,阻帶最小衰減爲60dB。我選擇的是用已有的buttord計算出最符合條件的巴特沃思濾波器的階數n和截止頻率,再用butter計算n階巴特沃斯數字濾波器系統函數分子、分母多項式的係數向量b、a。求出之後使用filter函數進行濾波。

 

(5)最後再將濾波後的音頻通過函數audiowrite重新生成音頻文件,就分別得到了蟬鳴和飛機轟鳴聲兩個文件。

三、實驗步驟

(1)通過audioread函數獲取該音頻文件的音頻信號

(2)通過plot()spectrogram()函數畫出混音信號在時域下的幅度曲線、在頻域下的聲圖譜

(3)通過cheb1ord() butter()函數設計IIR低通濾波器和帶通濾波器

4)通過filter()函數進行濾波,並畫出濾波後的頻域特徵和時域特徵

5)通過audiowrite()函數重製濾波後的音頻文件

 

 

 

四、實驗程序

%混音信號繪圖程序

[sampledata,FS] = audioread('C:\Users\Administrator\Desktop\Êý×ÖÐźŴ¦Àí\mixed.wav');

plot(0:(1/FS):4.5873,sampledata);

spectrogram(sampledata,128,120,128,FS);

 

 

 

 

%低通濾波器程序

[sampledata,FS] = audioread('C:\Users\Administrator\Desktop\Êý×ÖÐźŴ¦Àí\mixed.wav');

wp=2500;

ws=4000;

rp=0.1;

rs=60;

wpp=wp/(FS/2);

wss=ws/(FS/2);

[N,Wn]=cheb1ord(wpp,wss,rp,rs,'s');

[B,A]=butter(N,Wn);

y=filter(B,A,sampledata);

spectrogram(y,128,120,128,FS);

audiowrite('plane.wav',y,FS);

 

 

 

%帶通濾波器程序

[sampledata,FS] = audioread('C:\Users\Administrator\Desktop\Êý×ÖÐźŴ¦Àí\mixed.wav');

wp=[4000,6000];

ws=[3500,6500];

rp=0.1;

rs=60;

wpp=wp/(FS/2);

wss=ws/(FS/2);

[N,Wn]=cheb1ord(wpp,wss,rp,rs,'s');

[B,A]=butter(N,Wn);

y=filter(B,A,sampledata);

spectrogram(y,128,120,128,FS);

audiowrite('insects.wav',y,FS);

 

 

五、實驗結果

(一)混音信號在時域下的幅度曲線

 

(二)在頻域下的聲圖譜

 

 

 

(三)低通濾波器輸出信號的頻域特徵和時域特徵曲線

 

(四)帶通濾波器輸出信號的頻域特徵和時域特徵曲線

 

 

 

 

(五)通過濾波器得到的音頻文件

 

六、實驗心得

按照老師說的我又通過高通濾波器對蟬鳴進行濾波,發現也可以的,十分有成就感,更加加深了我對數字信號處理的熱愛和理解。以前完全不瞭解音頻信號,通過這次實驗我看到了音頻信號的本質,處理方法等等,對我來講可謂是受益匪淺啊。

以往都是通過課本來感性的認知語音信號,通過本次的課程設計,讓我對語音信號有了一個較爲實際的認識。於此同時,讓我再次把數字信號處理及數字濾波器的設計方法重新進行了複習和學習。而對於Matlab,也再次讓我感受到了其功能的強大。最爲重要的是,本次課程設計讓我重新審視了學習的過程:只去做實驗是不行的,首先還是要思考,遇到了問題查書籍,百度搜索也只是一種手段,更加重要的是想,再理解,只有這樣才能真正的做好實驗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章