(A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function)
1.系統框圖
系統框圖如下,輸入雙通道信號分幀加窗、算個相干函數,就得到了濾波係數G G G ,看起來好簡單,那就看看它的詳細過程
A. Definition of Coherence Function
輸入帶噪信號定義爲:
y i ( m ) = x i ( m ) + x i ( m ) , i = 1 , 2 (1)
y_{i}(m)=x_{i}(m)+x_{i}(m),i=1,2 \tag{1}
y i ( m ) = x i ( m ) + x i ( m ) , i = 1 , 2 ( 1 )
其中i i i 爲麥克風序號,m m m 爲採樣點
S T F T STFT S T F T 到時頻域:
Y i ( ω l , k ) = X i ( ω l , k ) + N i ( ω l , k ) , i = 1 , 2 (2)
Y_{i}(\omega_{l},k)=X_{i}(\omega_{l},k)+N_{i}(\omega_{l},k),i=1,2 \tag{2}
Y i ( ω l , k ) = X i ( ω l , k ) + N i ( ω l , k ) , i = 1 , 2 ( 2 )
其中ω l \omega_{l} ω l 爲角頻率,k k k 爲幀序號,下面的表示會省略掉l 和 k l和k l 和 k (for better clarity)
輸入信號y 1 , y 2 y_{1},y_{2} y 1 , y 2 間的復相干函數定義爲:
Γ y 1 y 2 ( ω , k ) = ϕ y 1 y 2 ϕ y 1 y 1 ϕ y 2 y 2 (3)
\Gamma _{y_{1}y_{2}}(\omega ,k)=\frac{\phi_{y_{1}y_{2}}}{\sqrt{\phi_{y_{1}y_{1}}\phi_{y_{2}y_{2}}}} \tag{3}
Γ y 1 y 2 ( ω , k ) = ϕ y 1 y 1 ϕ y 2 y 2 ϕ y 1 y 2 ( 3 )
其中ϕ u u \phi_{uu} ϕ u u 爲P S D PSD P S D (power spectral density,ϕ u v \phi_{uv} ϕ u v 爲C S D CSD C S D (cross-power spectral density)
在遠場模型下,一個確定的方向聲源在兩個麥克風θ \theta θ 角方向入射,在兩個麥克風處接收到的信號的理想相干函數可以表示爲
Γ u 1 u 2 ( ω ) = e j ω f s ( d / c ) c o s ( θ ) (4)
\Gamma _{u_{1}u_{2}}(\omega)=e^{j\omega f_s(d/c)cos(\theta)} \tag{4}
Γ u 1 u 2 ( ω ) = e j ω f s ( d / c ) c o s ( θ ) ( 4 )
關於這個函數,咱們可以畫個圖驗證以下,信號從雙麥4 5 o 45^o 4 5 o 入射,估計出來的相干函數和理想曲線(上式)的實部和虛部對比作圖如下:
從圖中可以看到,式(4)與實際是相符的,但是要注意,這個是無混響的模型(order=0),混響越重這個曲線偏離越大
B. Proposed Method Based on Coherence Function
假設噪聲和信號不相關,則接收信號的CSD爲目標信號的CSD和噪聲信號CSD之和:
Γ y 1 y 2 = Γ x 1 x 2 + Γ n 1 n 2 (5)
\Gamma _{y_{1}y_{2}}=\Gamma _{x_{1}x_{2}}+\Gamma _{n_{1}n_{2}} \tag{5}
Γ y 1 y 2 = Γ x 1 x 2 + Γ n 1 n 2 ( 5 )
兩邊同時除以ϕ y 1 y 1 ϕ y 2 y 2 {\sqrt{\phi_{y_{1}y_{1}}\phi_{y_{2}y_{2}}}} ϕ y 1 y 1 ϕ y 2 y 2 ,變成這樣:
Γ y 1 y 2 ( ω , k ) = ϕ x 1 x 2 ϕ y 1 y 1 ϕ y 2 y 2 + ϕ n 1 n 2 ϕ y 1 y 1 ϕ y 2 y 2 (6)
\Gamma _{y_{1}y_{2}}(\omega ,k)=\frac{\phi_{x_{1}x_{2}}}{\sqrt{\phi_{y_{1}y_{1}}\phi_{y_{2}y_{2}}}}+\frac{\phi_{n_{1}n_{2}}}{\sqrt{\phi_{y_{1}y_{1}}\phi_{y_{2}y_{2}}}} \tag{6}
Γ y 1 y 2 ( ω , k ) = ϕ y 1 y 1 ϕ y 2 y 2 ϕ x 1 x 2 + ϕ y 1 y 1 ϕ y 2 y 2 ϕ n 1 n 2 ( 6 )
同樣假定接收信號的PSD爲目標信號的PSD和噪聲信號PSD之和,同時定義:
S N R i = ϕ x i x i ϕ n i n i (7)
SNR_i = \frac{\phi_{x_{i}x_{i}}}{\phi_{n_{i}n_{i}}} \tag{7}
S N R i = ϕ n i n i ϕ x i x i ( 7 )
因爲麥克風間距比較小,可以大致認爲兩個麥克風處的S N R SNR S N R 基本相同,這樣一頓變變變,
接收信號的相干函數就變成了:
Γ ^ y 1 y 2 ( ω , k ) = Γ x 1 x 2 S N R ^ 1 + S N R ^ + Γ n 1 n 2 1 1 + S N R ^ (8)
\hat{\Gamma }_{y_{1}y_{2}}(\omega ,k)=\Gamma _{x_{1}x_{2}}\frac{\hat{SNR}}{1+\hat{SNR}}+\Gamma _{n_{1}n_{2}}\frac{1}{1+\hat{SNR}} \tag{8}
Γ ^ y 1 y 2 ( ω , k ) = Γ x 1 x 2 1 + S N R ^ S N R ^ + Γ n 1 n 2 1 + S N R ^ 1 ( 8 )
看下這個公式,可以知道,當S N R 高 ( → + ∞ ) SNR高(\rightarrow +\infty) S N R 高 ( → + ∞ ) 時,Γ ^ y 1 y 2 ( ω , k ) \hat{\Gamma }_{y_{1}y_{2}}(\omega ,k) Γ ^ y 1 y 2 ( ω , k ) 主要受目標信號的相干函數影響,當S N R 低 ( → 0 ) SNR低(\rightarrow 0) S N R 低 ( → 0 ) 時,Γ ^ y 1 y 2 ( ω , k ) \hat{\Gamma }_{y_{1}y_{2}}(\omega ,k) Γ ^ y 1 y 2 ( ω , k ) 主要受噪聲信號的影響(其實這個結論不經過這一頓猛於虎的操作也能理解),
好了,接下來,就到最重要的一個分析公式了,將理想的相干函數(4)代入到(8)(歐拉公式替換)得到:
Γ ^ y 1 y 2 ( ω ) = [ c o s ( ω τ ) + j s i n ( ω τ ) ] S N R ^ 1 + S N R ^ + [ c o s ( ω τ c o s θ ) + j s i n ( ω τ c o s θ ) ] 1 1 + S N R ^ (9)
\hat{\Gamma }_{y_{1}y_{2}}(\omega)=[cos(\omega \tau)+jsin(\omega \tau)]\frac{\hat{SNR}}{1+\hat{SNR}}+[cos(\omega \tau cos\theta)+jsin(\omega \tau cos\theta)]\frac{1}{1+\hat{SNR}} \tag{9}
Γ ^ y 1 y 2 ( ω ) = [ c o s ( ω τ ) + j s i n ( ω τ ) ] 1 + S N R ^ S N R ^ + [ c o s ( ω τ c o s θ ) + j s i n ( ω τ c o s θ ) ] 1 + S N R ^ 1 ( 9 )
其中τ = f s ( d / c ) \tau =f_s (d/c) τ = f s ( d / c ) ,後面會根據(9)式的特定設計想要的增益函數
下面來分析下噪聲在不同位置時的情況:
θ = 9 0 o \theta=90^o θ = 9 0 o
當干擾在雙麥正前方的時候,看式(4),cos(90)=0,因此這個時候,噪聲產生的相干函數之爲1,爲實數 ,沒有虛部,看式(9),可以知道,這個時候只有當語音存在的時候,Γ ^ y 1 y 2 ( ω ) \hat{\Gamma }_{y_{1}y_{2}}(\omega) Γ ^ y 1 y 2 ( ω ) 纔有虛部(這個特點在這裏好像並沒有起到什麼作用?),因此,這種情況下,增益函數就應該抑制相干函數實部爲1的信號,如是,提出增益函數如下:
G 1 ( ω , k ) = 1 − ∣ r e a l ( Γ ^ y 1 y 2 ( ω , k ) ) ∣ P ( ω ) (10)
G_1(\omega,k)=1-\begin{vmatrix}
real(\hat{\Gamma }_{y_{1}y_{2}}(\omega,k))
\end{vmatrix}
^{P(\omega)}\tag{10}
G 1 ( ω , k ) = 1 − ∣ ∣ r e a l ( Γ ^ y 1 y 2 ( ω , k ) ) ∣ ∣ P ( ω ) ( 1 0 )
這個函數的曲線如下:
從這個曲線圖來看,當輸入接近1的時候,G 1 G_1 G 1 的值很小,起到抑制作用,同時,指數係數P P P 能夠控制衰減量的大小。
9 0 o < θ ≤ 18 0 o 90^o<\theta\leq 180^o 9 0 o < θ ≤ 1 8 0 o
上面θ = 9 0 o \theta=90^o θ = 9 0 o 咱們看的是相干函數的實部特點,這裏9 0 o < θ < 18 0 o 90^o<\theta<180^o 9 0 o < θ < 1 8 0 o 的時候,干擾信號的相干函數也是有虛部的,那就看下帶噪信號相干函數的虛部有什麼規律
由(9)可以直接寫出Γ ^ y 1 y 2 ( ω ) \hat{\Gamma }_{y_{1}y_{2}}(\omega) Γ ^ y 1 y 2 ( ω ) 的虛部表達式如下:
i m a g [ Γ ^ y 1 y 2 ( ω ) ] = s i n ( ω τ ) S N R ^ 1 + S N R ^ + s i n ( ω τ c o s θ ) 1 1 + S N R ^ (11)
imag[\hat{\Gamma }_{y_{1}y_{2}}(\omega)]=sin(\omega \tau)\frac{\hat{SNR}}{1+\hat{SNR}}+sin(\omega \tau cos\theta)\frac{1}{1+\hat{SNR}} \tag{11}
i m a g [ Γ ^ y 1 y 2 ( ω ) ] = s i n ( ω τ ) 1 + S N R ^ S N R ^ + s i n ( ω τ c o s θ ) 1 + S N R ^ 1 ( 1 1 )
當S N R ^ 高 ( → + ∞ ) \hat{SNR}高(\rightarrow +\infty) S N R ^ 高 ( → + ∞ ) 時,Γ ^ y 1 y 2 ( ω , k ) \hat{\Gamma }_{y_{1}y_{2}}(\omega ,k) Γ ^ y 1 y 2 ( ω , k ) 主要受目標信號的相干函數影響,當S N R ^ 低 ( → 0 ) \hat{SNR}低(\rightarrow 0) S N R ^ 低 ( → 0 ) 時,Γ ^ y 1 y 2 ( ω , k ) ≈ s i n ( ω τ c o s θ ) \hat{\Gamma }_{y_{1}y_{2}}(\omega ,k)\approx sin(\omega \tau cos\theta) Γ ^ y 1 y 2 ( ω , k ) ≈ s i n ( ω τ c o s θ ) ,即主要受噪聲的影響,
根據前面假定的ω < π , f s = 16000 \omega<\pi,fs=16000 ω < π , f s = 1 6 0 0 0 ,麥間距爲20mm左右,因此τ = f s ∗ d / c 也 是 小 於 1 \tau =fs*d/c也是小於1 τ = f s ∗ d / c 也 是 小 於 1 ,這樣的條件下s i n ( ω τ c o s θ ) sin(\omega \tau cos\theta) s i n ( ω τ c o s θ ) 恆小於0的,這就揭示了一個現象:當噪聲佔主要成分時,相干函數虛部爲0的概率就更大 。
這裏也舉兩個極端的例子,
當θ = 18 0 o \theta=180^o θ = 1 8 0 o 時,若i m a g [ Γ ^ y 1 y 2 ] < 0 imag[\hat{\Gamma }_{y_{1}y_{2}}]<0 i m a g [ Γ ^ y 1 y 2 ] < 0 ,根據式(11)可以得到S N R ^ < 1 ( 0 d B ) \hat{SNR}<1(0dB) S N R ^ < 1 ( 0 d B ) ,而
當θ = 9 0 o \theta=90^o θ = 9 0 o 時,這是上面已經討論過的一種情況,此時若還需要i m a g [ Γ ^ y 1 y 2 ] < 0 imag[\hat{\Gamma }_{y_{1}y_{2}}]<0 i m a g [ Γ ^ y 1 y 2 ] < 0 ,則根據(11)式得到S N R ^ < 0 \hat{SNR}<0 S N R ^ < 0 ,而由S N R ^ \hat{SNR} S N R ^ 的定義(7)可以知道S N R ^ \hat{SNR} S N R ^ 是恆爲正的,因此這也的確不屬於這裏討論的範圍。
綜上討論,當9 0 o < θ ≤ 18 0 o 90^o<\theta\leq 180^o 9 0 o < θ ≤ 1 8 0 o 時,增益函數設計爲:
G 2 ( ω , k ) = { m u , i m a g [ Γ ^ y 1 y 2 ( ω ) ] < Q ( ω ) 1 , o t h e r w i s e (12)
G_2(\omega ,k) = \left\{\begin{matrix}
\begin{aligned}
&mu,imag[\hat{\Gamma }_{y_{1}y_{2}}(\omega)]<Q(\omega)\\
&1,otherwise
\end{aligned}
\end{matrix}\right.\tag{12}
G 2 ( ω , k ) = { m u , i m a g [ Γ ^ y 1 y 2 ( ω ) ] < Q ( ω ) 1 , o t h e r w i s e ( 1 2 )
最終的增益函數:
討論了θ = 9 0 o \theta=90^o θ = 9 0 o 和9 0 o < θ ≤ 18 0 o 90^o<\theta\leq 180^o 9 0 o < θ ≤ 1 8 0 o 的兩種情況,最後得到的增益函數爲
G ( ω , k ) = G 1 ( ω , k ) ∗ G 2 ( ω , k )
G(\omega,k)=G_1(\omega,k)*G_2(\omega,k)
G ( ω , k ) = G 1 ( ω , k ) ∗ G 2 ( ω , k )
當一個濾波器激活的時候另一個濾波器接近1,因此兩個濾波器相互並不影響
最後實現的時候還根據不同頻段的特點分頻段處理,詳細內容可以看看作者論文中的分析
看看處理前後的區別:
這篇論文中的方法輸出音頻幅度爲變小一些,但放大點可以看到對9 0 o 90^o 9 0 o 的干擾抑制還是很明顯的
References: