webrtc分位数噪声估计

分位数噪声估计

将最近 L L L帧的语音能量进行排序, ∣ Y ( k , t 0 ) ∣ ≤ ∣ Y ( k , t 1 ) ∣ ≤ . . . ≤ ∣ Y ( k , t L − 1 ) ∣ |Y(k,t_0)| \leq |Y(k,t_1)| \leq ... \leq |Y(k,t_{L-1})| Y(k,t0)Y(k,t1)...Y(k,tL1),q-分位的噪声估计为
N ( w , l ) = ∣ Y ( w , t ⌊ q L ⌋ ) ∣ N(w,l) = |Y(w,t_{\left \lfloor qL \right \rfloor})| N(w,l)=Y(w,tqL)

分位数噪声估计鲁棒性比较好,但需要对 L L L帧的数据进行排序,内存和计算量比较大,为此有人研究了自适应分位数噪声估计[1-3]。

webrtc自适应分位数噪声估计

自适应分位数噪声估计使用的是通用形式如下,
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值