麥克風陣列算法有兩大類,一類是波束形成算法,另一類是盲源分離算法,兩者互有優劣,先記錄波束形成算法的筆記。本篇博客先說波束形成的優缺點,波束形成的基礎知識,然後分別介紹固定波束形成(fixed beamforming, data-independent) 和自適應波束形成(adaptive beamforming, data-dependent)。
波束形成的優缺點(Pros & Cons)
優點
- 波束形成的優點是可以利用空間信息做空間濾波(Spatial filtering)。
以單麥克風降噪爲例。單麥克風接收到的信號,無法分辨來波方向。對於噪聲的抑制主要抑制平穩噪聲。因爲語音信號是非平穩的,如何準確區分非平穩的噪聲和語音比較困難。麥克風陣列至少有兩顆麥克風,能夠一定程度的區分來波方向。對於非期望方向的干擾語音或者其他非平穩噪聲可以線性地衰減。
缺點
- 波束形成算法的性能依賴目標信號的VAD信息。
以GSC結構爲例,MC的自適應噪聲消除,其濾波係數更新依賴於這個VAD信息。只有當目標信號(有效語音)不存在時,才需要更新濾波器係數。否則會將有效語音消除掉。
- 波束形成算法的性能依賴目標信號的DOA信息。
惡劣的聲場環境,強噪聲和長混響都會影響DOA算法的準確性。準確的DOA算法運算量很大。
- 如果目標信號和干擾信號在同一個波束內,是無法消除的。
目標信號和干擾信號在同一個波束內,波束形成是無法分辨出它們的,空間濾波無法進行,自然無法消除。
- 長混響條件下,波束形成性能會下降。
長混響,比如T60=300ms,目標信號和干擾信號會相互泄露到對方的波束,空間濾波性能下降。原因同上。
麥克風的指向性(Directivity pattern of a microphone)
這裏說的是麥克風的指向性,後面將要說的麥克風陣列的指向性,需要區分開。
- 麥克風的指向性是由麥克風的物理特性決定的,它描述了麥克風對特定來波方向的信號增益和相位移動。類似於時不變系統對信號的幅頻響應和相頻響應。
- 來波方向應該是一個三維的,有水平角(elevation angle)和俯仰角(azimuth angle)。爲了簡化問題,先只考慮二維的場景。
- 麥克風的指向性就可以用H(ω,θ) 表示,其中ω表示頻率,θ表示角度。如下圖所示,爲某一特定頻率ω0的麥克風指向性H(ω0,θ)
信號模型和定義
假設信號都來自遠場
- 麥克風接收到的信號響應,由兩部分響應組成。一部分是麥克風的指向性,一部分是由麥克風位置決定的相位。
Ym(ω,θ)=Hm(ω,θ)∗exp(−jωτm(θ))∗S(ω)
其中Hm是麥克風的指向性,τm是與麥克風位置相關的延遲,S(ω)是原信號。
- 麥克風陣列接收到的信號,需要將上述信號(m=1,2...M)用向量形式來表達。
Y(ω,θ)=d(ω,θ)∗S(ω)
d(ω,θ)=[H1(ω,θ)exp(−jωτ1(θ))...HM(ω,θ)exp(−jωτM(θ))]
其中d是導向矢量(steering vector),是由麥克風指向性和麥克風位置決定的。
- 如果所有的麥克風擁有同樣的指向性,H0(ω,θ),則導向矢量可以提取公因式。如果使用的是全指向性麥克風,則有H0(ω,θ)=1,導向矢量只由麥克風的位置決定。
d(ω,θ)=H0(ω,θ)[1,exp(−jωτ2(θ)),...,exp(−jωτM(θ))]
- 麥克風陣列的輸出信號,經過濾波相加(filter-and-sum)之後,得到輸出。
Z(ω,θ)=FH(ω)Y(ω,θ)=FH(ω)d(ω,θ)S(ω)
其中F(ω)是濾波器係數。
- 陣列傳遞函數,英文可以是directivity pattern,也可以是transfer function,是等價的。
H(ω,θ)=Z(ω,θ)/S(ω)=FH(ω)d(ω,θ) (這裏的共軛還沒能理解是怎麼推導的)
評價指標
麥克風陣列的性能主要用白噪聲增益和指向性來評價。前者用來評價陣列在白噪聲場景下的抑制能力,後者用來評價陣列在擴散場噪聲下的陣列增益。其本質都是陣列增益,可以理解爲輸出信噪比除以輸入信噪比,也可以表示爲信號的傳遞函數∣∣2除以噪聲的傳遞函數∣∣2。在表示噪聲的輸出函數之前,先引入噪聲的相關矩陣和相干矩陣的概念,即noise correlation matrix 和 noise coherence matrix。
-
噪聲相關矩陣 noise correlation matrix
-
噪聲相干矩陣 noise coherence matrix
白噪聲的相干矩陣爲單位陣,即Γnoisewhite(ω)=I(ω)
擴散噪聲的相干矩陣可以用以下公式來表示Γnoisediffuse(ω)=sinc(ωfsd/c)
-
陣列增益函數 array gain
G(ω,θ)=SNRinSNRout=FH(ω)Γnoise(ω)F(ω)∣FH(ω)d(ω,θ)∣2
-
白噪聲增益 white noise gain
因爲白噪聲的自相關矩陣是一個單位陣,即Γnoisewhite(ω)=I(ω)
WNG(ω,θ)=FH(ω)F(ω)∣FH(ω)d(ω,θ)∣2
-
指向性 array directivity index
DI(ω,θ)=FH(ω)Γnoisediffuse(ω)F(ω)∣FH(ω)d(ω,θ)∣2
最大化白噪聲增益
最大化白噪聲增益,即求出一組F(ω)參數,使得白噪聲增益最大。
F(ω)=arg{maxWNG(ω,θ)}=arg{maxFH(ω)F(ω)∣FH(ω)d(ω,θ)∣2}
對於上式,有一個限制條件,分子是1。即對期望方向的信號增益是0dB。這樣最大化問題就轉變爲最小化噪聲輸出功率的問題。
F(ω)=arg{minFH(ω)F(ω)},s.t.∣FH(ω)d(ω,ϕ)∣=1
得到最優解爲
F(ω)=∣d(ω,ϕ)∣2d(ω,ϕ)