噪声估计方法总结(二)

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 ) (1) \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{1} 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)(1)

α 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 (2) \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{2} λ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(2)

其中, α 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 (3) S_f(k,l)=\sum_{i=-w}^{w}b(i)|Y(k-i,l)|^2 \tag{3} Sf(k,l)=i=wwb(i)Y(ki,l)2(3)

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

利用分帧最小值跟踪法求出 S m i n ( k , l ) S_{min}(k,l) Smin(k,l),
       if mod( λ \lambda λ,D) = 0
          S m i n ( k , l ) = m i n ( S m i n ( k , l − 1 ) , S ( k , l ) ) S_{min}(k,l)=min(S_{min}(k,l-1),S(k,l)) Smin(k,l)=min(Smin(k,l1),S(k,l))
          S t m p ( k , l ) = S ( k , l ) S_{tmp}(k,l)=S(k,l) Stmp(k,l)=S(k,l)
       else
          S m i n ( k , l ) = m i n ( S m i n ( k , l − 1 ) , S ( k , l ) ) S_{min}(k,l)=min(S_{min}(k,l-1),S(k,l)) Smin(k,l)=min(Smin(k,l1),S(k,l))
          S t m p ( k , l ) = m i n ( S t m p ( k , l − 1 ) , S ( k , l ) ) S_{tmp}(k,l)=min(S_{tmp}(k,l-1),S(k,l)) Stmp(k,l)=min(Stmp(k,l1),S(k,l))
       end

定义比值 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 ) (5) p^{'}(k,l)=\alpha_pp^{'}(k,l-1) + (1-\alpha_)I(k,l) \tag{5} p(k,l)=αpp(k,l1)+(1α)I(k,l)(5)

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

MCRA2

将MCRA算法中最小值跟踪的方法改为连续谱最小值跟踪噪声估计方法,其余部分和MCRA方法一致。即将 S m i n ( k , l ) S_{min}(k,l) Smin(k,l)的估计方法改为,
       if S m i n ( k , l ) < S ( k , l ) S_{min}(k,l) < S(k,l) Smin(k,l)<S(k,l)
          S m i n ( k , l ) = γ S m i n ( k , l − 1 ) + 1 − γ 1 − β ( S ( k , l ) − β ) S ( k , l − 1 ) S_{min}(k,l)=\gamma S_{min}(k,l-1)+\frac{1-\gamma}{1-\beta}(S(k,l)-\beta)S(k,l-1) Smin(k,l)=γSmin(k,l1)+1β1γ(S(k,l)β)S(k,l1)
       else
          S m i n ( k , l ) = S ( k , l ) S_{min}(k,l)=S(k,l) Smin(k,l)=S(k,l)
       end

IMCRA

improved minima controlled recursive averaging (IMCRA)算法是在MCRA算法上做了很多优化。

  1. 式(2)中语音存在概率的计算方式进行了改变,改成了和omlsa中一样的方法。
  2. 通过控制先验语音缺席概率(而不是语音存在概率)来间接达到最小值控制。
  3. 对噪声做了一个偏差补偿
  4. I ( k , l ) I(k,l) I(k,l)通过两个不同比率进行判决,更加可靠。

自适应分位数噪声估计

