1.MCRA-2
上一篇中介绍了 M C R A MCRA MCRA1噪声估计方法,这种方法计算简单效率高,但是也有一些不足,仔细观察MCRA谱最小值跟踪部分,使用 S m i n Smin Smin记录最小值,并通过 S t e m p Stemp Stemp每 L L L帧重置一次,那么问题就来了,假如噪声水平在一直缓慢上升,MCRA的这种跟踪方法将产生最大2L帧的延迟,如果噪声较不平稳的话这种方法效果就不是很好,
对于这个缺陷,Loizou提出了一些改进方法MCRA-22,还是基于上一篇的MCRA处理框架,主要有三个不同的地方,这里简单介绍下,
1.1 谱平滑:
MCRA-2中的带噪谱只在时间维度上做了平滑,没有频率维度上平滑
P
(
λ
,
k
)
=
η
P
(
λ
−
1
,
k
)
+
(
1
−
η
)
∣
Y
(
λ
,
k
)
∣
2
P(\lambda,k) = \eta P(\lambda-1,k)+(1-\eta)|Y(\lambda,k)|^2
P(λ,k)=ηP(λ−1,k)+(1−η)∣Y(λ,k)∣2
η
\eta
η为平滑参数,一般取
0.7
<
η
<
0.9
0.7<\eta<0.9
0.7<η<0.9
1.2 搜索策略
主要改进就是在最小值搜索的策略上。新的方法不依赖搜索窗长,因此也叫做连续谱最小值跟踪(Continuous Spectral Minimum Tracking ),搜索策略伪代码如下
IF P m i n ( λ − 1 , k ) < P ( λ , k ) Pmin(\lambda-1,k)<P(\lambda,k) Pmin(λ−1,k)<P(λ,k), then
P m i n ( λ , k ) = γ P m i n ( λ − 1 , k ) + 1 − γ 1 − β ( P ( λ , k ) − β P ( λ − 1 , k ) ) Pmin(\lambda,k)=\gamma Pmin(\lambda-1,k)+\frac{1-\gamma}{1-\beta}(P(\lambda,k)-\beta P(\lambda-1,k)) Pmin(λ,k)=γPmin(λ−1,k)+1−β1−γ(P(λ,k)−βP(λ−1,k))
else
P m i n ( λ , k ) = P ( λ , k ) Pmin(\lambda,k)=P(\lambda,k) Pmin(λ,k)=P(λ,k)
end
1.3 判决门限
MCRA-2中使用了频率相关的门限
δ
\delta
δ,相比较MCRA中使用的是固定门限,具体设置如下:
δ
(
k
)
=
{
2
1
≤
k
≤
L
F
2
L
F
<
k
≤
M
F
5
M
F
<
k
≤
F
s
/
2
\delta(k)=\left\{\begin{array}{ll}{2} & {1 \leq k \leq L F} \\ {2} & {L F<k \leq M F} \\ {5} & {M F<k \leq F s / 2}\end{array}\right.
δ(k)=⎩⎨⎧2251≤k≤LFLF<k≤MFMF<k≤Fs/2
2. code & result
利用MCRA-2中的方法估计噪声,结合谱减法降噪效果如下
对比可以看到噪声有了一定程度的抑制,同时也可以看到3000左右有一条分界线,这是由于门限
δ
\delta
δ突变造成的,这些参数还需要结合实际噪音微调
References:
Cohen, I., & Berdugo, B. (2002). Noise estimation by minima controlled recursive averaging for robust speech enhancement. IEEE Signal Processing Letters, 9(1), 12–15 ↩︎
Rangachari, S., & Loizou, P. C. (2006). A noise-estimation algorithm for highly non-stationary environments. Speech Communication, 48(2), 220–231. doi:10.1016/j.specom.2005.08.005 ↩︎