对比IMCRA来研究一下Cohen的TBRR跟踪方法

前言

科恩大神的巅峰之作MCRA是菜鸟容易看懂的一个算法,但不妨碍它成为经典噪声跟踪的天花板,他再接再厉提出了Improved版本和TBRR版本的MCRA,罗爱洲也在专著中改进了一版号称MCRA-2。但这么多烟花缭乱的改进本质上改的是啥呢?答案是语音存在概率!

MCRA1vs2-信噪比门限得出的语音存在概率

MCRA1和MCRA2都是按照最小跟踪方法算出的S_r值,来判断这个值的门限来决定语音存在与否:
i f    S r ( k , l ) > δ 1 , 2                      p ( k , l ) = 1 语音存在 e l s e                      p ( k , l ) = 0 语音存在 if \ \ S_r(k,l) > \delta_{1,2}\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p(k,l) = 1 \text{语音存在}\\ else\\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ p(k,l) = 0 \text{语音存在} if  Sr(k,l)>δ1,2                    p(k,l)=1语音存在else                    p(k,l)=0语音存在
MCRA1中的门限是一个常数,而MCRA2中根据不同频段变成了分段常数:
δ ( k ) = { 2 , 1 ≤ k ≤ L F 2 , L F ≤ k ≤ M F 5 , M F ≤ k ≤ F s / 2 \delta(k) = \begin{cases} 2 ,1 \leq k \leq LF \\ 2 ,LF \leq k \leq MF \\ 5, MF \leq k \leq Fs/2 \end{cases} δ(k)=2,1kLF2,LFkMF5,MFkFs/2

IMCRA vs TBRR-的语音存在概率计算:

首先计算推导在OMLSA&IMCRA学习笔记可以找到,这两个进阶算法的语音存在概率都利用了这个结论: p ( k , l ) = { 1 + q ( k , l ) 1 − q ( k , l ) ( 1 + ξ ( k , l ) ) e x p ( − v ( k , l ) ) } − 1 \begin{aligned} p(k,l) = \big \{1+\frac{q(k,l)}{1-q(k,l)}(1+\xi(k,l))exp(-v(k,l)) \big \}^{-1} \end{aligned} p(k,l)={1+1q(k,l)q(k,l)(1+ξ(k,l))exp(v(k,l))}1 其中 q ( k , l ) ≜ P ( H 0 ( k , l ) ) q(k,l)\triangleq P(H_0(k,l)) q(k,l)P(H0(k,l))被定义为语音不存在的先验概率。 ξ ( k , l ) ≜ λ x ( k , l ) / λ d ( k , l ) \xi(k,l)\triangleq\lambda_x(k,l)/\lambda_d(k,l) ξ(k,l)λx(k,l)/λd(k,l)为先验信噪比, γ ( k , l ) ≜ ∣ Y ( k , l ) ∣ 2 / λ d ( k , l ) \gamma(k,l)\triangleq|Y(k,l)|^2/\lambda_d(k,l) γ(k,l)Y(k,l)2/λd(k,l) v ( k , l ) ≜ γ ( k , l ) ξ ( k , l ) / ( 1 + ξ ( k , l ) ) v(k,l)\triangleq\gamma(k,l)\xi(k,l)/(1+\xi(k,l)) v(k,l)γ(k,l)ξ(k,l)/(1+ξ(k,l))。而所谓的改进就是改进这个语音不存在的概率,相比上面语音不存在是一个键控开关,改进算法的语音不存在有点概率的味道了。整个跟踪的基础也是local energy通过平滑时频窗口的STFT幅度平方来获取,先定义一个窗函数获取当前频率的附近能量:
S f ( k , l ) = ∑ i = − w w b ( i ) ∣ Y ( k − i , l ) ∣ 2 S_f(k,l)= \sum_{i=-w}^wb(i)|Y(k-i,l)|^2 Sf(k,l)=i=wwb(i)Y(ki,l)2
而时域的平滑采用一阶递归方程: S ( k , l ) = α s S ( k , l − 1 ) + ( 1 − α s ) S f ( k , l ) S(k,l)=\alpha_sS(k,l-1)+(1-\alpha_s)S_f(k,l) S(k,l)=αsS(k,l1)+(1αs)Sf(k,l),而两种改进的算法对 S ( k , l ) S(k,l) S(k,l)进一步平滑和估计,产生了不同的方案。

IMCRA的语音不存在算法

首先还是按照MCRA的算法:

if mod(l/L)=0
	S_min(k,l) = min(S_tmp(k,l-1),S(k,l))
	S_tmp(k,l) = S_f(k,l)
else
	S_min(k,l) = min(S_min(k,l-1),S(k,l))
	S_tmp(k,l) = min(S_tmp(k,l-1),S(k,l))
end	

找到 S m i n S_{min} Smin,此刻整出来两个新名词 γ m i n ( k , l ) = ∣ Y ( k , l ) ∣ 2 B m i n S m i n ( k , l ) \gamma_{min}(k,l)=\frac{|Y(k,l)|^2}{B_{min}S_{min}(k,l)} γmin(k,l)=BminSmin(k,l)Y(k,l)2 ζ ( k , l ) = S ( k , l ) B m i n S m i n ( k , l ) \zeta(k,l)=\frac{S(k,l)}{B_{min}S_{min}(k,l)} ζ(k,l)=BminSmin(k,l)S(k,l) B m i n B_{min} Bmin被取名常数偏差因子【5】,再次得出初次的语音判决结果(二值域)   I ( k , l ) = { 1 , γ m i n ( k , l ) ≤ γ 0 , a n d   ζ ( k , l ) ≤ ζ 0 0 , o t h e r \ I(k,l) = \begin{cases} 1 ,\gamma_{min}(k,l)\leq \gamma_0, and\ \zeta(k,l)\leq \zeta_0\\ 0 ,other \\ \end{cases}  I(k,l)={1,γmin(k,l)γ0,and ζ(k,l)ζ00,other再根据这个结果二次平滑 S S S值得到: S ^ ( k , l ) = { ∑ i = − I w I w w i n ( i ) I ( k − i , l ) ∣ Y ( k − i , l ) ∣ 2 ∑ i = − I w I w w i n ( i ) I ( k − i , l ) , ∑ i = − I w I w I ( k − i , l ) ≠ 0 S ^ ( k , l − 1 ) , o t h e r \hat S(k,l) = \begin{cases} \frac{\sum_{i=-I_w}^{I_w}win(i)I(k-i,l)|Y(k-i,l)|^2}{\sum_{i=-I_w}^{I_w}win(i)I(k-i,l)} ,\sum_{i=-I_w}^{I_w}I(k-i,l)\neq0\\ \hat S(k,l-1) ,other \\ \end{cases} S^(k,l)=i=IwIwwin(i)I(ki,l)i=IwIwwin(i)I(ki,l)Y(ki,l)2,i=IwIwI(ki,l)=0S^(k,l1),other科恩觉得不过瘾,由加了一级一届的平滑公式 S ^ ( k , l ) = α s S ^ ( k , l − 1 ) + ( 1 − α s ) S ^ ( k , l ) \hat S(k,l) =\alpha_s\hat S(k,l-1) +(1-\alpha_s)\hat S(k,l) S^(k,l)=αsS^(k,l1)+(1αs)S^(k,l)
然后再根据

if mod(l/L)=0
	S_min(k,l) = min(S_tmp(k,l-1),S(k,l))
	S_tmp(k,l) = S_f(k,l)
else
	S_min(k,l) = min(S_min(k,l-1),S(k,l))
	S_tmp(k,l) = min(S_tmp(k,l-1),S(k,l))
end	

搜索到 S ^ m i n \hat S_{min} S^min,然后计算新名词的估计值 γ ^ m i n ( k , l ) = ∣ Y ( k , l ) ∣ 2 B m i n S ^ m i n ( k , l ) \hat\gamma_{min}(k,l)=\frac{|Y(k,l)|^2}{B_{min}\hat S_{min}(k,l)} γ^min(k,l)=BminS^min(k,l)Y(k,l)2 ζ ( k , l ) = S ^ ( k , l ) B m i n S ^ m i n ( k , l ) \zeta(k,l)=\frac{\hat S(k,l)}{B_{min}\hat S_{min}(k,l)} ζ(k,l)=BminS^min(k,l)S^(k,l),这就是第二轮搜索。根据以上计算,再带入下式得出新的不存在概率 q ^ ( k , l ) = { 1 , γ m i n ( k , l ) ≤ 1 , a n d   ζ ( k , l ) ≤ ζ 0 γ 1 − γ ^ m i n ( k , l ) γ 1 − 1 , 1 ≤ γ ^ m i n ( k , l ) ≤ γ 1 a n d   ζ ( k , l ) ≤ ζ 0 0 , o t h e r \hat q(k,l) = \begin{cases} 1 ,\gamma_{min}(k,l)\leq1, and\ \zeta(k,l)\leq \zeta_0\\ \frac{\gamma_1-\hat\gamma_{min}(k,l)}{\gamma_1-1},1\leq \hat\gamma_{min}(k,l)\leq \gamma_1 and\ \zeta(k,l)\leq \zeta_0\\ 0 ,other \\ \end{cases} q^(k,l)=1,γmin(k,l)1,and ζ(k,l)ζ0γ11γ1γ^min(k,l),1γ^min(k,l)γ1and ζ(k,l)ζ00,other接着 α ^ d ( k , l ) = α d + ( 1 − α d ) p ′ ( k , l ) \hat\alpha_d(k,l)=\alpha_d+(1-\alpha_d)p^\prime(k,l) α^d(k,l)=αd+(1αd)p(k,l)更新平滑因子,以及 λ ^ d ( k , l ) = α ^ d λ ^ d ( k − 1 , l ) + ( 1 − α ^ d ) ∣ Y ( k , l ) ∣ 2 \begin{aligned} \hat\lambda_d(k,l)=\hat\alpha_d\hat\lambda_d(k-1,l)+(1-\hat\alpha_d)|Y(k,l)|^2 \end{aligned} λ^d(k,l)=α^dλ^d(k1,l)+(1α^d)Y(k,l)2最后重新计算后验和先验信噪比。

TBRR的语音存在概率

Transient Beam-to-Reference Ratio 即瞬态波束与参考信号比,这是应用于GSC算法的一种后置滤波的噪声跟踪方法,利用FBF固定波束形成矩阵输出和阻塞矩阵的输出,进一步的优化语音不存在概率的计算,进而得到更加准确的语音存在估计。
根据GSC输出信号的假设,期望语音信号、类平稳噪声和瞬时非平稳噪声,有三种场景

  1. H 1 H_1 H1:表示存在期望语音信号,则 q = 0 q=0 q=0;
  2. H 0 s H_{0s} H0s:表示存在类平稳噪声,则 q = 1 q=1 q=1;
  3. H 0 t H_{0t} H0t:表示存在瞬态非平稳噪声,则 q = 1 q=1 q=1;

根据假设可以看出这种检测方法可以识别出瞬态非平稳噪声,那么除了上述固定的场景(键控值),不属于上述情况的概率该如何计算呢?

  1. H r H_{r} Hr:tbrr概率= m a x ( γ 0 − γ s γ 0 − 1 , Ω h i g h ( k ) − Ω ( k , l ) Ω h i g h ( k ) − Ω l o w ( k ) ) max(\frac{\gamma_0-\gamma_s}{\gamma_0-1},\frac{\Omega_{high}(k)-\Omega(k,l)}{\Omega_{high}(k)-\Omega_{low}(k)}) max(γ01γ0γs,Ωhigh(k)Ωlow(k)Ωhigh(k)Ω(k,l));

上述假设场景如何区分呢?首先令每一个路输出的信号都经过MCRA进行跟踪,主路 F B F FBF FBF矩阵的输出的广义信噪比 Λ Y = S ( k , l ) λ ( k , l ) \Lambda_Y=\frac{S(k,l)}{\lambda(k,l)} ΛY=λ(k,l)S(k,l)如果这个广义信噪比小于门限,认为主路输出基本上是噪声信号,否则可能是语音信号,这里注意是可能,因为阻塞矩阵的条件可能将这个可能翻转。然后定义辅路阻塞矩阵的广义能量噪声比为 Λ B M = M A X 1 ≤ i ≤ M − 1 { S B M i ( k , l ) λ B M i ( k , l ) } \Lambda_{BM}=MAX_{1\leq i \leq M-1}\{\frac{S_{BM_i}(k,l)}{\lambda_{BM_i}(k,l)}\} ΛBM=MAX1iM1{λBMi(k,l)SBMi(k,l)}如果辅路的比值较低而且主路广义信噪比较高,毫无疑问是满足 H 1 H_1 H1。反之,如果主路广义信噪比较低,辅路也低,则满足 H 0 s H_{0s} H0s,辅路高,则可能是 H 0 t H_{0t} H0t。这几种判断比较好解释。
但是如果主辅路两个比值都高意味着什么呢?是瞬态信号,还是辅路泄露了语音信号,则需要进一步的判断,于是引入了一个新的定义,这个定义就是所谓的TBRR: Ω ( k , l ) = S ( k , l ) − λ ( k , l ) M A X 1 ≤ i ≤ M − 1 { S B M i ( k , l ) − λ B M i ( k , l ) } \Omega(k,l)=\frac{S(k,l)-\lambda(k,l)}{MAX_{1\leq i \leq M-1}\{S_{BM_i}(k,l)-\lambda_{BM_i}(k,l)\}} Ω(k,l)=MAX1iM1{SBMi(k,l)λBMi(k,l)}S(k,l)λ(k,l)怎么理解这个TBRR呢?就是我们要相信GSC的输出基本靠谱,即主路主要输出有用的语音,辅路输出噪声,所以主路的频谱能量差如果大于辅路的,更倾向于是语音信号 H r H_{r} Hr,反之认为是 H 0 t H_{0t} H0t。同时为了更倾向于得出语音不存在的概率,加入了后验信噪比的参考,得出了 H r H_{r} Hr计算方法: q t b r r ( k , l ) = { 1 , H 0 s , o r   H 0 t m a x ( γ 0 − γ s γ 0 − 1 , Ω h i g h ( k ) − Ω ( k , l ) Ω h i g h ( k ) − Ω l o w ( k ) ) , H r 0 , H 1 q_{tbrr}(k,l) = \begin{cases} 1 ,H_{0s}, or\ H_{0t}\\ max(\frac{\gamma_0-\gamma_s}{\gamma_0-1},\frac{\Omega_{high}(k)-\Omega(k,l)}{\Omega_{high}(k)-\Omega_{low}(k)}),H_{r}\\ 0 , H_1\\ \end{cases} qtbrr(k,l)=1,H0s,or H0tmax(γ01γ0γs,Ωhigh(k)Ωlow(k)Ωhigh(k)Ω(k,l)),Hr0,H1引用【2】中科恩总结的流程图如下:
在这里插入图片描述后续的算法即可以按照imcra的方式,计算语音存在概率,更新噪声,等等。

后记

科恩的这几篇论文没有太多深奥的数学技巧,胜在心思缜密,想法新奇,每每阅知总会发出“我也能想到”和“我怎么就没想到呢”的感慨,嗨。
在这里插入图片描述从上图的实验结果直观的感受一下差别,最后一段是非平稳噪声,确实沙雕了。

参考文献

1.Microphone array post-filterring for non-stationary noise suppression, Isarael Cohen and Baruch Berdugo
2.Adaptive Beamforming and Postfiltering, Speech enhancement, S.Gannot, I.Cohen
3.Noise Spectrum Estimation in Adverse Environments:Improved Minima Controlled Recursive Averaging, Isarael Cohen
4.Optimal Speech Enhancement Under Signal Presence Uncertainty Using Log-Spectral Amplitude Estimator
5.语音增强理论与实践, (美)罗爱洲, (译)高毅等
6.OMLSA&IMCRA学习笔记
7.麦克风阵列广义旁瓣消除及后置滤波算法研究,王贤祥 重庆邮电大学硕士学位论文

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值