您當前的位置:首頁 > 繪畫

噪聲估計方法總結(二)

作者:由 myuzhao 發表于 繪畫時間:2022-04-02

MCRA

MCRA(Minima controlled recursive averaging)演算法使用了遞迴平均和最小值跟蹤相結合的方法,這裡的最小值跟蹤體現在語音存在機率是由最小值跟蹤確定的。

遞迴平滑

在噪聲段進行語音平滑處理,在語音段不更新噪聲,則,

\begin{aligned} H_0^{

\alpha_d

是平滑引數,數值過大會導致跟蹤較慢,數值過小,容易產生音樂噪聲。利用條件語音存在機率

p^{

進行綜合,可得,

\begin{aligned} \hat{\lambda_d}(k,l+1) &= (\alpha_d\hat{\lambda_d}(k,l) + (1-\alpha_d)|Y(k,l)|^2)(1-p^{

其中,

\tilde{\alpha_d}=\alpha_d + (1-\alpha_d)p^{

最小值控制語音存在機率

首先對幅度譜在頻域進行平滑,得,

S_f(k,l)=\sum_{i=-w}^{w}b(i)|Y(k-i,l)|^2 \tag{3}

接著在時域進行平滑,

S(k,l)=\alpha_s S(k,l-1) + (1-\alpha_s )S_f(k,l) \tag{4}

利用分幀最小值跟蹤法求出

S_{min}(k,l)

, if mod(

\lambda

,D) = 0

S_{min}(k,l)=min(S_{min}(k,l-1),S(k,l))

S_{tmp}(k,l)=S(k,l)

else

S_{min}(k,l)=min(S_{min}(k,l-1),S(k,l))

S_{tmp}(k,l)=min(S_{tmp}(k,l-1),S(k,l))

end

定義比值

S_r(k,l)=S(k,l)/S_{min}(k,l)

,如果

S_r(k,l)

大於閾值,則令

I(k,l)=1

,否則為0,條件語音存在機率根據I(k,l)平滑得到,即,

p^{

將式(6)帶入式(2)得到最終的噪聲估計值。

MCRA2

將MCRA演算法中最小值跟蹤的方法改為連續譜最小值跟蹤噪聲估計方法,其餘部分和MCRA方法一致。即將

S_{min}(k,l)

的估計方法改為,

if

S_{min}(k,l) < S(k,l)

S_{min}(k,l)=\gamma S_{min}(k,l-1)+\frac{1-\gamma}{1-\beta}(S(k,l)-\beta)S(k,l-1)

else

S_{min}(k,l)=S(k,l)

end

IMCRA

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

式(2)中語音存在機率的計算方式進行了改變,改成了和omlsa中一樣的方法。

透過控制先驗語音缺席機率(而不是語音存在機率)來間接達到最小值控制。

對噪聲做了一個偏差補償

I(k,l)

透過兩個不同比率進行判決,更加可靠。

自適應分位數噪聲估計

自適應分位數噪聲估計使用的是通用形式如下,

\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}\\

基本思想就是如果當前能量比估計的噪聲能量高則增加噪聲能量,否則就減少噪聲能量,那接下來的重點就是如何設計增加和減少的步長,參考文章[2-3]介紹一些估計的方法,具體可以看文章,這裡主要說一下自己對webrtc的自適應分位數噪聲估計方法的理解,

不一定正確,歡迎指正

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}\\

2)變步長

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)

的更新公式如上式,其中閾值

d=0.01

,如果當前幀的對數能量和噪聲對數能量比較接近,絕對差距小於閾值

d

,則將當前的密度與

1/(2d)=50

進行加權平均(增加當前的機率密度函式的數值),否則不更新。

\delta_-(w,l) = \delta_+(w,l)=\begin{cases} \frac{40}{count} , density(w,l)< 1 \\ \frac{40}{count*density(w,l)} ,others \end{cases}\\

步長的更新公式如上式,當機率密度達到閾值1後則減少步長,我的理解是在密度達到閾值後,表示在目標值附近,進行精細化搜尋。 其中

count

是從1到200迴圈計數的,當計數到200則更新噪聲估計的值,否則不更新。200是個超引數,至於為什麼從小計數到大,我的理解是當

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。

標簽: 噪聲  最小值  語音  speech  平滑