自适应分位数噪声估计使用的是通用形式如下,
N ^ ( w , l ) = { N ^ ( w , l − 1 ) + λ δ + ( w , l ) , ∣ Y ( w , l ) ∣ ≥ N ^ ( w , l − 1 ) N ^ ( w , l − 1 ) − ( 1 − λ ) δ − ( w , l ) , ∣ Y ( w , l ) ∣ < N ^ ( w , l − 1 ) \hat{N}(w,l) = \begin{cases} \hat{N}(w,l-1) + \lambda \delta_+(w,l), |Y(w,l)| \geq \hat{N}(w,l-1) \\ \hat{N}(w,l-1) - (1-\lambda) \delta_-(w,l), |Y(w,l)| < \hat{N}(w,l-1) \end{cases} N^(w,l)={N^(w,l1)+λδ+(w,l),Y(w,l)N^(w,l1)N^(w,l1)(1λ)δ(w,l),Y(w,l)<N^(w,l1)

基本思想就是如果当前能量比估计的噪声能量高则增加噪声能量,否则就减少噪声能量,那接下来的重点就是如何设计增加和减少的步长,参考文章[2-3]介绍一些估计的方法,具体可以看文章,这里主要说一下自己对webrtc的自适应分位数噪声估计方法的理解,不一定正确,欢迎指正

1)对数域平滑
采用对数分位数噪声估计,在对数域进行平滑更新噪声能量,即,
l o g ( N ^ ( w , l ) ) = { l o g ( N ^ ( w , l − 1 ) ) + λ δ + ( w , l ) , l o g ( ∣ Y ( w , l ) ∣ ) ≥ l o g ( N ^ ( w , l − 1 ) ) l o g ( N ^ ( w , l − 1 ) ) − ( 1 − λ ) δ − ( w , l ) , l o g ( ∣ Y ( w , l ) ∣ ) < l o g ( N ^ ( w , l − 1 ) ) log(\hat{N}(w,l)) = \begin{cases} log(\hat{N}(w,l-1)) + \lambda \delta_+(w,l), log(|Y(w,l)|) \geq log(\hat{N}(w,l-1)) \\ log(\hat{N}(w,l-1)) - (1-\lambda) \delta_-(w,l), log(|Y(w,l)|) < log(\hat{N}(w,l-1)) \end{cases} log(N^(w,l))={log(N^(w,l1))+λδ+(w,l),log(Y(w,l))log(N^(w,l1))log(N^(w,l1))(1λ)δ(w,l),log(Y(w,l))<log(N^(w,l1))

2)变步长
d e n s i t y ( w , l ) = { c o u n t ∗ d e n s i t y ( w , l ) + 1 / ( 2 d ) c o u n t + 1 , ∣ l o g ( N ^ ( w , l − 1 ) ) − l o g ( ∣ Y ( w , l ) ∣ ) ∣ < d d e n s i t y ( w , l − 1 ) , o t h e r s density(w,l)=\begin{cases} \frac{count*density(w,l) + 1/(2d)}{count + 1} , |log(\hat{N}(w,l-1)) - log(|Y(w,l)|)| < d \\ density(w,l-1),others \end{cases} density(w,l)={count+1countdensity(w,l)+1/(2d),log(N^(w,l1))log(Y(w,l))<ddensity(w,l1),others

概率密度 d e n s i t y ( w , l ) density(w,l) density(w,l)的更新公式如上式,其中阈值 d = 0.01 d=0.01 d=0.01,如果当前帧的对数能量和噪声对数能量比较接近,绝对差距小于阈值 d d d,则将当前的密度与 1 / ( 2 d ) = 50 1/(2d)=50 1/(2d)=50 进行加权平均(增加当前的概率密度函数的数值),否则不更新。
δ − ( w , l ) = δ + ( w , l ) = { 40 c o u n t , d e n s i t y ( w , l ) < 1 40 c o u n t ∗ d e n s i t y ( w , l ) , o t h e r s \delta_-(w,l) = \delta_+(w,l)=\begin{cases} \frac{40}{count} , density(w,l)< 1 \\ \frac{40}{count*density(w,l)} ,others \end{cases} δ(w,l)=δ+(w,l)={count40,density(w,l)<1countdensity(w,l)40,others

步长的更新公式如上式,当概率密度达到阈值1后则减少步长,我的理解是在密度达到阈值后,表示在目标值附近,进行精细化搜索。
其中 c o u n t count count是从1到200循环计数的,当计数到200则更新噪声估计的值,否则不更新。200是个超参数,至于为什么从小计数到大,我的理解是当 c o u n t count count数值小时,步长大,当当 c o u n t count count数值大时,步长小,类似于算法收敛一样,先进行大范围搜索,当快达到目标时减少收敛速度,搜索更准确。同时webrtc设置了三种conut的初始值,同时更新,谁先达到200使用谁的结果,增加更新速度,相当于每200/3次更新一次结果。

参考

【1】Stahl V, Fischer A, Bippus R. Quantile based noise estimation for spectral subtraction and Wiener filtering[C]//2000 IEEE International Conference on Acoustics, Speech, and Signal Processing. Proceedings (Cat. No. 00CH37100). IEEE, 2000, 3: 1875-1878.
【2】Tiwari N, Pandey P C. Speech Enhancement Using Noise Estimation With Dynamic Quantile Tracking[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2019, 27(12): 2301-2312.
【3】Hammer H L, Yazidi A, Rue H. A new quantile tracking algorithm using a generalized exponentially weighted average of observations[J]. Applied Intelligence, 2019, 49(4): 1406-1420.
【4】Cohen I , Berdugo B . Speech enhancement for non-stationary noise environments[J]. Signal Processing, 2001, 81(11):2403-2418.
【5】Rangachari S , Loizou P C . A noise-estimation algorithm for highly non-stationary environments[J]. Speech Communication, 2006, 48(2):220-231.
【6】Cohen I . Noise spectrum estimation in adverse environments: improved minima controlled recursive averaging[J]. IEEE Transactions on Speech and Audio Processing, 2003, 11(5):466-475.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
极大似然估计(Maximum Likelihood Estimation,MLE)是一种常见的参数估计方法,用于从概率模型中推断出最可能的参数值。其核心思想是在给定观测数据下,找到一个参数值,使得该参数下观测数据的概率最大化。 具体来说,假设我们有一个概率模型 $P(Y|\theta)$,其中 $Y$ 表示观测数据,$\theta$ 表示模型的参数。那么,给定观测数据 $Y$,我们可以通过最大化似然函数 $L(\theta|Y)$ 来求解参数 $\theta$: $$\hat{\theta} = \arg \max_{\theta} L(\theta|Y) = \arg \max_{\theta} P(Y|\theta)$$ 其中,$\hat{\theta}$ 表示参数的最优估计值。为了方便计算,通常将似然函数取对数,即使用对数似然函数 $l(\theta|Y)=\log L(\theta|Y)$,那么上述公式可以改写为: $$\hat{\theta} = \arg \max_{\theta} l(\theta|Y) = \arg \max_{\theta} \log P(Y|\theta)$$ 这里我们可以使用梯度下降等优化算法来求解最优参数值。 以线性回归模型为例,假设我们有 $n$ 个样本点 $(x_i,y_i)$,其中 $x_i$ 是输入特征,$y_i$ 是输出标签。线性回归模型可以表示为 $y_i = \theta^T x_i + \epsilon_i$,其中 $\epsilon_i$ 表示噪音,通常假设其服从均值为 $0$,方差为 $\sigma^2$ 的高斯分布。那么,对于一个观测数据 $(x_i,y_i)$,其概率密度函数可以表示为: $$P(y_i|x_i,\theta) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp(-\frac{(y_i-\theta^T x_i)^2}{2\sigma^2})$$ 那么,对于所有观测数据,其似然函数可以表示为: $$L(\theta|x,y) = \prod_{i=1}^{n} P(y_i|x_i,\theta) = \prod_{i=1}^{n} \frac{1}{\sqrt{2\pi\sigma^2}} \exp(-\frac{(y_i-\theta^T x_i)^2}{2\sigma^2})$$ 对数似然函数可以表示为: $$l(\theta|x,y) = \log L(\theta|x,y) = -\frac{n}{2}\log(2\pi\sigma^2)-\frac{1}{2\sigma^2}\sum_{i=1}^{n}(y_i-\theta^T x_i)^2$$ 我们的目标是求解对数似然函数的最大值,即: $$\hat{\theta} = \arg \max_{\theta} l(\theta|x,y)$$ 可以使用梯度下降等优化算法求解最优参数值。 总结一下,极大似然估计法的原理是在给定观测数据下,找到一个参数值,使得该参数下观测数据的概率最大化;实现方法是利用对数似然函数求解最优参数值,可以使用梯度下降等优化算法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值