張小華,彭首峰,裴 浩
(湖北工業大學電氣與電子工程學院,湖北 武漢430068)
對語音背景噪聲消除的研究一直是語音信號處理中的一個重要研究課題.經過各國學者的不懈努力,提出了各種語音降噪方法,這為語音降噪提供了大量的理論基礎并推進其逐漸成熟.盲源分離技術是近年來發展起來的一種新的信號分離技術,它是在信號源和信道傳輸參數未知的條件下,僅通過傳感器陣列接收到的信號去估計出源信號的過程.
目前對盲源分離的研究工作大致能夠分成兩類[1]:一是對瞬時混合模型的研究,在各國學者的共同努力下,對這一模型的研究已經有很多比較成熟的算法可用;二是對卷積混合模型的研究,在實際應用情況下,因為信號在傳輸中易受到各種干擾所導致的傳輸延遲等的影響,傳感器所得到的信號通常不是簡單的瞬時疊加,而是更接近真實信號傳輸的卷積等混合形式,這種模型下的信號分離目前受到更多的關注.
麥克風采集到的真實信號是原始帶噪語音信號與信道沖擊響應的卷積輸出.可以用一個有限脈沖響應(FIR)濾波器來描述該問題[2].設有N 個源信號S(n)= [s1(n),…,sN(n)]T,M 個麥克風采集到的觀測信號為 X(n)= [x1(n),…,xM(n)]T,混合濾波器沖擊響應階數為P,則在時刻n第i個麥克風采集到的信號能夠表示為

其中aij(p)表示第i個麥克風采集到的第l階信道沖擊響應系數.式(1)可以用X(n)=A*S(n)簡化表示,其中A為濾波器混合矩陣,且

要想根據采集到的觀測信號X(n)獲得源信號值,就必須找到一個Q階的分離濾波器wij,使得解卷積后輸出

可以用Y(n)=W*X(n)簡化表示.
目前對卷積盲源分離問題的處理方法大多是使用短時傅里葉變換(STFT)將時域中的卷積分離問題轉換成多個頻域中的瞬時混合盲源分離問題[3],這樣可以通過使用研究較成熟的瞬時盲源分離算法來解決分離問題.具體的做法如下.
對得到的觀測數據進行長度為L的傅里葉變換:

其中ωi=2πl/L表示頻率點,m表示對數據進行長度為L的傅里葉變換的段數,記利用瞬時盲源分離算法獲得觀測信號在頻率點ωi上的分離矩陣W(ωi),使得Y(ωi)=W(ωi)X(ωi),式中其中為第m個子段中源信號的估計值的傅里葉變換.然后通過對每一段數據各頻 點 上 的 值 [Y(ω0,m),Y(ω1,m),Y(ωL-1,m)](m=1,2,…,M)進行傅里葉反變換,得到每一個數據段上的時域估計值Y(m)(m=1,2,…,珨M),依次將各段時域估計值連接起來,就獲得了聲源信號的估計值.
由于瞬時盲源分離算法在信號分離過程中存在幅度和排序的不確定性,使得上面提到的方法在進行傅里葉反變換前需要解決排序和幅度不確定性問題.對于幅度的調整,通過采用將W(ωi)(i=0,1,…,L-1)中對應的行向量歸一化,即W(ωi)←,能夠取得較好的效果.對于排序的問題,Anemuller[4]等學者經研究發現,語音信號在頻域中表現出同信號相鄰頻點之間相關性很強,但是不相同信號相鄰頻點的相關性較弱,這與人類聲帶所固有的特性有關.設y1(ωi)和y1(ωi+1)為兩相鄰頻點的值,如果

的值大于設定的上限閾值,則說明兩相鄰信號具有較強的相關性,是屬于同一源信號的兩個頻點值.反之如果小于設定的下限閾值,則認為不屬于同一源信號,需要重新調整通道值順序.一般的上限閾值取0.6,下限閾值取0.3[5].
在使用瞬時算法時,由于處理的數據是復數形式,所以必須采用能處理復數的瞬時分離算法,現有的復數算法主要有復數FastICA算法、復數infomax算法和JADE算法.這三種算法都具有較好的性能,由于本文下面仿真中使用的是JADE算法,所以下面給出該算法的主要原理和具體的算法步驟.
聯合近似特征矩陣對角化(Joint Approximate Diagonalization of Eigenmatrices)是基于四階累積量的盲源分離算法,它聯合對角化下面定義的四階協方差矩陣[6]:


其中只有當p=q=u=v時δ(p,q,u,v)=1,其它情況取0值.λpq是每個特征矩陣Epq對應的特征值.

一種獲得滿足上面關系的特征矩陣Epq的方法是通過估計特征矩陣,產生N個四階協方差矩陣C珔x(Ep),其中是正交陣的第p列是用來估計對角陣的正交陣.為了得到準確的對角陣,首先可以通過Ep=I的特殊四階協方差矩陣的特征值分解粗略的估計出它的值:對N個四階協方差矩陣C珔x(Ep)尋找正交陣U,要求它能同時使各C珔x(Ep)都盡可能對角化.一種聯合對角化的方法是Givens旋轉法,即為了使各Λ(Ep)=UTC珔x(Ep)U 盡可能對角化,用Λ(Ep)中非對角元素的平方和作為衡量指標,使下式的值極小:

JADE算法的具體實現步驟[7]
1)經過白化后得到預處理的數據珚x(k)=Qx(k).
2)通過Ep=I得到四階協方差矩陣C珔x(I),并對其進行特征值分解,得到

4)使用Givens旋轉方法,找到一個正交矩陣U ,使得

的值小于設定的值.
在matlab上使用語音采集程序采集了5s的帶有背景噪聲的語音信號,并以Wav形式文件保存,采樣頻率為16kHz,數據點數80 000.由于實驗條件有限,將采集到的數據做簡單的類似譜減法處理后作為第二路觀測數據,然后將兩路數據采用頻域盲源分離算法進行處理,其中傅里葉變換數據長度L=256,幀移為1/2.兩路觀測信號和分離后的信號分別如圖1、2所示.
采用matlab自帶的wavplay函數將分離后的兩路信號讀出,用人耳聽發現第一路信號基本上是背景噪聲,只有少量的語音信號,第二路信號則剛好相反.這說明通過盲源分離算法基本上能夠將背景噪聲和語音信號分離開來,達到語音降噪的目的.為了得到更清晰的語音信號可以對分離出的信號進行小波降噪處理或譜減法降噪處理.

圖1 兩路觀測信號

圖2 兩路分離信號
[1]汪 林.多通道語音信號處理中的關鍵技術研究[D].大連:大連理工大學圖書館,2010.
[2]張 華,馮大政,龐繼勇.卷積混迭語音信號的聯合塊對角化盲源分離方法[J].聲學學報,2009,34(2):167-174.
[3]徐 舜,陳紹榮,劉郁林.卷積混合語音的聯合塊對角化盲源分離算法[J].振動與沖擊,2007,26(8):86-90.
[4]Anemuller J,Kollmeier B.Amplitude modulation decorrelation for convolutive blind source separation[A]// Proc.of ICA2000 [C].Helsinki:Finland,2000:215-220.
[5]姜衛東,陸佶人,張宏滔,等.基于相鄰頻點幅度相關的語音信號盲源分離[J].電路與系統學報,2005,10(3):1-4.
[6]李昌利.盲源分離的若干算法及應用研究[D].西安:西安電子科技大學圖書館,2010.
[7]許鵬飛.卷積混合數字通信信號的盲源分離[D].西安:西安電子科技大學圖書館,2010.