【数字信号处理课程设计】基于MATLAB实现语音信号的采集与处理(偏重滤波)
目錄
一、目標與任務
二、原理介紹
2.1 錄音原理
2.2 濾波器的設計原理及設計方法
2.3 IIR 數字濾波器設計原理
2.4 雙線性變換法
三、GUI界面設計與實現
四、基于MATLAB仿真
4.1實驗過程
4.2 結果分析
五、總結
5.1 函數用法總結
5.2?心得體會
六、參考文獻
這個項目在我的B站上有專門的視頻演示:
【數字信號處理課程設計】基于MATLAB實現語音信號的采集與處理(側重濾波)+【通信原理課程設計】基于MATLAB實現的信源編碼系統仿真 +【GUI設計】_嗶哩嗶哩_bilibili
一、目標與任務
1、 語音信號的采集。利用 Windows 下的錄音機,錄制一段自己的話音,時間在 1s 內,然后在 Matlab 軟件平臺下,利用函數 wavread 對語音信號進行采樣,記住采樣頻率和采樣點數。
2、語音信號的頻譜分析。在 Matlab 中,可以利用函數 fft 對信號進行快速傅立葉變換,得到信號的 頻譜特性,要求學生首先畫出語音信號的時域波形,然后對語音信號進行頻譜分析。
3、設計數字濾波器和畫出其頻率響應給出各濾波器的性能指標; 給定濾波器的性能指標如下:
(1)低通濾波器的性能指標:fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB.
(2)高通濾波器的性能指標:fc=4800Hz,fb=5000Hz,As=100dB,Ap=1dB.
(3)帶通濾波器的性能指標: fb1=1200Hz, fb2=3000Hz,fc1=1000Hz, fc2=3200Hz,As=100dB,Ap=1dB. 采用窗函數法和雙線性變換法設計上面要求的 3 種濾波器,并畫出濾波 器的頻率響應;
4、用濾波器對信號進行濾波 ,然后用自己設計的濾波器對采集到的信號進行濾波,畫出濾波后信號的 時域波形及頻譜,并對濾波前后的信號進行對比,分析信號的變化;
5、回放語音信號,分析濾波前后的語音變化;設計系統界面 為了使編制的程序操作方便,設計處理系統的用戶界面,在所設計的系統界面上可以實現上述要求中的包括采集、分析、濾波等全部內容,并能夠選 擇濾波器的類型,輸入濾波器的參數、顯示濾波器的頻率響應等。
二、原理介紹
2.1 錄音原理
????????Matlab 中 有 兩 個 函 數 可 以 用 于 實 現 錄 音 功 能 , 一 個 是waverecord 函數調用 windows 音頻設備進行錄音,主要用于實時語音采集。第二個是使用Matlab 中的 wavread 函數也可以進行語音采集。不過 wavread 函數只能讀取計算機中已經有的“.wav” 文件,也就是說必須事先使用 windows 的錄音機等設備把有關的語音資料錄制并存儲為“.wav” 文件。顯然 wavread 函數不能用于實時語音信號采集。另外語音采集的頻率和精度不能改變。 回放時也有兩個函數可以選用。 Sound 函數和 wavplay,只不過后者的功能沒有前者強大。不過在本設計中主要是對已有的信號進行處理,所以選用wavread 錄放。同時,由于信號的時域描述只能反映信號的幅值隨時間的變化情況, 除只有一個頻率分量的簡諧波外般很難明確揭示信號的頻率組成和各頻率分量的大小, 因此, 我們要把它轉換成頻域來分析,它能夠提供比時域信號波形更直觀,豐富的信息。
2.2 濾波器的設計原理及設計方法
FIR 濾波器的設計問題在于尋求一系統函數H(z) ,使其頻率響應H(ejω) 逼近濾波器要求的理想頻率響應Hd(ejω) 其對應的單位脈沖響應hd(n) 。
1、用窗函數設計FIR 濾波器的基本方法
設計思想:從時域從發,設計h(n) ?逼近理想hd(n) 。設理想濾波器Hd(ejω) 的單位脈沖響應為hd(n) 。以低通線性相位 FIR 數字濾波器為例。
hd(n) 一般是無限長的,且是非因果的,不能直接作為FIR 濾波器的單位脈沖響應。要想得到一個因果的有限長的濾波器 h(n) ,最直接的方法是截斷h(n)=hd(n)w(n) ,即截取為有限長因果序列,并用合適的窗函數進行加權作為FIR 濾波器的單位脈沖響應。按照線性相位濾波器的要求,h(n) 必須是偶對稱的。對稱中心必須等于濾波器的延時常數,即
用矩形窗設計的FIR 低通濾波器,所設計濾波器的幅度函數在通帶和阻帶都呈現出振蕩現象,且最大波紋大約為幅度的 9%,這個現象稱為吉布斯(Gibbs)效應。為了消除吉布斯效應,一般采用其他類型的窗函數。
2、典型的窗函數
(1)矩形窗(Rectangle Window)
其頻率響應和幅度響應分別為:
(2)三角形窗(Bartlett Window)
其頻率響應為:
(3)漢寧(Hanning)窗,又稱升余弦窗
其頻率響應和幅度響應分別為:
(4)漢明(Hamming)窗,又稱改進的升余弦窗
其幅度響應為:
(5)布萊克曼(Blankman)窗,又稱二階升余弦窗
其幅度響應為:
(6)凱澤(Kaiser)窗
其中:β是一個可選參數,用來選擇主瓣寬度和旁瓣衰減之間的交換關系,一般說來,β 越大,過渡帶越寬,阻帶越小衰減也越大。 是第一類修正零階貝塞爾函數。
若阻帶最小衰減表示為As=-20log10?δ ,β 的確定可采用下述經驗公式:
若濾波器通帶和阻帶波紋相等即δp=δs 時,濾波器節數可通過
下式確定:
式中:
3.利用窗函數設計FIR 濾波器的具體步驟如下:
(1)按允許的過渡帶寬度△ω 及阻帶衰減 AS 選擇合適的窗函數,并估計節數N:其中A 由窗函數的類型決定。
(2)由給定的濾波器的幅頻響應參數求出理想的單位脈沖響應hd(n) 。
(3)確定延時值。
(4)計算濾波器的單位取樣響應h(n) ,
??????(5)驗算技術指標是否滿足要求。
2.3 IIR 數字濾波器設計原理
IIR 數字濾波器是一種離散時間系統,其系統函數為
??????假設 M≤ N, 當M> N時, 系統函數可以看作一個 IIR 的子系統和一個 (M-N)的FIR子系統的級聯。 IIR 數字濾波器的設計實際上是求解濾波器的系數 ak ?和 bk ,它是數學上的一種逼近問題, 即在規定意義上 (通常采用最小均方誤差準則) 去逼近系統的特性。 如果在 S平面上去逼近, 就得到模擬濾波器; 如果在 z平面上去逼近,就得到數字濾波器。
設計通數字濾波器通常可以歸納為如圖所示的兩種常用方法。
?圖 2-1 數字帶通濾波器設計的兩種方法
方法 1: 首先設計一個模擬原型低通濾波器,然后通過頻率變換成所需要的模擬高通濾波器,最后再使用沖激不變法或雙線性變換成相應的數字高通濾波器。
方法 2: 先設計一個模擬原型低通濾波器,然后采用沖激響應不變法或雙線性變換法將它轉換成數字原型低通濾波器, 最后通過頻率變換把數字原型低通濾波器變換成所需要的數字高通濾波器。
本課程設計采用第一種設計方法, 先構造一個巴特沃斯模擬低通濾波器, 然后將模擬低通濾波器轉換成模擬高通濾波器, 最后利用雙線性變換將模擬高通濾波器轉換成數字高通濾波器。
2.4 雙線性變換法
為了克服沖激響應法可能產生的頻率響應的混疊失真, 這是因為從 S 平面到Z平面是多值的映射關系所造成的。 為了克服這一缺點, 可以采用非線性頻率壓縮方法,將整個頻率軸上的頻率范圍壓縮到 - π / T~π / T 之間,再用 z=esT 轉換到 Z 平面上。也就是說,第一步先將整個 S平面壓縮映射到 S1 平面的 - π / T~π/ T 一條橫帶里;第二步再通過標準變換關系 z=esT 將此橫帶變換到整個 Z 平面上去。 這樣就使 S平面與 Z 平面建立了一一對應的單值關系, 消除了多值變換性,
也就消除了頻譜混疊現象,映射關系如圖 2-2
圖 2-2 雙線性變換的映射關系
為了將 S平面的整個虛軸 j Ω 壓縮到 S1平面 j Ω 1 軸上的 - π / T 到π / T段上,可以通過以下的正切變換實現
式中 , T 仍是采樣間隔。
當Ω 1 由- π / T 經過 0 變化到 π / T 時, Ω 由- ∞經過 0 變化到 +∞,也即映射了整個 j Ω 軸。將上式寫成
將此關系解析延拓到整個 S 平面和 S1平面,令 j Ω =s, j Ω 1=s1,則得
再將 S1平面通過以下標準變換關系映射到 Z 平面z=esT 從而得到 S 平面和 Z 平面的單值映射關系為:
這兩個關系式是 S 平面與 Z 平面之間的單值映射關系, 這種變換都是兩個線性函數之比,因此稱為雙線性變換
首先 , 把z=eiw 可得
即 S 平面的虛軸映射到 Z 平面的單位圓。
其次,將 s=σ+jw ?代入,得
因此
由此看出,當 <0 時, | z|<1 ;當 >0 時, | z|>1 。也就是說, S 平面的左半平面映射到 Z 平面的單位圓內, S平面的右半平面映射到 Z 平面的單位圓外,S平面的虛軸映射到 Z 平面的單位圓上。因此,穩定的模擬濾波器經雙線性變換后所得的數字濾波器也一定是穩定的。
雙線性變換法優缺點: 雙線性變換法與脈沖響應不變法相比, 其主要的優點是避免了頻率響應的混疊現象。 這是因為 S平面與 Z平面是單值的一一對應關系。S 平面整個 j Ω 軸單值地對應于 Z 平面單位圓一周,即頻率軸是單值變換關系。
這個關系重寫如下:
上式表明, S平面上 Ω 與 Z 平面的 ω 成非線性的正切關系,如圖 2-3 所示。
由圖 2-3 看出, 在零頻率附近, 模擬角頻率 Ω 與數字頻率 ω 之間的變換關系接近于線性關系;但當 Ω 進一步增加時, ω 增長得越來越慢,最后當 Ω →∞時,ω 終止在折疊頻率 ω =π 處,因而雙線性變換就不會出現由于高頻部分超過折疊頻率而混淆到低頻部分去的現象,從而消除了頻率混疊現象。
圖 2-3 雙線性變換法的頻率變換關系
三、GUI界面設計與實現
頁面設計如圖3-1所示:
圖 3-1 GUI界面
四、基于MATLAB仿真
4.1實驗過程
(1)加入噪聲。
????????向原始信號中加入正弦干擾噪聲或高斯噪聲,加入正弦干擾噪聲后,如圖4-1所示。
圖 4-1 加入正弦干擾噪聲前后
????????加入高斯干擾噪聲后,如圖4-2所示。
圖 4-2 加入高斯噪聲前后
(2)濾波器的頻譜特性
- IIR線性濾波器
????????巴特沃斯濾波器低通幅頻相頻特性如圖4-3所示
圖 4-3 巴特沃斯低通濾波器幅頻相頻特性
????????車比雪夫濾波器高通幅頻相頻特性如圖4-4所示
圖 4-4 車比雪夫高通濾波器幅頻相頻特性
????????橢圓濾波器帶通幅頻相頻特性如圖4-5所示
圖 4-5 橢圓型帶通濾波器幅頻相頻特性
- ?FIR窗函數濾波器
?????????Blackman窗低通抽樣響應和頻譜特性如圖4-6所示
圖 4-6 Blackman窗低通抽樣響應和頻譜
?????????Kaiser窗高通抽樣響應和頻譜特性如圖4-7所示
圖 4-7 kaiser窗低通抽樣響應和頻譜
(3)濾波前后波形
????????低通濾波后,如圖4-8所示。
圖 4-8 低通濾波
????????高通濾波后,如圖4-9所示。
圖 4-9 高通濾波
????????帶通濾波后,如圖4-10所示。
圖 4-10 帶通濾波
4.2 結果分析
1.通過本次設計發現,當抽樣率Fs大于15000Hz時,濾波器的設計除低通外,高通和帶通都會出現異常,主要異常為矩陣奇異值,或者NAN、INF;而Fs小于10000Hz時,低通和帶通設計正常,但高通設計會報錯異常,而Fs取11025Hz時,可以實現設計需求。
2.使用巴特沃斯濾波器,低通、高通、帶通濾波效果都不能實現,而切比雪夫1型濾波器和橢圓濾波器除高通外,低通和帶通效果都很明顯。
3.布萊克曼窗和凱塞窗在阻帶衰落為100dB時設計出的濾波器性能幾乎一致,且除了高通外,低通和帶通對加噪后的音頻濾波效果都很明顯。
4.加正弦噪聲時,由于本設計所加單頻主要位于100Hz處,所以通過修改適當的濾波器參數指標,信噪比較大或較小時,高通和帶通都能很好的濾除噪聲。
5.加高斯噪聲時,無論采用哪種濾波器都不能完美的濾除噪聲,但由于高斯噪聲的隨機特性,會發現加高斯噪聲后頻譜會出現很多尖峰,所以采用低通濾波器,在信噪比較小,即噪聲干擾很大的時候,濾波效果會很明顯。
五、總結
5.1 函數用法總結
1.[n, Wnj= buttord(Wp, Ws,Rp,Rs)
其中Wp和ws分別是通帶和阻帶的拐角頻率(截止頻率),其取值范圍為0至1之間。當其值為1時代表采樣頻率的一半。Rp和Rs分別是通帶和阻帶區的波紋系數。
2.chebyl函數的用法為: [b,a]-chebyl1(n,Rp, Wn,/ftype/)
在使用chebyl函數設計IR濾波器之前,可使用cheblord函數求出濾波器階數n和截止頻率Wn, cheblord函數可在給定濾波器性能的情況下,選擇契比雪夫1型濾波器的最小階和截止頻率Wn.
3.cheblord函數的用法為:[n, Wnj-cheblord(Wp, Ws,Rp,Rs)
其中Wp和Ws分別是通帶和阻帶的拐角頻率(截止頻率),其取值范圍為0至1之間。當其值為1時代表采樣頻率的一半。Rp和Rs分別是通帶和阻帶區的波紋系數。
4.butter函數的用法為:[b,a]=butter(n,Wn,/ftype/)
其中n代表濾波器階數, Wn代表濾波器的截止頻率,這兩個參數可使用buttord函數來確定。buttord函數可在給定濾波器性能的情況下,求出巴特沃斯濾波器的最小階數n,同時給出對應的截止頻率Wn.
5,Butterworth模擬低通濾波器函數語句: [z,p.kj—buttap(n)
其中n為濾波器的階數, z. p、k分別為零點、極點和增益
6. [bz, az]=impinvar (b, atC, FS t, Fp)
式中, b, a為模擬濾波器分子和分母多項式系數向量: Fs為采樣頻率(所濾波數據),單位Hz,缺省時為1Hz.Fp為預畸變頻率(Prewarped frequency) ,是一個“匹配”頻率,在該頻率上,頻率響應在變換前后和模擬頻率可精確匹配
在MATLAB中,函數bilinear采用雙線性變換法實現模擬s域至數字z域的映射,直接用于模擬濾波器變換為數字濾波器。其調用方式為:
[2zd, pd, kd]-bil inear (a, p, k,Fs)
[numd, dend]-bilinear (num, den, Fs)
式中, z,p分別為模擬濾波器零點、極點列向量: k為模擬濾波器的增益:Fs為采樣頻率,單位Hz. zd, pd, kd為數字濾波器的零極點和增益.num, den分別為模擬濾波器傳遞函數分子和分母多項式系數向量,模擬濾波器傳遞函數具有下面的形式:
H(s)-mum(5) mum(1)s+ +mum (mn)s+ num (nn+1)
den (s) den()s"..+den(nd )s + den (nd +1)
nund和dend分別為數字濾波器傳遞函數分子和分母多項式系數向量
7,函數trez用于求數字逃波器的頻率響應,其調用格式為:on[h, w]-]fregz (b, a, nL,'whole']) ;或[h, f]=freqz (b, a, nt,' whole'],Fs); 式中, b,a為數字濾波器分子和分母多項式的系數, n為復數頻率的響應點數,為整數,最好為2的冪,缺省時為512: Fs為采樣頻率,單位Hz,如果給定該值,則f位置輸出為頻率Hz,若沒有給定,則按角頻率(Angular frequency)給定f的頻率矢量:, whole'表示返回的頻率 或 值包含2平面整個單位圓頻率矢量,即0—27:缺省時,頻率f或 值包含z平面上半單位圓(0—x)之間等間距n個點頻率矢量。h為復頻率響應: w為n點頻率向量(單位rad); f為n點頻率向量(Hz),函數返回值缺省時,繪制幅頻響應和相頻響應圖。
5.2?心得體會
通過這次課設, 對設計數字濾波器的整個設計過程有了很好的掌握, 懂得了設計濾波器的基本方法。 對IIR濾波器和FIR濾波器的應用場景和區別有了一定了解,熟練了對巴特沃斯、車比雪夫、橢圓形濾波器和幾種常見窗函數的使用。同時也熟悉了 MATLAB的環境, 鞏固了相關知識。 初步掌握了 MATLAB語言在數字信號處理中一些基本庫函數的調用和編寫基本程序等應用; 熟悉了濾波器設計的一般原理, 對濾波器有了一個感性的認識; 學會了數字高通濾波器設計的一般步驟;加深了對濾波器設計中產生誤差的原因以及雙線性變換法優缺點的理解和認識。總之, 使理論聯系了實際, 鞏固并深化了對課本基本知識的認識和理解, 使理論得以升華。
在做本次課程設計的過程中,我和隊友曾經遇到過問題,在解決問題的過程中鍛煉了自己處理問題的能力,彼此相互溝通,通過查閱書籍、搜索資料等方法使問題得以解決。 培養了我們的耐心,也深深感受到自身知識的有限。 通過使所學應用于實踐,提高了動手能力。
六、參考文獻
[1]高西全.數字信號處理(第三版).西安電子科技大學出版社,2018
[2]?王一世,數字信號處理,北京理工大學出版社.?
[3]?吳大正.?信號與線性系統分析(第四版).?高等教育出版社,2005.8?
[4]?陳垚光.?精通MATLAB?GUI設計(第二版)電子工業出版社,?2011.1?
[5]?陳后金.?信號分析與處理實驗.?高等教育出版社,2006.8?
[6]?趙力.?語音信號處理.?機械工業出版社,2009.7
總結
以上是生活随笔為你收集整理的【数字信号处理课程设计】基于MATLAB实现语音信号的采集与处理(偏重滤波)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货:怎么提高科技成果转移转化成效?
- 下一篇: 第四套人民币及8001的简介