天天看點

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

Delay and Sum

Fixed Beamforming中最簡單的一類——delay and sum,就是信号延遲之後再相加,感興趣的部分因為信号是相關的,是以越加越大,而不敢興趣的噪聲是不相關的,是以加了和沒加一樣。這樣解釋比較通俗一點。稍微不通俗的,Delay and Sum是求解這麼一個問題——在限制條件下最大化白噪聲增益WNG:

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

不難得到,此時的濾波器為:

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

DS最大化WNG的同時(等于10*logM,實際計算WNG和DF的時候要取10*log),Directivity Factor則沒有任何的改進(不過後面有專門最大化DF的MaxDF)。比如麥克風個數為8的時候,WNG = 10log8 = 9 ,且是和頻率無關的。但是此時的DF仍是和頻率、麥克風個數、聲源入射角度有關的量。同時,當在高頻,擴散聲場接近與白噪聲場時,DF也會接近WNG的值。下圖是我python仿真DF在麥克風距離等于3cm,入射角度為90時候,麥克風個數依次為2、4、6、8時候的Delay and Sum的DF。

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

此外,仿真出了Delay and Sum在不同頻率下的beampattern的熱力圖,我們不妨算下,當麥克風間距為3cm時,根據上一章讨論的混疊的條件波長要大于3*2=6cm時才不會發生混疊,也即頻率小于5666Hz時不會發生混疊, 下圖也明顯的可以看到右上方混疊出現的條件,即也是和入射角有關的。 

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

下圖則是一個非常明顯的混疊的beampattern,陣列響應的旁瓣也同時達到了最大值的。其條件是麥克風個數8,距離3cm,頻率8000Hz

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

delay and sum的玩法很多,比如可以按照數字信号處理加窗的方法,同樣給空間信号加窗,窗的形式也各種各樣。比如最典型的一種加Dolph-Chebyshev窗,此方法可以大大降低旁瓣,是一種比較簡單的降低旁瓣的技術,但是需要較多數量的麥克風個數。此外。  可以看到下圖應用窗之後旁瓣明顯降低了許多。

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法
語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

最大指向性因數 Maximum DF

上述的Delay and Sum(DS)是最大化WNG,而此類則是最大化DF,也即

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

此時對應的陣列的系數即可滿足最大化DF,這裡就不敲公式了。相比于DS,MDF的DF最大化的同時,肯定損失了WNG,尤其是在低頻段,WNG甚至小于0db,反而放大了白噪聲。下圖就是d=3時,陣列在不同頻率及麥克風個數下典型的WNG和DF的表現圖。

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法
語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

下圖則是Maximum在M=8,d=3cm,f=8000,phi=90度時候的beampattern 

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

數值計算表明,當maxDF的入射角為0或者180的時候,DF才會達到最大。且麥克風間距小的時候,DF也會越來越大。是以我們管這種beamforming叫做superdirective

RobustSuperdirective

superdirective 的波束形成的DF很漂亮,但是WNG的表現卻很糟糕,是以可以給予WNG和DF設定不同的比例因子,進而找到一個能夠較好的平衡WNG和DF的beamforming以增加對噪聲的魯棒性,此類的beamforming即為Robust Superdirective。

下圖分别為平衡因數等于0.01(越大越利于WNG)時候,在f=1000和8000Hz時候beam的表現

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法
語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

下兩圖分别為平衡因數等于0.1和0.9時候陣列的表現。

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法
語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

Null steering

此類波束形成,顧名思義,沒有導向矢量(steering vector),隻是利用了空間中不同聲源的角度,定制化的波束形成。比如有四個聲源,角度分别不同,依據此方法,可以隻保留第一個聲源角度方位資訊的信号,而壓制其他方位的信号。

同樣的此方法涉及到WNG和DF平衡的問題,是以也引入了平衡因數,用以控制這個跷跷闆。以下兩圖分别是45度和90度有幹擾聲源的null steering(設計0度保持,45、90度壓制),可以看到45,90度的信号已經被完全壓制,0度時候信号保持的還算可以,但是相應的其他方向比如,90-180度陣列的增益會達到最大。是以應用此方法的前提是隻有這幾個方向有信号,其他方向都沒有。

語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法
語音增強三,幾種固定波束形成技術Delay and Sum最大指向性因數 Maximum DFRobustSuperdirectiveNull steeringsubspace法

subspace法

最後一種則是subspace法,子空間法。

我花了很多的時間研究此方法,但最終還是沒能得到正确的結果,很遺憾。

方法的核心思想是把信号分解到隻有噪聲+信号和隻有噪聲的子空間中,通過聯合對角化的方法求得特征向量及對應的特征值,特征值按降序排列,對應的特征向量對應不同的子空間。求解時隻要按序選擇不同的子空間個數就可以得到不同的beamforming。當取全部的特征向量時,對應的是Delay and Sum,當取第一個特征值最大對應但特征向量的時候則是super directive。依次來平衡WNG和DF。

我花了很長的時間研究矩陣的聯合對角化,從一開始自己看原文了解,到最後求助原文作者提供給我參考書籍獲得聯合對角化的求解matlab代碼,照葫蘆畫瓢用python實作了一下,但還是沒能得到正确結果。此時花費的時間已經約4-5天,有點太長了,是以就停下來繼續準備後續的adaptive了。并于今天做了此文的總結。

不過也不是一點收獲也沒有,我借此重新學習了特征值、特征向量、矩陣對角化等概念,這些在降噪、盲分離中非常重要,但計算開銷較大,還好,還好,是以子空間在實時降噪增強中并不多見。于是乎,就先這樣吧,以後說不定哪一天就突然撥開烏雲見天日了呢。

下一周adaptive beamforming搞起!  

更新,不死心的我今天又琢磨了一天的subspace,這一次終于對了。是numpy函數dot一維向量自動計算内積造成的,真的太坑了。。稍微沒注意。。搞了好幾天。。。真是大坑,不過搞定了問題終于松了一口氣,可以開開心心的進擊adaptive filter了

繼續閱讀