韓長軍
(遼東學(xué)院 信息工程學(xué)院,遼寧 丹東 118003 )
?
【信息科學(xué)與工程】
基于MATLAB的語音信號去噪方法應(yīng)用
韓長軍
(遼東學(xué)院 信息工程學(xué)院,遼寧 丹東 118003 )
以MATLAB為平臺,利用濾波器去噪方法對含噪聲的語音信號進行去噪處理,并從頻域角度利用IIR和FIR兩種濾波器去噪方法進行去噪,并對結(jié)果進行了對比分析,為加強程序的友好性和可視性,采用GUI編程的方法設(shè)計了語音信號去噪系統(tǒng)用戶界面。實驗結(jié)果證明,該方法能夠?qū)崿F(xiàn)對夾雜噪聲的語音信號進行有效提取,有助于在噪聲下提取微弱信號的研究。
語音信號;MATLAB;濾波器;去噪;頻域
語言是人們獲得各類有效信息的主要途徑,而語音是語言的表現(xiàn)形式[1]。語音在一定程度上可影響人們的生活,因此,語音信號的研究對科學(xué)領(lǐng)域和人們?nèi)粘I罹哂幸欢ǖ难芯績r值和意義。噪聲廣泛存在于生活,信號在傳輸過程中不可避免會受到各類噪聲的干擾,降低了信號的可讀性,因此對攜帶噪聲的信號進行去噪處理十分必要[2-4]。語音信號是一種特殊的信號,其在傳輸過程中,由于外界環(huán)境和設(shè)備的影響不可避免會被噪聲干擾,一定程度上影響了人們所接收信息的準(zhǔn)確性。人們提出了各種語音去噪方法[5,6],其中,常用的有濾波器去噪法、小波分析去噪法以及小波包分析去噪法[7]。
MATLAB是一種功能強大,具有很好的交互性的數(shù)值計算和可視化計算高級語言,其強大的矩陣運算,數(shù)值分析以及信號處理功能使其廣泛應(yīng)用于眾多科學(xué)領(lǐng)域中[8]。因此作者使用MATLAB作為設(shè)計工具軟件來進行語音信號去噪處理。
作者在MATLAB環(huán)境下應(yīng)用濾波器去噪方法對加噪聲的語音信號進行時域、頻域的分析和濾波。通過MATLAB編程對語音信號被噪聲污染進行仿真處理,并對加噪聲前后的頻譜圖進行對比;然后根據(jù)語音信號特點設(shè)計各類濾波器;最后將所設(shè)計的濾波器分別應(yīng)用于含噪聲的語音信號,并對其頻譜圖進行對比分析,確定最優(yōu)化方法。
利用MATLAB作為平臺實現(xiàn)濾波和頻譜分析,主要分為語音信號采集、語音信號分析、語音信號加噪、濾波分析以及GUI設(shè)計五個模塊,系統(tǒng)框圖如圖1所示。
首先對采集的語音信號進行頻譜分析,然后對其進行加噪并對加噪后的信號進行頻譜分析。而濾除噪聲的方法選擇了噪性能較好的濾波器方法,即通過設(shè)計有限脈沖相應(yīng)FIR濾波器以及無限脈沖相應(yīng)IIR濾波器來完成,并利用這兩種方法對加噪后的語音信號進行去噪處理,然后從頻域角度對結(jié)果進行了對比分析。最后為了加強程序的友好性和可視性,采用GUI編程的方法來設(shè)計語音信號去噪系統(tǒng)用戶界面。
2.1 語音信號采集
文章利用PC機聲卡對語音信號進行采集。PC機的聲卡采樣率一般在64 KHz以上,即一秒鐘可以采集64 000個聲音樣本。而人們正常的語音信號一般在300 Hz至34 000 Hz之間,根據(jù)奈奎斯特采樣定理,一般的正常的語音信號均可以利用聲卡采集并且保證其不失真。在安靜環(huán)境下的正常交流可以近似為純語音信號,聲音信號的長度最好控制在10 s內(nèi)以便后期分析處理。
圖2為通過聲卡采集得到的語音信號波形及其頻譜。
2.2 語音信號加噪
對已經(jīng)獲得的純語音信號進行加噪處理來模擬在實際生活中語音信號被噪聲污染的情況。利用MATLAB中的audioread函數(shù)把語音信號轉(zhuǎn)換成序列,得到信號信息;sound函數(shù)可以將采樣序列通過聲卡轉(zhuǎn)換成聲音,可直觀聽出加噪前后的區(qū)別。高斯白噪聲可用具體的數(shù)學(xué)表達(dá)式表示,且可以貼近反映實際信道中的加性噪聲的情況[9]。
文章選擇對語音信號加入高斯白噪聲來模擬聲音被污染的情況。利用MATLAB中的隨機函數(shù)(rand或randn)產(chǎn)生符合高斯分布序列的噪聲序列并將其加到語音信號中,用來模擬語音信號被污染。通過對其頻譜分析,聲音的回放可以很清楚的聽出加噪前后的區(qū)別[10]。也可以通過sound函數(shù)便可以聽到加噪后的語音信號,與原始語音信號相比,聲音刺耳根本不能分辨出原始語音信號。
圖3為利用MATLAB得到的加噪后的信號波形。
通過頻譜結(jié)果可以看出,噪聲均勻分布在整個頻域范圍內(nèi),但原始信號的主要部分并沒有消失,表明進行合適的濾波處理后后很有可能恢復(fù)出原始信號,至少可以減弱噪聲的影響。與之前的原始信號頻譜對比可看出,如將濾波的范圍設(shè)定在50 kHz 就可能實現(xiàn)濾出噪聲的目的。
對于語音去噪現(xiàn)在已經(jīng)有一些比較成熟的方法,如小波變換法,小波包變換法,以及濾波器法。利用小波的方法去噪設(shè)計過程相對繁瑣,因此,選用濾波器方法來實現(xiàn)去噪功能[11]。數(shù)字濾波器若按照沖激響應(yīng)來分類可以分為FIR濾波器和IIR濾波器兩種。其中FIR為有限脈沖響應(yīng)濾波器,IIR濾波器是無限脈沖響應(yīng)濾波器[12,13]。
3.1 IIR濾波器語音去噪
IIR濾波器一般有三種設(shè)計方法,分別為:零極點位置累試法、利用模擬濾波器設(shè)計數(shù)字濾波器和最優(yōu)化設(shè)計法。本文選用濾波器方法,在設(shè)計IIR濾波器的時候可以借鑒經(jīng)典的成熟的模擬濾波器,如巴特沃斯濾波器、切比雪夫濾波器和橢圓濾波器等[14-16]。 文章將使用巴特沃斯低通濾波器來設(shè)計數(shù)字濾波器。
由原始語音信號及其加噪前后的頻譜分析可知,所設(shè)計濾波器應(yīng)該要實現(xiàn)的功能是濾除掉出語音信號之外的噪聲部分的頻率,根據(jù)要求給出技術(shù)指標(biāo)如下:
低通濾波器的性能指標(biāo):fp=1 000 Hz,fs=1 200 Hz,αs=50 db ,αp=1 dB
高通濾波器的性能指標(biāo):fp=3 500 Hz,fs=4 000 Hz,αs=50 dB,αp=1 dB
帶通濾波器的性能指標(biāo):fp1=1 200 Hz,fp2= 3 000 HZ,fs1= 1 000 Hz,fs2=3 200 Hz,αs=100 dB,αp=1 dB
其中fp表示通帶截止頻率;fs為阻帶截止頻率;αp表示最大通帶衰減;αs表示最小阻帶衰減。
當(dāng)?shù)贸鱿嚓P(guān)的技術(shù)指標(biāo)后便可以利用經(jīng)典濾波器來設(shè)計低通濾波器,這里采用巴特沃斯濾波器來設(shè)計模擬低通濾波器,并得到低通濾波器的系統(tǒng)函數(shù),即H(s)。得到一個可以實現(xiàn)相關(guān)功能的模擬低通濾波器后將會采用頻率變換的方法通過低通濾波器的系統(tǒng)函數(shù)變換出相關(guān)的高通、帶通或帶阻濾波器的系統(tǒng)函數(shù)。
3.2 FIR濾波器語音去噪
與IIR相比,F(xiàn)IR濾波器的優(yōu)點表現(xiàn)在線性相位以及容易設(shè)計兩點上。一般來講對于需要線性相位時考慮FIR濾波器,當(dāng)對線性相位較低時我們采用IIR濾波器代替[17]。對FIR濾波器的設(shè)計一般用窗函數(shù)法和頻率采樣法設(shè)計。其中窗函數(shù)法是我們設(shè)計FIR濾波器長用的方法,用這種方法來設(shè)計相應(yīng)的FIR濾波器。
利用窗函數(shù)法設(shè)計FIR濾波器的流程圖如圖4所示:
利用窗函數(shù)法設(shè)計FIR濾波器一般需要給出理想濾波器的頻率響應(yīng)即Hd(ejω),由于添加窗函數(shù)是在時域用窗函數(shù)與所給的信號相乘來達(dá)到截斷信號的目的,因此需要使用序列傅里葉反變換求得Hd(ejω)的單位脈沖響應(yīng)hd(n)。由于hd(n)無限長的序列且為非因果,采用加窗函數(shù)的方法來讓hd(n)轉(zhuǎn)換為有限的因果脈沖序列h(n),最后通過序列的傅里葉變換,把h(n)變換為H(ejω)[18-19]。
通過上述的步驟可以得出H(ejω),以后需要把它和預(yù)期的濾波器頻率響應(yīng)進行比較。如果符合預(yù)期的標(biāo)準(zhǔn)則成功,否則需要再修改窗函數(shù)。
4.1 FIR濾波器濾波前后對照
在MATLAB中FIR濾波器濾波使用函數(shù)fftfilt,其調(diào)用方式分為兩種[20]。分別為Y= fftfilt(b,x):對信號x進行基于FFT和重疊相加法的FIR濾波;以及Y=fftfilt (b,x,n):參數(shù)n用來控制進行FFT變換的點數(shù)。
下面將給出利用FIR濾波器進行濾波后頻譜圖:
利用窗函數(shù)法設(shè)計的FIR低通濾波器,F(xiàn)IR帶通濾波器和FIR高通濾波器濾波前后頻譜圖如圖5所示,
從圖5可以看出,波頻譜的橫坐標(biāo)表示頻率單位為Hz,縱坐標(biāo)表示信號幅度。而其中的波形圖橫坐標(biāo)表示頻率單位為Hz,縱坐標(biāo)表示信噪比單位為dB。從濾波前后的頻譜圖我們可以看出,原始信號的有效頻率范圍為50 000 Hz以下,但高通濾波器將有效部分濾出了,而低通和帶通濾波器的保留了原始信號的有效部分。
4.2 IIR濾波器濾波前后對照
圖6為仿真得到的IIR濾波器濾波前后的頻譜對照圖,
圖6中的波頻譜的橫坐標(biāo)表示頻率單位為Hz,縱坐標(biāo)表示信號幅度。而其中的波形圖橫坐標(biāo)表示頻率單位為Hz,縱坐標(biāo)表示信噪比單位為dB。
從圖中可以看出原始信號的頻率范圍在50 000 Hz以下,而用IIR濾波器進行濾波,低通和帶通的情況都可以保留原信號,但高通濾波器不能用,因為有效的信號被濾除掉了。其中若比較IIR低通和IIR帶通濾波器發(fā)現(xiàn),雖然都保留了原始信號,但相對來講IIR低通濾波器可能效果更好一點。
因此,當(dāng)可以確定FIR和IIR均可以實現(xiàn)所需要的功能的情況下,F(xiàn)IR濾波器和IIR濾波器針對不同的情況有不同的選擇,具體來講IIR濾波器可以用相對較少的階數(shù)來達(dá)到濾波的目的,而且可以根據(jù)模擬濾波器原型來設(shè)計相對工作量較小。FIR濾波器由于為有限單位脈沖響應(yīng)因此必為穩(wěn)定的,而且FIR可以采用FFT算法但IIR濾波器不能這么算,另外FIR濾波器的應(yīng)用更為簡單。
4.3 對含噪聲的語音信號去噪
前面用純語音信號來模擬正常的語音信號,并利用MATLAB來模擬語音信號被污染,測試設(shè)計了相應(yīng)的濾波器。下面對現(xiàn)實生活中的含噪聲的語音信號進行去噪分析。
對語音信號的采集確實有很多辦法,需要采集兩次即正常的安靜情況下和比較嘈雜的情況(即含有噪聲的情況)。但是如果利用自己的聲音來當(dāng)做聲音樣本,我們在兩次采集的時候不能保證兩次說話的語調(diào)、音高、響度等等是相同的,即不能保證頻譜相同。因此,采集的方法是在網(wǎng)上下載一份純音樂音頻并保存在手機里,分兩次播放:在安靜的情況下和在人為制造一個嘈雜環(huán)境。通過分析對比這兩次的頻譜和波形來確定適合的濾波器并嘗試進行去噪。圖7(a)為利用MATLAB得到的波形圖和頻譜圖,圖7(b)為采集到的信號加噪聲后的波形和頻譜圖。
從圖中可以看出,噪聲的作用范圍大概在整個頻域內(nèi),但是通過原始語音信號的頻譜圖可以看出語音信號主要在5 kHz~20 kHz之間,因此需要濾除掉其余的部分。
通過前面分析可知,對于利用MATLAB模擬的噪聲環(huán)境中FIR低通濾波器和IIR低通濾波器的效果最好。而且從頻譜圖可知采集的語音信號加噪后與利用MATLAB模擬的語音信號加噪后的效果很類似,因此使用FIR低通濾波器和IIR低通濾波器來進行濾波處理。利用MATLAB濾波后的結(jié)果如8所示。
同樣通過MATLAB中的sound函數(shù)可以聽到濾波后的聲音,通過和之前的加噪聲的結(jié)果相比可發(fā)現(xiàn),IIR低通濾波器和FIR低通濾波器濾波后的效果雖然沒有達(dá)到將原信號完美還原,但是對比加噪的信號可以很明顯的聽出噪聲被減弱了很多。而且對比語音信號的波形,雖然不能還原原信號的波形,但經(jīng)過濾波后已經(jīng)較為接近原來的信號波形。
利用MATLAB中對純語音信號進行算法加噪模擬仿真,總的來講低通濾波器可以達(dá)到濾波的作用,帶通濾波器其次而高通濾波器則無法實現(xiàn)這個功能,經(jīng)過高通濾波器的信號已經(jīng)完全丟失了原信號所攜帶的信息。根據(jù)語音信號的特點,一般在研究語音信號的時候不考慮它的相位問題,而且IIR濾波器的設(shè)計思路較FIR濾波器來講較為簡單,因此選擇兩種濾波器的時候建議選擇IIR低通濾波器。濾波器對語音信號進行去噪處理應(yīng)該對語音信號和噪聲的頻譜進行十分精確的分析,這樣才能得出較準(zhǔn)確的濾波器參數(shù),也就是說,利用數(shù)字濾波器的方法完全可以達(dá)到對語音信號去噪或降噪的目的。
[1]林濤.基于MATLAB的有噪聲語音信號處理[D].北京:北京大學(xué),2011.
[2]吳岳松.基于聽覺模型的水下目標(biāo)識別研究[D].南京:南京林業(yè)大學(xué).
[3]丁蘭蘭.基于MATLAB的有噪聲語音信號處理[D].大連:大連理工大學(xué),2011.
[4]林清川,白羽,索麗敏,等.基于MATLAB的數(shù)字圖像處理分析及應(yīng)用[J].黑龍江科技信息,2009(32):84.
[5]張勁松. 基于MATLAB的語音信號采集和分析系統(tǒng)的可視化設(shè)計[J]. 齊齊哈爾大學(xué)學(xué)報(自然科學(xué)版),2006(6):43-46.
[6]余道衡.數(shù)字信號處理的發(fā)展與應(yīng)用[J].科學(xué)前沿與技術(shù)評論,1999,21(3):36-39
[7]孫紅英 基于CS理論的語音增強算法的研究 [D].蘭州:西北師范大學(xué),2011.
[8]周寧寧.基于中介數(shù)學(xué)系統(tǒng)處理圖像的方法研究及其在虛擬環(huán)境中的應(yīng)用[D].南京:東南大學(xué),2008.
[9]孫亞飛.小波分析理論應(yīng)用于巖石松動圈聲波測試的研究[D].武漢:武漢理工大學(xué),2008.
[10]薛年喜.MATLAB 在信號處理中的應(yīng)用(第二版)[M].北京:清華大學(xué)出版社,2005.
[11]吳培希.有關(guān)零相數(shù)字濾波器的實現(xiàn)[J]. 信息系統(tǒng)工程,2012(11):95-96.
[12]逯廣義.基于Multisim中Filter Wizard的濾波器設(shè)計[J].電氣轉(zhuǎn)動自動化,2009,31(1):56-57.
[13]MZTRA S K.數(shù)字信號處理期末綜合實驗報告[M].孫洪澤,譯.北京:電子工業(yè)出版社,2005.
[14]朱正平.遙感影像的模糊識別[C]∥中國地球物理學(xué)會第18屆年會.北京:中國物理學(xué)會,2002.
[15]李懷洲,丁兆國,徐伯慶,等.基于VC++的數(shù)字濾波器的設(shè)計 [J].自動化儀表,2004,25(12):18-20.
[16]余丹,孫文.MATLAB 軟件設(shè)計應(yīng)用之 IIR 數(shù)字濾波器[J].技術(shù)與市場,2015(6):251-252.
[17]張福玲. 數(shù)值分析教學(xué)與實驗系統(tǒng)的設(shè)計[J]. 電腦知識與技術(shù),2007(13):290-291.
[18]李亞軍. 在MATLAB圖形用戶界面設(shè)計中使用ActiveX控件[J]. 計算機與數(shù)字工程,2006(12):135-137.
[19]陰艷麗. 基于MATLAB語音信號處理的研究[J]. 中國新技術(shù)新產(chǎn)品,2012(12):28-29.
[20]趙世明.基于小波分析的語音增強算法研究[D].安徽:安徽理工大學(xué),2012.
(責(zé)任編輯:龍海波)
A Matlab-based Speech Signal Denoising Method
HAN Chang-jun
(SchoolofInformationEngineering,EasternLiaoningUniversity,Dandong118003,China)
The noise in speech signal was removed by methods of IIR and FIR in the domain perspective with Matlab. The results of the denoising by the two methods were compared. To improve the friendliness and visuality, a denoising system user interface was designed by GUI program. It was found that this method effective in extracting speech signal with noise.
speech signal; Matlab; filter; denoising; frequency domain
10.14168/j.issn.1673-4939.2017.01.14
2016-09-06
韓長軍(1975—),男,遼寧丹東人,碩士,副教授,研究方向:電子信息技術(shù)及網(wǎng)絡(luò)應(yīng)用技術(shù)。
TN912
A
1673-4939(2017)01-0072-06