數字信號處理音頻FIR去噪 (基於MATLAB GUI的開發))

數字信號處理音頻FIR去噪(基於MATLAB GUI的開發)

1、內容簡介

       利用MATLAB GUI設計平臺,用窗函數法設計FIR數字濾波器,對所給出的含有噪聲的聲音信號進行數字濾波處理,得到降噪的聲音信號,進行時域頻域分析,同時分析不同窗函數的效果。

2、函數使用

讀取.wav音頻文件函數:audioread();(老版本爲wavread)
MATLAB播放音樂函數:sound();
MATLAB停止播放音樂:clear sound
寫入.wav音頻文件函數:audiowrite();(老版本爲audiowrite)
加入白噪聲:noise=(max(x(:,1))/5)*randn(x,2);
                      y=x+noise;
頻譜分析:    fft();
                      fftshift();
Fir濾波:       fir1(n,Wn,ftype,window);
窗函數選擇: 梯形窗boxcar
                      三角窗triang
                      海明窗hamming
                      漢寧窗hanning
                      布萊克曼窗blackman
                      凱塞窗kaiser

3、實現功能

**音頻濾波GUI界面**
實現的功能有:

1、打開文件:選擇路徑打開wav格式的音頻文件,自動生成音頻的原始波形與頻譜。

2、加入噪聲:有兩種噪聲可以選擇加入,一種是白噪聲,其頻率蔓延整個頻譜;一種是特定頻率的噪聲,可通過輸入頻率加入單一頻率的噪聲。加入噪聲後自動繪製加入噪聲後的波形與頻譜。

3、濾波處理:首先輸入濾波器通/阻帶的開始頻率與截止頻率(若爲低/高通類型濾波,則只需輸入開始頻率;若爲帶通/阻類型,則開始與截止都要輸入;輸入頻率值爲真實頻率值,可根據頻譜圖進行判斷 ),之後選取窗函數和濾波類型,將會生成濾波處理後的波形與頻譜。

4、音頻播放/停止:可隨時播放/停止原始、加噪、濾波處理後的音頻。

5、圖片導出:將波形、頻譜圖片一張張導出保存,可選的格式有jpg、png、bmp、eps。

6、保存文件:將加躁/濾波後的音頻導出保存。

4、操作實例

選取音樂“盧本偉語音包”,轉換爲wav格式導入,得到結果如下
在這裏插入圖片描述
添加白噪聲後,此時播放音頻能聽到顯著雜音。而從原始信號的頻譜來看,初始音頻的頻率主要集中在0-1000Hz,因此我們可以選用低通濾波器,阻帶開始頻率設爲1000Hz,選用矩形窗進行濾波,得到結果如下:在這裏插入圖片描述
由於白噪聲遍佈於整個頻譜,對於噪聲頻譜於音頻頻譜的重疊部分,我們無法通過FIR濾波器進行濾除,依然會有小部分雜音存在。若噪聲爲特定單一頻率的噪聲,我們可以較好地將其去除。對於該音頻添加5000Hz的特定頻率,通過設計帶阻濾波器,阻帶範圍爲4500-5500Hz對其進行濾波,如下圖所示:
在這裏插入圖片描述

5、窗函數對比

仍選用上例中的5000Hz頻率噪聲,同時增加噪聲幅度,如下圖所示:在這裏插入圖片描述
選用帶阻濾波器,設置阻帶範圍4000-6000Hz,觀察各窗函數對其濾波的效果。(每行從左到右分別是:矩形窗,三角窗,海明窗,漢寧窗,布萊克曼窗,凱塞窗,下同)

在這裏插入圖片描述
在這裏插入圖片描述

該種情況下濾波效果的總體排序爲:凱瑟窗>矩形窗>漢寧窗>海明窗=三角窗>布萊克曼窗。

6、源代碼

代碼較長,以上傳至CSDN資源,無需積分免費下載
https://download.csdn.net/download/qq_42679573/12356129
本項目是本人基於其他濾波GUI設計的二次開發,大部分內容均爲原創,若有侵權請及時告知。
新人學生博主,若覺得有用的話請關注一波呦~

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