OMLSA算法推导


OM-LSA(Optimally-modified log-spectral amplitude)是经典的降噪算法,这里做一个学习总结,把中间的一些公式推导一下,写一些自己的想法,水平有限,欢迎指正。

LSA估计增益

OM-LSA(Optimally-modified log-spectral amplitude)从名字上就可以看出来估计的是对数幅度谱,LSA做为最小优化目标,即,
e = E { ( l o g ( A ^ ( k , l ) ) − l o g ( A ( k , l ) ) ) 2 } (1) e=E\{(log(\hat{A}(k,l))- log(A(k,l)))^2\} \tag{1} e=E{(log(A^(k,l))log(A(k,l)))2}(1)

这里使用的其实是贝叶斯MSE准则,通过对 l o g ( A ^ ( k , l ) ) log(\hat{A}(k,l)) log(A^(k,l))求导得到,
l o g ( A ^ ( k , l ) ) = E ( l o g ( A ( k , l ) ∣ Y ( k , l ) ) ) A ^ ( k , l ) = e x p ( E ( l o g A ( k , l ) ∣ Y ( k , l ) ) ) (2) log(\hat{A}(k,l))=E(log(A(k,l)|Y(k,l))) \\ \hat{A}(k,l) = exp(E(log A(k,l)|Y(k,l))) \tag{2} log(A^(k,l))=E(log(A(k,l)Y(k,l)))A^(k,l)=exp(E(logA(k,l)Y(k,l)))(2)

每一帧可以分为存在语音和不存在语音两种情况,即,
H 0 ( k , l ) : Y ( k , l ) = D ( k , l ) H 1 ( k , l ) : Y ( k , l ) = X ( k , l ) + D ( k , l ) (3) \begin{aligned} H_0(k,l):Y(k,l) &= D(k,l) \\ H_1(k,l):Y(k,l)&=X(k,l) + D(k,l) \end{aligned} \tag{3} H0(k,l):Y(k,l)H1(k,l):Y(k,l)=D(k,l)=X(k,l)+D(k,l)(3)

式(2)中需要求解E(log A(k,l)|Y(k,l)),在存在语音和不存在语音两种假设情况下可以写成,
E ( l o g A ( k , l ) ∣ Y ( k , l ) ) = E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 1 ( k , l ) ) p ( k , l ) + E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 0 ( k , l ) ) ( 1 − p ( k , l ) ) (4) \begin{aligned} E(log A(k,l)|Y(k,l)) &= E(log A(k,l)|Y(k,l),H_1(k,l))p(k,l) \\&+ E(log A(k,l)|Y(k,l),H_0(k,l))(1-p(k,l)) \end{aligned} \tag{4} E(logA(k,l)Y(k,l))=E(logA(k,l)Y(k,l),H1(k,l))p(k,l)+E(logA(k,l)Y(k,l),H0(k,l))(1p(k,l))(4)

将式(4)带人(2),并且利用 e x y = ( e x ) y , e x + y = e x e y e^{xy}=(e^x)^y,e^{x+y}=e^xe^y exy=(ex)y,ex+y=exey的性质,可以得到,
A ^ ( k , l ) = e x p ( E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 1 ( k , l ) ) ) p ( k , l ) + e x p ( E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 0 ( k , l ) ) ) ( 1 − p ( k , l ) ) (5) \begin{aligned} \hat{A}(k,l)&= exp(E(log A(k,l)|Y(k,l),H_1(k,l)))^{p(k,l)} \\&+ exp(E(log A(k,l)|Y(k,l),H_0(k,l)))^{(1-p(k,l))} \end{aligned} \tag{5} A^(k,l)=exp(E(logA(k,l)Y(k,l),H1(k,l)))p(k,l)+exp(E(logA(k,l)Y(k,l),H0(k,l)))(1p(k,l))(5)

当语音不存在时,使用一个最小值超参进行约束,即,
e x p ( E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 0 ( k , l ) ) ) = G m i n ∣ Y ( k , l ) ∣ (6) exp(E(log A(k,l)|Y(k,l),H_0(k,l)))=G_{min}|Y(k,l)| \tag{6} exp(E(logA(k,l)Y(k,l),H0(k,l)))=GminY(k,l)(6)

