王語凡
(廣東工業(yè)大學 自動化學院,廣州 510006)
盲信號分離(Blind Source Separation)是指源信號以及混合方式都無法獲知的情況下,僅依據(jù)接收端收到的觀測信號來估計各個源信號。近年來,盲信號分離在信號處理、數(shù)據(jù)挖掘、計算機視覺、語音恢復(fù)和機器學習等領(lǐng)域有著廣泛的應(yīng)用[1-2],是當前研究熱點。
針對不同的混合方式和特性源信號,盲信號分離有很多不同的方法,如獨立成分分析[3](Independent Component Analysis, ICA)、稀疏成分分析[4](Sparse Component Analysis,SCA)以及卷積盲分離[5]。卷積混合模型相比較線性瞬時混合模型更能接近現(xiàn)實生活中信號的混合,因為該模型不僅考慮當前時刻輸入信號的混合狀態(tài),也會同時考慮由于時間延遲等干擾而未被計算的之前時刻的輸入信號及該信號的反射波。此外,線性瞬時混合模型在運算過程中只考慮零均值信號,而現(xiàn)實生活中絕大多數(shù)信號具有非平穩(wěn)性,源信號會隨時間的變化而變化,因此研究非平穩(wěn)信號在卷積混合情況下的盲分離算法,顯然具有很重要的實際應(yīng)用價值。
為了解決這個問題,Weinstein[6]提出利用非平穩(wěn)源信號的一組二階統(tǒng)計量來確定唯一的混合矩陣。Yellin[7]提出利用高階統(tǒng)計量可以更精確地確定混合矩陣,但這些算法為時域算法,計算復(fù)雜度較高。Smaragdis[8]提出用頻域算法,但該算法并未充分利用信號的非平穩(wěn)性。本研究提出一種頻域上類雅克比旋轉(zhuǎn)的張量分解算法來提高源信號的分離性能。利用信號的自相關(guān)矩陣在每個頻點構(gòu)造一個張量,并對這些張量做聯(lián)合對角化。該算法的計算復(fù)雜度相對較低,且穩(wěn)定性和計算精度相對于同類批處理算法較高。
考慮在一個混響環(huán)境下共有N個統(tǒng)計獨立的信號源和M個信號接收端,卷積混合模型的數(shù)學表達式如下:
(1)
其中,x(t)=[x1(t),…,xM(t)]T是觀測信號,s(t)=[s1(t),…,sN(t)]T是源信號,A∈PM×N是未知混合矩陣,l是時間延遲,L是混合模型的混合通道階數(shù),v(t)=[v1(t),…,vM(t)]T是噪音信號。
然后,對該模型做短時傅里葉變換,將復(fù)雜的卷積模型轉(zhuǎn)換成頻域上的線性混疊模型,公式(1)可表示為:
xfp=Afsfp
(2)
其中,p=1,2,…P代表時間窗的編號,f=1,2,…F代表短時傅里葉變換的頻點數(shù),而xfn=[x1,fp,…xM,fp]T、sfn=[s1,fp,…sN,fp]分別是觀測信號x(t)=[x1(t),…,xM(t)]T和源信號s(t)=[s1(t),…,sN(t)]T的傅里葉變換。本研究的目的是通過已知的觀測信號xfn=[x1,fp,…xM,fp]T,求解未知的混合矩陣Af和源信號s(t)=[s1(t),…,sN(t)]T??紤]到源信號為非平穩(wěn)信號,本研究將利用信號的短時平穩(wěn)性來處理混合信號,并對自相關(guān)矩陣構(gòu)成的張量做聯(lián)合對角化。
觀測信號的自相關(guān)矩陣Rx(f,q)∈CM×N表示如下:
(3)
其中Rs(f,q)=E[s(f,q)sH(f,q)]是源信號的自相關(guān)矩陣。為推導方便,在接下來的表述中省略噪音項,留到仿真部分討論。則狀態(tài)協(xié)方差矩陣可表示為:
(4)
構(gòu)造三階張量X(f)∈CM×M×Q,X[f](:,:,q)=Rx(f,q),則張量X[f]的對角化表示為:
(5)
其中D[f]∈CM×M×NM×M×M為對角張量,是S(f)的估計,為了方便運算和表述,引入新的張量T:
T[f]=X[f]×1B[1]×2B[2]×3B[3]
(6)
在實際應(yīng)用中,考慮到觀測誤差和噪聲的存在,張量對角化基本不可能精準地完成,只能盡可能地近似。為衡量對角化的精確程度,構(gòu)造代價函數(shù):
×2B[2]×3B[3]}‖2,l=1,2,3
(7)
其中,ZTdiag(·)代表構(gòu)建的零對角張量,即對角線上元素為零的張量,因此最小化代價函數(shù)J(B[l])等價于最小化所有張量非對角元素的平方和??紤]到式(6),如果矩陣B[l],l=1,2,3是正交矩陣或酉矩陣,則‖T[f]‖=‖X[f]‖,最小化式(7)等價于最大化張量T[f]所有對角線上元素的平方和,即盡可能使張量T[f]對角化。
根據(jù)文獻[9-10]的思想,矩陣B[l],l=1,2,3的更新規(guī)則如下:
B[l](t+1)=(I+V[l](t))B[l](t)
l=1,2,3
(8)
其中I∈RM×M為單位矩陣,B[l](0),l=1,2,3是初始狀態(tài),t∈N是迭代次數(shù),V[l](t)∈CM×M,l=1,2,3是對角線上元素均為0的更新矩陣,即diag(V[l](t))=0,l=1,2,3。這樣做的目的是在多次迭代中保持轉(zhuǎn)換矩陣B[l](t),l=1,2,3的非奇異性。
通過式(6)可知:
T[f](0)=X[f]×1B[1](0)×2B[2](0)×3B[3](0)
(9)
因此,顯而易見有:
T[f](t+1)=X[f]×1B[1](t+1)×2B[2](t+1)×3B[3](t+1)=X[f]×1(I+V[1](t))B[1](t)×2(I+V[2](t))B[2](t)×3(I+V[3](t))B[3](t)=T[f](t)×1(I+V[1](t))×2(I+V[2](t))×3(I+V[3](t))
(10)
不斷更新式(10),求解最小化J(B[l])的問題,直到收斂。
考慮到Jacob算法的原理,定義類Givens矩陣的特殊參數(shù)結(jié)構(gòu)Vi,j[l][11],其中Vi,j[l](t),l=1,2,3為僅在(i,j)和(j,i)兩個位置有非零元素的更新矩陣,即:
l=1,2,3
(11)
(12)
其中:
(13)
由[12]可知,對于張量在不同模上與矩陣相乘時,乘法計算的順序不影響最后的結(jié)果,即:
X×nB[n]×mB[m]=X×mB[m]×nB[n]
(14)
因此將式(12)的優(yōu)化問題轉(zhuǎn)化為最小化3個子問題:
l=1,2,3
(15)
(16)
因此式(15)等價于:
(17)
將(16)帶入(17),有:
(18)
(19)
(20)
(21)
(22)
所以(20)可以表述為:
(23)
(24)
所以式(21)、(22)可表示為:
(25)
(26)
(27)
(28)
(29)
(30)
為了更加一目了然地展現(xiàn)研究算法,算法總結(jié)如表1所示。
表1 基于張量聯(lián)合對角化的非平穩(wěn)源卷積盲分離算法Tab.1 Convolutive blind separation algorithm of nonstationary sources based on joint tensor diagonalization
本研究算法每 sweep 1次,即迭代1次的復(fù)雜度為O(fM2Q),與CP分解的運算復(fù)雜度相同,和其他主流批量處理的運算復(fù)雜度基本相似。
本節(jié)將通過3組實驗展示研究所提出的張量對角化算法(Tensor Diagonalization, TD)的性能。所有源信號均來自網(wǎng)站http://www.openslr.org/28/(1個包含模擬和真實房間脈沖響應(yīng),各向同性和點源噪聲的數(shù)據(jù)庫)。該數(shù)據(jù)庫中的音頻文件均為16k采樣率和16位精度,聲音時長為17 s。
為了檢測該算法的有效性,對不同的混合語音進行了卷積盲分離。限于篇幅,以下只列出1組語音分離結(jié)果。語音信號均來自上述數(shù)據(jù)集,且所有信號均為真實語音信號。
實驗結(jié)果表明:該算法具有較好的分離性能。從實驗中所用測試數(shù)據(jù)的原始信號與分離信號的圖像觀察可知,該算法分離效果良好,但是有一定的幅值變化。此外,還通過 sound 命令對混合信號和分離信號分別試聽,并和源信號作對比,發(fā)現(xiàn)分離信號的分離效果確實良好,混合信號混合得非常均勻,很難聽出混合前的音源,而分離信號的聲音與源信號相似,與混合信號比,聲音的清晰度有了很大的提升。
該仿真中將采用三種算法(JD、CP-ALS、CBSS,其中CBSS為對頻域信號采用ICA)應(yīng)用于處理卷積信號分離問題。
信號構(gòu)造如式31所示:
(31)
其中,n(t)為噪聲信號,在本次仿真中,n(t)為高斯白噪聲。
信噪比的定義如下:
SNR=10log(σs/σn)
(32)
在該仿真中,使用J-ISI(joint inter-symble-interference)[13]評估算法精度和解亂序等性能的性能指標,J-ISI定義:
(33)
本實驗中,仿真參數(shù)設(shè)置如下:STFT點數(shù)選擇1024點,采用sine窗,每次移動半個窗長,噪聲系數(shù)σn=0.01,信噪比取值范圍0~15dB,100次獨立運行實驗,實驗結(jié)果如圖2所示。
由圖2可知,參與比較的三種算法(TD、CP-ALS和CBSS)在J-ISI性能上相接近,但TD算法在數(shù)據(jù)上要優(yōu)于其他兩種算法,從而說明了TD算法具有較好的算法精度,排列歧義也較少。
在本實驗中,比較TD、CP-ALS和CBSS 3種算法在頻域分離語音信號的結(jié)果。
對于卷積混合語音的分離效果,仿真實驗采用Vicent. E[14]等設(shè)計的盲源分離工具箱(blind source separation evaluation,BSS_EVAL)。工具箱的使用前提是每一個源信號和噪聲信號之間相互獨立。
其中,starget表示估計信號中屬于源信號的部分,einterf表示由混合信號中其他源信號造成的估計誤差,即估計信號中屬于混合信號但不屬于所分離源信號的部分,enoise表示觀測信號中的觀測誤差和噪聲干擾,eartif表示算法本身所產(chǎn)生的噪聲和誤差。
基于以上參數(shù),該評價標準給出了3個評價指標:源---干擾比(Source-to- Interferences Ratio, SIR),源---失真比(Source-to-Distotion Ratio, SDR)和源---人造成分比(Source-to-Artifact Ratio, SAR)。作為語音分離系統(tǒng)的評價指標,這3個指標可以很好地從算法的分離效果、不同源信號之間的干擾程度、噪聲干擾程度等方面較為全面地評價算法的分離性能。
3個參數(shù)的表達式可分別表示如下:
顯然,SIR、SDR、SAR的值越高,表示算法的分離效果越好。
本實驗中,仿真參數(shù)設(shè)置如下:STFT點數(shù)選擇1024點,采用sine窗,每次移動半個窗長,經(jīng)過BSS算法分離出的語音信號,通過反傅里葉變換從頻域變換到時間域,100次獨立運行實驗,實驗結(jié)果如表2所示。
表2 實際語音信號的仿真盲分離Tab.2 Simulation blind separation of actual speech signal
由表2可知,在卷積混合語音信號的分離效果上,相較于其他3種算法,TD算法的3個性能指標皆高于其他算法,因此TD算法能夠很好地分離出混合的3個語音信號。
本研究提出一種類雅克比旋轉(zhuǎn)的張量分解算法來提高源信號的分離性能。首先利用信號的自相關(guān)矩陣構(gòu)造一系列張量,將盲信號分離問題轉(zhuǎn)化為張量對角化問題,然后提出一種特殊參數(shù)結(jié)構(gòu)代替Givens矩陣做類似雅可比連續(xù)旋轉(zhuǎn),將張量聯(lián)合對角化問題化解為一系列對特殊參數(shù)矩陣的子優(yōu)化問題,對每一個子優(yōu)化問題求閉式解,并通過閉式解估計對角矩陣,完成張量對角化,并求解了算法中參數(shù)的最優(yōu)解。實驗結(jié)果揭示了本研究算法在分離卷積語音信號時有著良好的性能,且該算法相較于直接對矩陣進行CP分解和常用的CBSS算法而言,在精度及解亂序能力等方面具有較好的分離性能。