MCRA1,全称为最小值控制的递归平均,是cohen提出的一种常用的噪声估计方法,处理流程框图 2 如下

从命名上以及以上框图能看出来着个方法主要包含两个部分,噪声谱递归平均和最小值控制(跟踪),下面分别看看这两个部分
1. 噪声谱估计(递归平均)
还是老套路先定义信号表达式
Y(k,ℓ)=n=0∑N−1y(n+ℓM)h(n)e−jN2πnk(1)
k:frequency bin index
ℓ:time frame index
h:analysis window of size N
M:frame update step in time
定义两个假设,在第 ℓ 帧第k 个频率点上语音不存在和语音存在H0(k,ℓ),H1(k,ℓ)概率如下:
H0(k,ℓ):Y(k,ℓ)=D(k,ℓ)H1(k,ℓ):Y(k,ℓ)=X(k,ℓ)+D(k,ℓ)(2)
其中X(k,ℓ)和D(k,ℓ)分别为纯净语音和噪声的STFT表示
定义λd(k,ℓ)=E[∣∣D(k,ℓ)∣∣2]为k帧、ℓ子带处噪声谱,那么就可以在无语音段用一个时间维度上的递归平滑来更新噪声,用公式表示如下
H0′(k,ℓ):λ^d(k,ℓ+1)=αdλ^d(k,ℓ)+(1−αd)∣Y(k,ℓ)∣2H1′(k,ℓ):λ^d(k,ℓ+1)=λ^d(k,ℓ)(3)
其中αd(0<αd<1)为平滑因子
用p′≜P(H1′∣Y(k,ℓ))表示语音存在的条件概率,则(3)式可以写成如下形式
λ~d(k,ℓ+1)=α~d(k,ℓ)λ^d(k,ℓ)+[1−α~d(k,ℓ)]∣Y(k,ℓ)∣2(4)
其中α~d(k,ℓ)为时变的平滑参数
α~d(k,ℓ)≜αd+(1−αd)p′(k,ℓ)(5)
上面的(4)、(5)两式就是递归平均更新噪声谱的核心内容,现在的问题就是要求出时变参数α~d(k,ℓ),也就是要求出语音存在概率这个关键变量p′(k,ℓ)
2. 语音存在概率(最小值控制)
2.1. 最小值跟踪
语音存在概率由带噪语音当前的能量和指定长度窗内谱最小值的比值来计算,先对带噪语音谱分别做时间、频率两个维度上的平滑
频率平滑:
Sf(k,ℓ)=i=−w∑wb(i)∣Y(k−i,ℓ)∣2(5)
时间平滑:
S(k,ℓ)=αs(k,ℓ)S(k,ℓ−1)+Sf(k,ℓ)(6)
其中αs(0<αs<1)为平滑常数
谱最小值Smin(k,ℓ)搜索过程如下:
初始化:
Smin(k,ℓ)=S(k,0)
Stmp(k,ℓ)=S(k,0)
然后按样本点(频谱)比较
Smin(k,ℓ)=min{Smin(k,ℓ−1),S(k,ℓ)}Stmp(k,ℓ)=min{Stmp(k,ℓ−1),S(k,ℓ)}(7)
这个时候Smin和Stmp都还是相等的,当比较了L帧(mod(ℓ,L)=0)后
Smin(k,ℓ)=min{Stmp(k,ℓ−1),S(k,ℓ)}Stmp(k,ℓ)=S(k,ℓ)(8)
重复(7)、(8)过程得到最小值谱,其中,搜索窗的长度L会影响到噪声的跟踪速度,一般按照经验选0.5s~1.5s左右。
2.2. 语音存在概率计算
定义局部能量与带噪语音能量比Sr(k,ℓ)如下
Sr(k,ℓ)≜Smin(k,ℓ)S(k,l)(9)
定义二值I(k,ℓ)如下
I(k,ℓ)={1,Sr(k,ℓ)>δ0,otherwise(10)
最后,语音存在概率更新如下:
p′^(k,ℓ)=αpp′^(k,ℓ−1)+(1−αp)I(k,ℓ)(11)
其中δ为预先设定的门限,αp(0<αp<1)为平滑常数
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 ↩︎
-
Cohen, I., & Berdugo, B. (2001). Speech enhancement for non-stationary noise environments. Signal Processing, 81(11), 2403–2418 ↩︎