(A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function) 1
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}
yi(m)=xi(m)+xi(m),i=1,2(1)
其中 i i i为麦克风序号, m m m为采样点
S
T
F
T
STFT
STFT到时频域:
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}
Yi(ωl,k)=Xi(ωl,k)+Ni(ω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}
y1,y2间的复相干函数定义为:
Γ
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}
Γy1y2(ω,k)=ϕy1y1ϕy2y2ϕy1y2(3)
其中
ϕ
u
u
\phi_{uu}
ϕuu为
P
S
D
PSD
PSD(power spectral density,
ϕ
u
v
\phi_{uv}
ϕuv为
C
S
D
CSD
CSD(cross-power spectral density)
在远场模型下,一个确定的方向声源在两个麦克风
θ
\theta
θ角方向入射,在两个麦克风处接收到的信号的理想相干函数可以表示为 2
Γ
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}
Γu1u2(ω)=ejωfs(d/c)cos(θ)(4)
关于这个函数,咱们可以画个图验证以下,信号从双麦
4
5
o
45^o
45o入射,估计出来的相干函数和理想曲线(上式)的实部和虚部对比作图如下:
从图中可以看到,式(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}
Γy1y2=Γx1x2+Γn1n2(5)
两边同时除以
ϕ
y
1
y
1
ϕ
y
2
y
2
{\sqrt{\phi_{y_{1}y_{1}}\phi_{y_{2}y_{2}}}}
ϕy1y1ϕy2y2,变成这样:
Γ
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}
Γy1y2(ω,k)=ϕy1y1ϕy2y2ϕx1x2+ϕy1y1ϕy2y2ϕn1n2(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}
SNRi=ϕniniϕxixi(7)
因为麦克风间距比较小,可以大致认为两个麦克风处的
S
N
R
SNR
SNR基本相同,这样一顿变变变,
接收信号的相干函数就变成了:
Γ
^
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}
Γ^y1y2(ω,k)=Γx1x21+SNR^SNR^+Γn1n21+SNR^1(8)
看下这个公式,可以知道,当
S
N
R
高
(
→
+
∞
)
SNR高(\rightarrow +\infty)
SNR高(→+∞)时,
Γ
^
y
1
y
2
(
ω
,
k
)
\hat{\Gamma }_{y_{1}y_{2}}(\omega ,k)
Γ^y1y2(ω,k)主要受目标信号的相干函数影响,当
S
N
R
低
(
→
0
)
SNR低(\rightarrow 0)
SNR低(→0)时,
Γ
^
y
1
y
2
(
ω
,
k
)
\hat{\Gamma }_{y_{1}y_{2}}(\omega ,k)
Γ^y1y2(ω,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}
Γ^y1y2(ω)=[cos(ωτ)+jsin(ωτ)]1+SNR^SNR^+[cos(ωτcosθ)+jsin(ωτcosθ)]1+SNR^1 (9)
其中
τ
=
f
s
(
d
/
c
)
\tau =f_s (d/c)
τ=fs(d/c),后面会根据(9)式的特定设计想要的增益函数
下面来分析下噪声在不同位置时的情况:
-
θ
=
9
0
o
\theta=90^o
θ=90o
当干扰在双麦正前方的时候,看式(4),cos(90)=0,因此这个时候,噪声产生的相干函数之为1,为实数,没有虚部,看式(9),可以知道,这个时候只有当语音存在的时候, Γ ^ y 1 y 2 ( ω ) \hat{\Gamma }_{y_{1}y_{2}}(\omega) Γ^y1y2(ω)才有虚部(这个特点在这里好像并没有起到什么作用?),因此,这种情况下,增益函数就应该抑制相干函数实部为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} G1(ω,k)=1−∣∣real(Γ^y1y2(ω,k))∣∣P(ω)(10)
这个函数的曲线如下3:
从这个曲线图来看,当输入接近1的时候,
G
1
G_1
G1的值很小,起到抑制作用,同时,指数系数
P
P
P能够控制衰减量的大小。
-
9
0
o
<
θ
≤
18
0
o
90^o<\theta\leq 180^o
90o<θ≤180o
上面 θ = 9 0 o \theta=90^o θ=90o咱们看的是相干函数的实部特点,这里 9 0 o < θ < 18 0 o 90^o<\theta<180^o 90o<θ<180o的时候,干扰信号的相干函数也是有虚部的,那就看下带噪信号相干函数的虚部有什么规律
由(9)可以直接写出 Γ ^ y 1 y 2 ( ω ) \hat{\Gamma }_{y_{1}y_{2}}(\omega) Γ^y1y2(ω)的虚部表达式如下:
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} imag[Γ^y1y2(ω)]=sin(ωτ)1+SNR^SNR^+sin(ωτcosθ)1+SNR^1 (11)
当 S N R ^ 高 ( → + ∞ ) \hat{SNR}高(\rightarrow +\infty) SNR^高(→+∞)时, Γ ^ y 1 y 2 ( ω , k ) \hat{\Gamma }_{y_{1}y_{2}}(\omega ,k) Γ^y1y2(ω,k)主要受目标信号的相干函数影响,当 S N R ^ 低 ( → 0 ) \hat{SNR}低(\rightarrow 0) SNR^低(→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) Γ^y1y2(ω,k)≈sin(ωτcosθ),即主要受噪声的影响,
根据前面假定的 ω < π , f s = 16000 \omega<\pi,fs=16000 ω<π,fs=16000,麦间距为20mm左右,因此 τ = f s ∗ d / c 也 是 小 于 1 \tau =fs*d/c也是小于1 τ=fs∗d/c也是小于1,这样的条件下 s i n ( ω τ c o s θ ) sin(\omega \tau cos\theta) sin(ωτcosθ)恒小于0的,这就揭示了一个现象:当噪声占主要成分时,相干函数虚部为0的概率就更大。
这里也举两个极端的例子,
当 θ = 18 0 o \theta=180^o θ=180o时,若 i m a g [ Γ ^ y 1 y 2 ] < 0 imag[\hat{\Gamma }_{y_{1}y_{2}}]<0 imag[Γ^y1y2]<0,根据式(11)可以得到 S N R ^ < 1 ( 0 d B ) \hat{SNR}<1(0dB) SNR^<1(0dB),而
当 θ = 9 0 o \theta=90^o θ=90o时,这是上面已经讨论过的一种情况,此时若还需要 i m a g [ Γ ^ y 1 y 2 ] < 0 imag[\hat{\Gamma }_{y_{1}y_{2}}]<0 imag[Γ^y1y2]<0,则根据(11)式得到 S N R ^ < 0 \hat{SNR}<0 SNR^<0,而由 S N R ^ \hat{SNR} SNR^的定义(7)可以知道 S N R ^ \hat{SNR} SNR^是恒为正的,因此这也的确不属于这里讨论的范围。
综上讨论,当 9 0 o < θ ≤ 18 0 o 90^o<\theta\leq 180^o 90o<θ≤180o时,增益函数设计为:
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} G2(ω,k)={mu,imag[Γ^y1y2(ω)]<Q(ω)1,otherwise (12)
最终的增益函数:
讨论了
θ
=
9
0
o
\theta=90^o
θ=90o和
9
0
o
<
θ
≤
18
0
o
90^o<\theta\leq 180^o
90o<θ≤180o的两种情况,最后得到的增益函数为
G
(
ω
,
k
)
=
G
1
(
ω
,
k
)
∗
G
2
(
ω
,
k
)
G(\omega,k)=G_1(\omega,k)*G_2(\omega,k)
G(ω,k)=G1(ω,k)∗G2(ω,k)
当一个滤波器激活的时候另一个滤波器接近1,因此两个滤波器相互并不影响
最后实现的时候还根据不同频段的特点分频段处理,详细内容可以看看作者论文中的分析
看看处理前后的区别:
这篇论文中的方法输出音频幅度为变小一些,但放大点可以看到对
9
0
o
90^o
90o的干扰抑制还是很明显的
References:
Yousefian, N., & Loizou, P. (2011). A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function. IEEE Transactions on Audio, Speech, and Language Processing. ↩︎
M. Brandstein and D. Ward, Microphone Arrays: Signal Processing Techniques and Applications. Berlin, Germany: Springer Verlag,2001(p.32) ↩︎
N. Yousefian, K. Kokkinakis, and P. C. Loizou, “A coherence-based algorithm for noise reduction in dual-microphone applications,” in Proc.Eur. Signal Process. Conf. (EUSIPCO’10), Alborg, Denmark, Aug.
2010, pp. 1904–1908 ↩︎