謝麗英, 房麗敏
(廣東第二師范學院 物理與信息工程系, 廣東 廣州510303)
信號即信息的表現(xiàn)形式,對信號的分析方法最主要的有時域分析和頻域分析方法[1]. 信號分析是為了得到信號的某些特征,比如時域中的周期及時域表達式、頻域中的頻譜特性等. 通過獲得信號的特征可以更好地對信號進行存儲、傳輸和處理,比如在不丟失關(guān)鍵信息的前提下減少信息的存儲空間、高效而準確地傳輸信息、消除信號中的干擾等. 語音信號是人類交流的最主要的方式[2-3],對語音信號的處理是信號處理的一個重要方向. 文[2-3]描述了語音信號的時域和頻域分析,但是沒有分析不同噪聲對語音信號的影響和處理方式. 本文通過MATLAB 軟件對語音信號進行時域和頻域的分析和處理,描述MATLAB 軟件分析語音信號的主要函數(shù),并研究其在對含有不同噪聲語音信號的濾波中的應(yīng)用.
在對信號進行分析之前,首先要存儲信號,存儲于計算機或者手機上的語音信號都是數(shù)字信號. 通過電腦或者手機的錄音設(shè)備錄制一段語音信號或者音樂信號,存儲為后綴wav 的文件. 在MATLAB 軟件中應(yīng)用[x,fs,bits]=wavread(‘motherLand’)語句將文件名為motherLand 的語音信號轉(zhuǎn)化為數(shù)據(jù)存在變量x 中,該語音信號的采樣頻率為fs. 采樣頻率fs是時域分析和頻域分析的重要參數(shù),在時域分析中,采樣間隔Ts=1/fs表示向量x 中兩個數(shù)據(jù)點之間的時間間隔; 而在頻譜分析中,快速傅里葉變換(FFT)的兩個數(shù)據(jù)點之間的頻率間隔即為fs.
信號的時域表示形式是現(xiàn)實世界信號的真實形式,而信號的頻域分析采用傅里葉變換實現(xiàn),傅里葉變換的快速算法即快速傅里葉變換,所以信號的頻域形式實際上是一種數(shù)學形式,但卻有具體的含義和重要的用途. 有些信號的時域波形很難顯示其特征,比如從男生和女生發(fā)相同語音時的時域波形很難分析出其特征,以及很難從含有噪聲的語音信號的時域波形中識別和去除噪聲. 但是在頻域分析中可以很容易進行特征分析. 如圖1 所示是應(yīng)用MATLAB 軟件繪制出的一段歌曲的時域波形和頻譜圖,由頻譜圖可知,這段歌曲的頻譜處于0 到5 000 Hz頻段,并且主要集中在低頻段.
圖1 語音信號的時域波形和頻譜圖
在語音信號中加入一個頻率為6 000 Hz 的正弦噪聲信號,時域上的表現(xiàn)為語音信號和噪聲信號的直接相加. 在MATLAB 中應(yīng)用wavwrite(y1,fs,‘motherLand_noise.wav’)語句輸出生成含有噪聲的語音文件并通過播放器播放出來,可以聽到原有的音樂聲多了一個頻率較高的噪聲,該噪聲的大小可以通過調(diào)整正弦信號幅度大小進行調(diào)節(jié). 由于這個噪聲信號是一直疊加在音樂信號上的,所以在音樂信號的整個持續(xù)期間,它一直存在,且從時域波形中無法區(qū)分出該噪聲信號. 而對加噪后的語音信號進行快速傅里葉變換,得到其頻譜圖,則可以很容易在頻譜中辨別出噪聲信號所在的位置. 如圖2 所示,加入噪聲的語音信號的頻譜圖中在6 000 Hz 處有一個很強的噪聲信號. 此外,通信系統(tǒng)中的噪聲一般可以用高斯白噪聲表示,在MATLAB 中可以應(yīng)用y =awgn(x,30)在語音信號x 中加入信噪比為30 dB 的高斯白噪聲,如圖3 所示為加入高斯白噪聲前后語音信號的頻譜圖.
如前所述,語音信號主要集中在低頻段. 為了濾除噪聲信號而保留原有音頻信號,需要將含噪信號通過一個數(shù)字低通濾波器,且該低通濾波器的通帶截止頻率為5 000 Hz.
數(shù)字低通濾波器主要有FIR(有限長單位脈沖響應(yīng)濾波器)和IIR(無限長單位脈沖響應(yīng)濾波器)濾波器,F(xiàn)IR 濾波器可以應(yīng)用窗函數(shù)法和頻率采樣法進行設(shè)計,而IIR 濾波器是對模擬濾波器進行數(shù)字化得到的,可以采用脈沖響應(yīng)不變法和雙線性變換法進行設(shè)計[4-6]. 圖4 是當設(shè)計指標為通帶截止頻率fc=5 000 Hz、阻帶起始頻率fr=5 500 Hz、通帶最大衰減Rp=1 dB、阻帶最小衰減Rs=40 dB 時所設(shè)計的巴特沃思低通濾波器、切比雪夫濾波器和橢圓濾波器的幅度譜. 在相同指標下,巴特沃思濾波器需要56 階,切比雪夫濾波器需要14 階,而橢圓濾波器只需要6 階.
圖2 語音信號加入單一頻率噪聲前后的時域和頻譜圖
圖3 加入高斯白噪聲前后語音信號的頻譜圖
圖4 數(shù)字低通濾波器頻譜特性
在MATLAB 中應(yīng)用y =filter(B,A,x)語句可以實現(xiàn)對信號x 進行濾波處理,輸出濾波后的信號y,其中B和A 分別是濾波器傳遞函數(shù)的分子和分母系數(shù). 應(yīng)用數(shù)字低通濾波器對含噪語音信號進行濾波后的幅度譜如圖5 所示,頻譜顯示在語音信號頻譜之外的噪聲信號被濾除了. 在MATLAB 中應(yīng)用wavwrite(y1,fs,‘motherLand_noiseless.wav’)語句將濾波后的信號y1 生成文件名為motherLand_noiseless.wav 的文件,通過播放器播放出來. 可以明顯地感受到噪聲已經(jīng)得到很好的抑制,但音樂的聲音也比之前小了一點. 這是由于在濾除噪聲信號的同時,一部分音樂信號的高頻部分也被濾除,從而損失了一小部分語音信息.
圖5 含有不同噪聲的語音信號濾波后的頻譜圖
文中為了使濾波效果明顯,特意加入了頻率成分遠高于語音信號頻率范圍的噪聲. 但是實際上,噪聲信號的形式有很多,除了單頻信號,很多是隨機信號,比如高斯白噪聲信號. 高斯白噪聲信號的頻譜分布在整個頻率范圍,而由于語音信號的頻譜主要在低頻段,通過低通濾波器后能很好地濾除大部分噪聲. 可是當噪聲的頻率成分主要處于語音信號的頻譜范圍內(nèi)時,通過頻譜分析很難分辨出此類噪聲信號,并且應(yīng)用低通濾波器也不能改善含噪語音信號.