当语音存在时,可以推导出,
e x p ( E ( l o g A ( k , l ) ∣ Y ( k , l ) , H 1 ( k , l ) ) ) = G H 1 ∣ Y ( k , l ) ∣ G H 1 = ζ ( k , l ) 1 + ζ ( k , l ) ∫ v ( k , l ) ∞ 1 2 e − t t d t (7) exp(E(log A(k,l)|Y(k,l),H_1(k,l)))=G_{H_1}|Y(k,l)| \\ G_{H_1}=\frac{\zeta(k,l)}{1+\zeta(k,l)}\int_{v(k,l)}^\infty \frac{1}{2}\frac{e^{-t}}{t}dt \tag{7} exp(E(logA(k,l)Y(k,l),H1(k,l)))=GH1Y(k,l)GH1=1+ζ(k,l)ζ(k,l)v(k,l)21tetdt(7)

其中 p ( k , l ) p(k,l) p(k,l)为条件语音存在概率, ζ ( k , l ) \zeta(k,l) ζ(k,l)为先验信噪比, γ ( k , l ) \gamma(k,l) γ(k,l)为后验信噪比, v ( k , l ) = γ ( k , l ) ζ ( k , l ) 1 + ζ ( k , l ) v(k,l)=\frac{\gamma(k,l)\zeta(k,l)}{1+\zeta(k,l)} v(k,l)=1+ζ(k,l)γ(k,l)ζ(k,l)是先验后验信噪比的函数。将式(7),(6)带入式(5)得,
A ^ ( k , l ) = { G H 1 ( k , l ) } p ( k , l ) G m i n 1 − p ( k , l ) ∣ Y ( k , l ) ∣ = G ( k , l ) ∣ Y ( k , l ) ∣ (8) \begin{aligned} \hat{A}(k,l)&= \{G_{H_1}(k,l)\}^{p(k,l)}G_{min}^{1-p(k,l)} |Y(k,l)| \\ &= G(k,l) |Y(k,l)| \end{aligned} \tag{8} A^(k,l)={GH1(k,l)}p(k,l)Gmin1p(k,l)Y(k,l)=G(k,l)Y(k,l)(8)

要想得到 G ( k , l ) ) G(k,l)) G(k,l)),需要估计出条件语音存在概率和先后验信噪比(间接需要估计出底噪)。

贝叶斯定理估计条件语音存在概率

假设干净语音和噪声的短时傅里叶变换系数满足复高斯分布,且不相干,则可以得到概率密度函数为,
p ( Y ( k , l ) ∣ H 0 ( k , l ) ) = 1 π λ x ( k , l ) e x p ( − ∣ Y ( k , l ) ∣ 2 λ d ( k ) ) , p ( Y ( k , l ) ∣ H 1 ( k , l ) ) = 1 π ( λ x ( k , l ) + λ d ( k , l ) ) e x p ( − ∣ Y ( k , l ) ∣ 2 λ x ( k ) + λ d ( k ) ) (9) \begin{aligned} p(Y(k,l)| H_0(k,l)) &= \frac{1}{\pi\lambda_x(k,l)}exp(-\frac{|Y(k,l)|^2}{\lambda_d(k)}), \\ p(Y(k,l)| H_1(k,l)) &= \frac{1}{\pi(\lambda_x(k,l)+\lambda_d(k,l))}exp(-\frac{|Y(k,l)|^2}{\lambda_x(k)+\lambda_d(k)}) \end{aligned} \tag{9} p(Y(k,l)H0(k,l))p(Y(k,l)H1(k,l))=πλx(k,l)1exp(λd(k)Y(k,l)2)=π(λx(k,l)+λd(k,l))1exp(λx(k)+λd(k)Y(k,l)2)(9)

利用贝叶斯定理,
p ( H 1 ( k , l ) ∣ Y ( k , l ) ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) ) p ( H 1 ) p ( Y ( k , l ) ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) ) p ( H 1 ) p ( Y ( k , l ) ∣ H 1 ( k , l ) ) p ( H 1 ) + p ( Y ( k , l ) ∣ H 0 ( k , l ) ) p ( H 0 ) (10) \begin{aligned} p(H_1(k,l)|Y(k,l))&=\frac{p(Y(k,l)|H_1(k,l))p(H_1)}{p(Y(k,l))} \\ &=\frac{p(Y(k,l)|H_1(k,l))p(H_1)}{p(Y(k,l)|H_1(k,l))p(H_1) + p(Y(k,l)|H_0(k,l))p(H_0)} \end{aligned} \tag{10} p(H1(k,l)Y(k,l))=p(Y(k,l))p(Y(k,l)H1(k,l))p(H1)=p(Y(k,l)H1(k,l))p(H1)+p(Y(k,l)H0(k,l))p(H0)p(Y(k,l)H1(k,l))p(H1)(10)

