A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function

(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 lk(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) SNR0时, Γ ^ 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)=1real(Γ^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 τ=fsd/c1,这样的条件下 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^<10dB,而
      当 θ = 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:


  1. Yousefian, N., & Loizou, P. (2011). A Dual-Microphone Speech Enhancement Algorithm Based on the Coherence Function. IEEE Transactions on Audio, Speech, and Language Processing. ↩︎

  2. M. Brandstein and D. Ward, Microphone Arrays: Signal Processing Techniques and Applications. Berlin, Germany: Springer Verlag,2001(p.32) ↩︎

  3. 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 ↩︎

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值