1 . Abstract
这里介绍一种基于相干函数1的双麦降噪算法,上一篇2中的方法从本质上讲应该是这篇论文里的一个特例,或者说是一种简化处理,这里咱们就来看看完整的框架
先上系统框图:
基本与上一篇里面的相同,这里就多了一个
S
N
R
E
s
t
i
m
a
t
i
o
n
SNR Estimation
SNR Estimation(信噪比估计),很多降噪算法都依赖于信噪比估计,得到信噪比后,就可以用谱减或维纳滤波进行降噪。那这里我们就主要来看看怎么得到这个信噪比。
2 . SNR Estimation
信号定义以及相干函数的计算都是跟上一篇相同,这里就不重复,直接跳到相干函数跟信噪比的公式:
公式
Γ
^
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
^
(1)
\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{1}
Γ^y1y2(ω)=[cos(ωτ)+jsin(ωτ)]1+SNR^SNR^+[cos(ωτcosθ)+jsin(ωτcosθ)]1+SNR^1 (1)
分别写出
Γ
^
y
1
y
2
(
ω
)
\hat{\Gamma }_{y_{1}y_{2}}(\omega)
Γ^y1y2(ω)的实部和虚部如下:
ℜ
=
S
N
^
R
1
+
S
N
^
R
cos
ω
˙
+
1
1
+
S
N
^
R
cos
α
(2)
\Re=\frac{\mathrm{S} \hat{\mathrm{N}} \mathrm{R}}{1+\mathrm{S} \hat{\mathrm{N}} \mathrm{R}} \cos \dot{\omega}+\frac{1}{1+\mathrm{S} \hat{\mathrm{N}} \mathrm{R}} \cos \alpha\tag{2}
ℜ=1+SN^RSN^Rcosω˙+1+SN^R1cosα(2)
ℑ
=
S
N
R
^
1
+
S
N
^
R
sin
ω
˙
+
1
1
+
S
N
R
^
sin
α
(3)
\Im=\frac{\hat{SNR}}{1+\mathrm{S} \hat{\mathrm{N}} \mathrm{R}} \sin \dot{\omega}+\frac{1}{1+\hat{SNR}} \sin \alpha \tag{3}
ℑ=1+SN^RSNR^sinω˙+1+SNR^1sinα (3)
其中
ω
˙
=
ω
τ
,
α
=
ω
˙
c
o
s
θ
\dot{\omega}=\omega \tau,\alpha=\dot{\omega} cos\theta
ω˙=ωτ,α=ω˙cosθ
观察(2)、(3)两式,两个方程,两个未知量,
S
N
R
^
和
α
\hat{SNR}和\alpha
SNR^和α,因此,根据(2)、(3)两式解方程可以得到
S
N
R
^
和
α
\hat{SNR}和\alpha
SNR^和α,其中
S
N
R
^
\hat{SNR}
SNR^是我们想要的信息,
α
\alpha
α是方向信息,因此这种方法其实也可以用在DOA相关方向上。
先写出
S
N
^
R
\mathrm{S} \hat{\mathrm{N}} \mathrm{R}
SN^R关于
α
\alpha
α的表达式:
S
N
^
R
=
sin
α
−
ℑ
ℑ
−
sin
ω
˙
(4)
\mathrm{S} \hat{\mathrm{N}} \mathrm{R}=\frac{\sin \alpha-\Im}{\Im-\sin \dot{\omega}} \tag{4}
SN^R=ℑ−sinω˙sinα−ℑ(4)
论文中给出了详细推导求解过程,这里就直接写出结果了
{
A
=
ℑ
−
sin
ω
˙
B
=
cos
ω
˙
−
ℜ
C
=
ℜ
sin
ω
˙
−
ℑ
cos
ω
˙
(5)
\left\{\begin{array}{l}{A=\Im-\sin \dot{\omega}} \\ {B=\cos \dot{\omega}-\Re} \\ {C=\Re \sin \dot{\omega}-\Im \cos \dot{\omega}}\end{array}\right. \tag{5}
⎩⎨⎧A=ℑ−sinω˙B=cosω˙−ℜC=ℜsinω˙−ℑcosω˙(5)
T
=
1
−
ℜ
cos
ω
˙
−
ℑ
sin
ω
˙
(6)
T=1-\Re \cos \dot{\omega}-\Im \sin \dot{\omega} \tag{6}
T=1−ℜcosω˙−ℑsinω˙(6)
sin
α
=
−
B
∗
C
+
A
∗
T
A
2
+
B
2
(7)
\sin \alpha=\frac{-B*C+A*T}{A^2+B^2} \tag{7}
sinα=A2+B2−B∗C+A∗T(7)
式(5)、(6)都是已知量,然后计算(7),最后代入到(4)中就得到了
S
N
^
R
\mathrm{S} \hat{\mathrm{N}} \mathrm{R}
SN^R
最后,就可以写出增益函数如下了,这里用的是(square-root) Wiener filter
G
(
ω
,
k
)
=
SNR
(
ω
,
k
)
SNR
(
ω
,
k
)
+
1
(8)
G(\omega, k)=\sqrt{\frac{\operatorname{SNR}(\omega, k)}{\operatorname{SNR}(\omega, k)+1}} \tag{8}
G(ω,k)=SNR(ω,k)+1SNR(ω,k) (8)
3. Experiment
还是上篇一样的音频,对比下处理前后结果
干扰抑制效果明显,且没有了上一篇中声音变小的现象
References:
Yousefian, N., & Loizou, P. C. (2013). A Dual-Microphone Algorithm That Can Cope With Competing-Talker Scenarios. IEEE Transactions on Audio, Speech, and Language Processing, 21(1), 145–155 ↩︎
Yousefian, N., & Loizou, P. (2011). A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function. IEEE Transactions on Audio, Speech, and Language Processing. ↩︎