将式(9)带入式(10),得到,
p ( k , l ) = { 1 + q ( k , l ) 1 − q ( k , l ) ( 1 + ζ ( k , l ) ) e x p ( − v ( k , l ) ) } − 1 (11) p(k,l)=\{1+\frac{q(k,l)}{1-q(k,l)}(1+\zeta(k,l))exp(-v(k,l)) \}^{-1} \tag{11} p(k,l)={1+1q(k,l)q(k,l)(1+ζ(k,l))exp(v(k,l))}1(11)

其中 q ( k , l ) q(k,l) q(k,l)为先验语音缺失概率, ζ ( k , l ) = λ x ( k , l ) λ d ( k , l ) \zeta(k,l)=\frac{\lambda_x(k,l)}{\lambda_d(k,l)} ζ(k,l)=λd(k,l)λx(k,l)为先验信噪比, γ ( k , l ) = ∣ Y ( k , l ) ∣ 2 λ d ( k , l ) \gamma(k,l)=\frac{|Y(k,l)|^2}{\lambda_d(k,l)} γ(k,l)=λd(k,l)Y(k,l)2为后验信噪比, v ( k , l ) = γ ( k , l ) ζ ( k , l ) 1 + ζ ( k , l ) v(k,l)=\frac{\gamma(k,l)\zeta(k,l)}{1+\zeta(k,l)} v(k,l)=1+ζ(k,l)γ(k,l)ζ(k,l)是先验后验信噪比的函数(和上面的定义一样)。

根据式(11),要想得到条件语音存在概率,需要估计出先后验信噪比(需要估计底噪)和先验语音缺失概率。

DD准则估计先验信噪比

在假设噪声估计出来的情况下,后验信噪比的估计只需要利用当前帧的能量除以噪声能量就可以了,而先验信噪比的估计需要利用DD准则进行估计,即,
ζ ^ ( k , l ) = α G H 1 2 ( k , l − 1 ) γ ( k , l − 1 ) + ( 1 − α ) m a x { γ ( k , l ) − 1 , 0 } (12) \hat{\zeta}(k,l)=\alpha G_{H_1}^2(k,l-1)\gamma(k,l-1) + (1-\alpha)max\{\gamma(k,l)-1,0\} \tag{12} ζ^(k,l)=αGH12(k,l1)γ(k,l1)+(1α)max{γ(k,l)1,0}(12)

式(12)的第一部分是上一帧的先验信噪比估计,
G H 1 2 ( k , l − 1 ) γ ( k , l − 1 ) = { G H 1 ( k , l − 1 ) ∣ Y ( k , l − 1 ) ∣ } 2 λ d ( k , l − 1 ) = λ x ( k , l − 1 ) λ d ( k , l − 1 ) = ζ ( k , l − 1 ) \begin{aligned} G_{H_1}^2(k,l-1)\gamma(k,l-1)&=\frac{\{G_{H_1}(k,l-1)|Y(k,l-1)|\}^2}{\lambda_d(k,l-1)}\\ &= \frac{\lambda_x(k,l-1)}{\lambda_d(k,l-1)} \\ &= \zeta(k,l-1) \end{aligned} GH12(k,l1)γ(k,l1)=λd(k,l1){GH1(k,l1)Y(k,l1)}2=λd(k,l1)λx(k,l1)=ζ(k,l1)

式(12)的第二部分是当前帧的先验信噪比估计,
γ ( k , l ) − 1 = ∣ Y ( k , l ) ∣ 2 λ d ( k , l ) − 1 = ∣ Y ( k , l ) ∣ 2 − λ d ( k , l ) λ d ( k , l ) = λ x ( k , l ) λ d ( k , l ) = ζ ( k , l ) \gamma(k,l)-1 = \frac{|Y(k,l)|^2}{\lambda_d(k,l)} - 1 = \frac{|Y(k,l)|^2-\lambda_d(k,l)}{\lambda_d(k,l)} = \frac{\lambda_x(k,l)}{\lambda_d(k,l)} = \zeta(k,l) γ(k,l)1=λd(k,l)Y(k,l)21=λd(k,l)Y(k,l)2λd(k,l)=λd(k,l)λx(k,l)=ζ(k,l)

将两部分做一个平滑得到最终的先验信噪比估计。

通过先验信噪比的软决策估计先验语音缺失概率

