西北民族大學電氣工程學院 林競連
語音信號是作為一種搭載著特定信息的模擬信號,已成為人們社會生活中獲取和傳播信息的重要手段。在信息處理技術中,濾波是最基本的信號處理方法,如何實現高性能的濾波技術成為最富有挑戰性的任務。濾波器分數字濾波器和模擬濾波器。與模擬濾波器相比,數字濾波器在應用中具有精度高、穩定性好、設備體積小、使用靈活等優點,而且不需要匹配抗阻即可實現模擬濾波的特殊濾波功能。數字濾波器根據單位沖擊響應的時間特性又分為IIR濾波器和FIR濾波器。與FIR濾波器相比,IIR濾波器是遞歸型結構,有體積小、重量輕、靈活等優點,并且設計出來的濾波器過渡帶很窄,在很大程度上可以取代傳統的模擬濾波器。因此,本文以IIR濾波器的音頻提取為目標,利用MATLAB的相關函數實現濾波器的設計和對語音信號處理。
數字濾波器是一種對數字信號進行處理的重要工具,其對信號進行過濾、檢測和參數估計等處理,目的就是消除數字信號中的噪聲,讓有價值的信號得以保留,其實際上就是一個離散系統。本文討論了數字濾波器中的IIR濾波器,其設計的基本原理如下。
IIR濾波器是一種遞歸線性時不變因果系統,其差分方程為:

通過z變換之后,可得:

于是得到IIR數字濾波器的系統函數:

IIR濾波器的單位沖擊響應h(n)是一個無限長序列,其基本的網絡結構分為直接型、級聯型和并聯型三種,其中直接型又分為直接Ι型和直接Π型兩種結構。
語音信號是一種模擬信號,首先須經過采集將其轉換為數字信號,實質就是把連續信號變為脈沖或數字序列。首先將需要濾波的混音音頻傳到電腦上,由于MATLAB只能處理后綴為“.wav”的語音文件,所以須將音頻的后綴改為“.wav”,并保存;然后打開MATLAB軟件,判斷文件是否在MATLAB的索引區,如果不在,使用讀取命令時就必須附加音頻文件的地址。在命令行窗口中使用audioread命令采集保存的聲音文件。該命令使用方法為:[x,Fs]=audioread(‘文件名’);%讀取音頻文件。
語音信號的分析主要是對語音信號的時域和頻域進行分析,并利用IIR濾波器對混音音頻中不同頻率的聲音進行提取。對比信號的時域,頻域往往包含了更多的信息。信號的各種頻域波形,我們都可以用一種方法來分析,那就是傅里葉變換:將時域的波形轉化到頻域來分析。
(1)時域分析
語音信號的時域分析就是對語音信號的時域參數進行分析和提取。語音信號本身就是時域信號,因此,時域分析是最早的分析方法,也是應用范圍最廣泛的分析方法之一。該方法直接利用語音信號的時域波形,通過分析可以有效的提高信噪比來求取信號波形在不同時刻的關聯性。此方法表示的語音信號具有比較直觀、物理意義明確、實現簡單、計算量小等特點,能夠獲得信號的一些重要參數和指標。
在MATLAB中進行語音信號的時域分析的命令如下:
x = x(:,1);%雙通道變單通道;
x = x’;
N = length(x);%求取抽樣點數;
t = (0:N-1)/Fs;%顯示實際時間
y = fft(x);%對信號進行傅里葉變換;
f = Fs/N*(0:round(N/2)-1);%顯示實際頻點的一半,頻域映射,轉化為Hz;
subplot(211);
plot(t,x,’g’);%繪制時域波形;
(2)頻域分析
語音信號的頻域分析是在頻率域分析系統的結構參數與性能的關系,揭示了信號內在的頻率特性以及信號時間特性與其頻率特性之間的密切關系,從而導出信號的頻譜、帶寬以及濾波、調頻和頻分復用等重要概念。常用的頻域分析方法有帶通濾波器組法、線件預測法、傅里葉變換法等。本文中所用的是傅里葉變換法。

圖1 模擬低通濾波器的技術指標

圖2 巴特沃斯濾波器的幅頻特性
在MATLAB中,想要得到信號的頻譜特性,可以利用函數fft對信號進行快速傅里葉變換。該函數的調用格式是y=fft(x),其中,x是序列,y是序列的傅里葉變換。
由于模擬濾波器的理論和設計方法已經非常成熟,有很多典型的模擬濾波器可供我們選擇,如常見的經典模擬濾波器有巴特沃斯濾波器、切比雪夫Ι濾波器、切比雪夫Π濾波器、橢圓濾波器等。這些濾波器不僅有嚴格的設計公式、現成的曲線以及圖表供設計人員使用,而且所設計的系統函數都滿足電路實現條件。另外,低通濾波器是設計其他濾波器的基礎,其設計過程是:首先設計模擬低通原型濾波器,將希望設計的各種濾波器的技術指標轉換成低通濾波器技術指標,然后設計出這些技術指標所對應的低通濾波器,最后采用頻率轉換法將低通濾波器轉換成我們原本想要設計的各種濾波器。模擬低通濾波器的技術指標如圖1所示。
本文利用模擬濾波器成熟的理論及其設計方法來設計巴特沃斯低通濾波器和巴特沃斯高通濾波器,其設計過程是:首先根據數字濾波器的技術指標要求設計一個過渡的模擬低通濾波器Ha(s),然后根據一定的轉換關系將Ha(s)轉換成數字低通濾波器或數字高通濾波器的系統函數H(z)。巴特沃斯濾波的幅頻特性如圖2所示。
其設計方法如下:
(1)若要得到濾波器最小濾波器階數和截止頻率,可調用buttord函數,其調用格式如下:

‘wp’表示歸一化通帶邊界頻率,‘ws’表示歸一化阻帶邊界頻率,‘Rp’為通帶最大衰減,‘Rs’為阻帶最小衰減。返回的參數‘n’是濾波器的階數,‘Wn’是3dB截止頻率。對于帶通和帶阻濾波器,‘wp’和‘ws’都是二維向量,向量的第一個元素對應低端的邊界頻率,第二個元素對應高端的邊界頻率。
(2)須計算濾波器的系數,可調用butter函數,調用格式如下:

其中‘b’和‘a’就表示濾波器的系數,最后利用bilinear函數,用雙線性變換法實現頻率響應s域到z域的變換。
然后在MATLAB中用filter函數進行濾波,濾波后用plot函數分別畫出原音頻信號的頻譜圖和濾波之后的信號頻譜圖。最后,再將濾波后的音頻通過函數audiowrite重新生成音頻文件。
結論與展望:本文結合數字信號處理的知識討論了數字濾波器中IIR濾波器的原理及其設計方法,并應用雙線性變換法設計,用MATLAB設計巴特沃斯IIR濾波器,最后對混音音頻進行濾波處理,將混音音頻中不同音頻的聲音提取出來。
日常中的信號往往都混有噪音,從接收到的信號中消除或減少噪聲是信號傳輸和處理中不可避免的問題。MATLAB是一個高級矩陣語言,其擁有強大的科學計算機數據處理能力。因此,將數字信號處理技術與MATLAB程序設計語言結合,能夠促進數字信號處理技術的發展。