首先将估计出来的先验信噪比进行平滑,即,
ζ ( k , l ) = β ζ ( k , l − 1 ) + ( 1 − β ) ζ ^ ( k , l − 1 ) (13) \zeta(k,l)=\beta \zeta(k,l-1) + (1-\beta)\hat{\zeta}(k,l-1) \tag{13} ζ(k,l)=βζ(k,l1)+(1β)ζ^(k,l1)(13)

接着在频域进行综合,考虑频带间的影响,定义
ζ λ ( k , l ) = ∑ i = − w λ w λ h λ ( i ) ζ ( k − i , l ) \zeta_\lambda(k,l)=\sum_{i=-w_\lambda}^{w_\lambda}h_\lambda(i)\zeta(k-i,l) ζλ(k,l)=i=wλwλhλ(i)ζ(ki,l)

其中 h λ h_\lambda hλ为hanning窗,下标 λ \lambda λ可以等于"local",也可以等于"global",当 w λ w_\lambda wλ=1时,为"local",代表局部信噪比的平均,当 w λ w_\lambda wλ=15时,为"global",代表全局信噪比的平均,根据 ζ λ ( k , l ) \zeta_\lambda(k,l) ζλ(k,l)的数值和超参 ζ m i n \zeta_{min} ζmin, ζ m a x \zeta_{max} ζmax定义,
p λ ( k , l ) = { 0 , if ζ λ ( k , l ) ≤ ζ m i n 1 , ζ λ ( k , l ) ≥ ζ m a x l o g ( ζ λ ( k , l ) / ζ m i n ) l o g ( ζ m a x / ζ m i n ) , o t h e r w i s e (14) p_\lambda(k,l)=\begin{cases} & 0, \text{if} \zeta_\lambda(k,l) \leq \zeta_{min} \\ & 1, \zeta_\lambda(k,l) \geq \zeta_{max}\\ & \frac{log(\zeta_\lambda(k,l)/\zeta_{min})}{log(\zeta_{max}/\zeta_{min})}, otherwise \end{cases} \tag{14} pλ(k,l)=0,ifζλ(k,l)ζmin1,ζλ(k,l)ζmaxlog(ζmax/ζmin)log(ζλ(k,l)/ζmin),otherwise(14)

为了进一步在噪声帧加强噪声抑制,定义,
ζ f r a m e ( l ) = m e a n 1 ≤ k ≤ M / 2 + 1 { ζ ( k , l ) } \zeta_{frame}(l)=\underset{1\leq k \leq M/2+1}{mean}\{\zeta(k,l)\} ζframe(l)=1kM/2+1mean{ζ(k,l)}

u ( l ) = { 0 , if , ζ f r a m e ( l ) ≤ ζ p e a k ζ m i n 1 , if , ζ f r a m e ( l ) ≥ ζ p e a k ζ m a x l o g ( ζ f r a m e ( l ) / ζ p e a k ( l ) / ζ m i n ( l ) ) l o g ( ζ m a x / ζ m i n ) , o t h e r w i s e (15) u(l)=\begin{cases} &0,\text{if}, \zeta_{frame}(l) \leq \zeta_{peak}\zeta_{min} \\ & 1, \text{if}, \zeta_{frame}(l) \geq \zeta_{peak}\zeta_{max} \\ & \frac{log(\zeta_{frame}(l)/\zeta_{peak}(l)/\zeta_{min}(l))}{log(\zeta_{max}/\zeta_{min})}, otherwise \end{cases} \tag{15} u(l)=0if,ζframe(l)ζpeakζmin1,if,ζframe(l)ζpeakζmaxlog(ζmax/ζmin)log(ζframe(l)/ζpeak(l)/ζmin(l)),otherwise(15)

p f r a m e p_{frame} pframe的计算如下图所示,
在这里插入图片描述
先验语音缺失概率根据下式求得,
q ^ ( k , l ) = 1 − p l o c a l ( k , l ) p g l o b a l ( k , l ) p f r a m e ( l ) (16) \hat{q}(k,l)= 1 - p_{local}(k,l)p_{global}(k,l)p_{frame}(l) \tag{16} q^(k,l)=1plocal(k,l)pglobal(k,l)pframe(l)(16)

MCRA方法估计底噪

常见的噪声估计方法有递归平滑,最小值跟踪,直方图统计和分位数噪声估计等方法,这里的MCRA(Minima controlled recursive averaging)算法使用了递归平均和最小值跟踪相结合的方法,这里的最小值跟踪体现在语音存在概率是由最小值跟踪确定的。

递归平滑

在噪声段进行语音平滑处理,在语音段不更新噪声,则,
H 0 ′ ( k , l ) : λ d ^ ( k , l + 1 ) = α d λ d ^ ( k , l ) + ( 1 − α d ) ∣ Y ( k , l ) ∣ 2 H 1 ′ ( k , l ) : λ d ^ ( k , l + 1 ) = λ d ^ ( k , l ) (17) \begin{aligned} H_0^{'}(k,l):\hat{\lambda_d}(k,l+1) &= \alpha_d\hat{\lambda_d}(k,l) + (1-\alpha_d)|Y(k,l)|^2 \\ H_1^{'}(k,l):\hat{\lambda_d}(k,l+1) &= \hat{\lambda_d}(k,l) \end{aligned} \tag{17} H0(k,l):λd^(k,l+1)H1(k,l):λd^(k,l+1)=αdλd^(k,l)+(1αd)Y(k,l)2=λd^(k,l)(17)

α d \alpha_d αd是平滑参数,数值过大会导致跟踪较慢,数值过小,容易产生音乐噪声。利用条件语音存在概率 p ′ ( k , l ) p^{'}(k,l) p(k,l)进行综合,可得,
λ d ^ ( k , l + 1 ) = ( α d λ d ^ ( k , l ) + ( 1 − α d ) ∣ Y ( k , l ) ∣ 2 ) ( 1 − p ′ ( k , l ) ) + λ d ^ ( k , l ) p ′ ( k , l ) = α ~ d λ d ^ ( k , l ) + ( 1 − α ~ d ) ∣ Y ( k , l ) ∣ 2 (18) \begin{aligned} \hat{\lambda_d}(k,l+1) &= (\alpha_d\hat{\lambda_d}(k,l) + (1-\alpha_d)|Y(k,l)|^2)(1-p^{'}(k,l)) + \hat{\lambda_d}(k,l)p^{'}(k,l) \\ & = \tilde\alpha_d\hat{\lambda_d}(k,l) + (1-\tilde\alpha_d)|Y(k,l)|^2 \end{aligned} \tag{18} λd^(k,l+1)=(αdλd^(k,l)+(1αd)Y(k,l)2)(1p(k,l))+λd^(k,l)p(k,l)=α~dλd^(k,l)+(1α~d)Y(k,l)2(18)

其中, α d ~ = α d + ( 1 − α d ) p ′ ( k , l ) \tilde{\alpha_d}=\alpha_d + (1-\alpha_d)p^{'}(k,l) αd~=αd+(1αd)p(k,l)

最小值控制语音存在概率

首先对幅度谱在频域进行平滑,得,
S f ( k , l ) = ∑ i = − w w b ( i ) ∣ Y ( k − i , l ) ∣ 2 (19) S_f(k,l)=\sum_{i=-w}^{w}b(i)|Y(k-i,l)|^2 \tag{19} Sf(k,l)=i=wwb(i)Y(ki,l)2(19)

接着在时域进行平滑,
S ( k , l ) = α s S ( k , l − 1 ) + ( 1 − α s ) S f ( k , l ) (20) S(k,l)=\alpha_s S(k,l-1) + (1-\alpha_s )S_f(k,l) \tag{20} S(k,l)=αsS(k,l1)+(1αs)Sf(k,l)(20)

利用最小值跟踪法求出 S m i n ( k , l ) S_{min}(k,l) Smin(k,l),并且定义比值 S r ( k , l ) = S ( k , l ) / S m i n ( k , l ) S_r(k,l)=S(k,l)/S_{min}(k,l) Sr(k,l)=S(k,l)/Smin(k,l),如果 S r ( k , l ) S_r(k,l) Sr(k,l)大于阈值,则令 I ( k , l ) = 1 I(k,l)=1 I(k,l)=1,否则为0,条件语音存在概率根据I(k,l)平滑得到,即,
p ′ ( k , l ) = α p p ′ ( k , l − 1 ) + ( 1 − α ) I ( k , l ) (21) p^{'}(k,l)=\alpha_pp^{'}(k,l-1) + (1-\alpha_)I(k,l) \tag{21} p(k,l)=αpp(k,l1)+(1α)I(k,l)(21)

将式(21)带入式(18)得到最终的噪声估计值。

总结

算法流程为:首先使用MCRA方法估计出噪声,接着估计出后验信噪比和先验信噪比(DD准则),利用先验信噪比的软决策估计出先验语音缺失概率,之后利用贝叶斯准则求出条件语音存在概率,将前面求出的值带入增益函数表达式得到增益值。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值