噪声估计算法

分类根据

介绍几种常见的单通道噪声估计算法。噪声估计主要基于以下三个现象。

(1):在音频信号中,闭塞因闭合段频谱能量趋于0或者接近噪声水平。噪声在频谱上分布不均匀,不同的频带具有不同的SNR.对于任意类型噪声,只要该频带无语音的概率很高或者SNR很低,则可以估计/更新该频带的噪声谱,这类思想是递归平均噪声估计算法(the recursive-averaging type of noise-estimation algorithms)的支撑点

(2)即使在语音活动的区域,带噪语音信号在单个频带的功率通常会衰减到噪声的功率水平,我们因此可以追踪在短时窗内(0.4~1s)带噪语音谱每个频带的最小值,实现各个频带噪声的估计。该现象是最小值跟踪算法(the minima-tracking algorithms)的支撑点。

(3)每个频带能量的直方图揭示了一个理论:出现频次最高的值对应频带的噪声水平。有时谱能量直方图有两种模式:1)低能量对应无声段、语音的低能量段;2)高能量模式对应(noisy)语音的浊音段。低能量成分大于高能量成分:

因而总结出三类噪声估计算法

  • 递归平均噪声算法
  • 最小值跟踪算法
  • 直方图噪声估计算法

一、递归平均噪声算法

这类方法利用信噪比相关,加权谱相关,基于信号存在概率等方法,这里只介绍给予信号存在概率的递归平均噪声估计算法。

基本框架:
H 0 k : s p e e c h a b s e n t : Y ( λ , k ) = D ( λ , k ) H 1 k : s p e e c h p r e s e n t : Y ( λ , k ) = X ( λ , k ) + D ( λ , k ) H_{0}^{k}:speech {\quad} absent:Y(\lambda,k)=D(\lambda,k)\\ H_{1}^{k}:speech {\quad}present:Y(\lambda,k)=X(\lambda,k)+D(\lambda,k) H0k:speechabsent:Y(λ,k)=D(λ,k)H1k:speechpresent:Y(λ,k)=X(λ,k)+D(λ,k)
从而实现噪声谱估计
δ ^ d 2 ( λ , k ) = E [ δ d 2 ( λ , k ) ∣ Y ( λ , k ) ] = E [ δ d 2 ( λ , k ) ∣ H 0 ] p ( H 0 ∣ Y ( λ , k ) ) + E [ δ d 2 ( λ , k ) ∣ H 1 ] p ( H 1 ∣ Y ( λ , k ) ) \hat{\delta}_{d}^{2}(\lambda,k)=E[\delta^{ 2}_{d}(\lambda,k)|Y(\lambda,k)]\\ =E[\delta^{2}_{d}(\lambda,k)|H_{0}]p(H_{0}|Y(\lambda,k))+E[\delta^{2}_{d}(\lambda,k)|H_{1}]p(H_{1}|Y(\lambda,k)) δ^d2(λ,k)=E[δd2(λ,k)Y(λ,k)]=E[δd2(λ,k)H0]p(H0Y(λ,k))+E[δd2(λ,k)H1]p(H1Y(λ,k))
剩下的就是一些常规思路了

似然比方法

要点:(1)利用ML准则估计概率,(2)利用 δ ^ d 2 ( λ − 1 , k ) \hat{\delta}_{d}^{2}(\lambda-1,k) δ^d2(λ1,k)近似表达 E [ δ d 2 ( λ , k ) ∣ H 1 k ] E[\delta^{2}_{d}(\lambda,k)|H_{1}^{k}] E[δd2(λ,k)H1k]

这样就可将噪声估计表示为
δ ^ d 2 ( λ , k ) = r Λ ( λ , k ) 1 + r Λ ( λ , k ) δ ^ d 2 ( λ − 1 , k ) + 1 1 + r Λ ( λ , k ) ∣ Y ( λ , k ) ∣ 2 \hat{\delta}_{d}^{2}(\lambda,k)=\frac{r\Lambda(\lambda,k)}{1+r\Lambda(\lambda,k)}\hat{\delta}_{d}^{2}(\lambda-1,k)+\frac{1}{1+r\Lambda(\lambda,k)}|Y(\lambda,k)|^{2} δ^d2(λ,k)=1+rΛ(λ,k)rΛ(λ,k)δ^d2(λ1,k)+1+rΛ(λ,k)1Y(λ,k)2
对应这平滑的思路,只不过平滑因子对应于这里的存在概率 r Λ ( λ , k ) 1 + r Λ ( λ , k ) \frac{r\Lambda(\lambda,k)}{1+r\Lambda(\lambda,k)} 1+rΛ(λ,k)rΛ(λ,k),在DFT系数服从复高斯模型下,可以实现参数估计
Λ ( λ , k ) = 1 1 + ξ k ( λ ) e x p [ ξ k ( λ ) 1 + ξ k ( λ ) γ k ( λ ) ] \Lambda(\lambda,k)=\frac{1}{1+\xi_{k}(\lambda)}exp[\frac{\xi_{k}(\lambda)}{1+\xi_{k}(\lambda)}\gamma_{k}(\lambda)] Λ(λ,k)=1+ξk(λ)1exp[1+ξk(λ)ξk(λ)γk(λ)]
其中 γ k ( λ ) \gamma_{k}(\lambda) γk(λ) ξ k ( λ ) \xi_{k}(\lambda) ξk(λ)分别表示后验和先验SNR.

MCRA(最小值控制的递归平均算法)

MCRA基本框架
H 0 k : δ ^ D 2 ( λ , k ) = α δ ^ D 2 ( λ − 1 , k ) + ( 1 − α ) ∣ Y ( λ , k ) ∣ 2 H 1 k : δ ^ D 2 ( λ , k ) = δ ^ D 2 ( λ − 1 , k ) H_{0}^{k}:\hat{\delta}_{D}^{2}(\lambda,k)=\alpha\hat{\delta}_{D}^{2}(\lambda-1,k)+(1-\alpha)|Y(\lambda,k)|^{2}\\ H_{1}^{k}:\hat{\delta}_{D}^{2}(\lambda,k)=\hat{\delta}_{D}^{2}(\lambda-1,k) H0k:δ^D2(λ,k)=αδ^D2(λ1,k)+(1α)Y(λ,k)2H1k:δ^D2(λ,k)=δ^D2(λ1,k)
噪声谱估计
δ ^ d 2 = E [ δ d 2 ( λ , k ) ∣ Y ( λ , k ) ] = E [ δ d 2 ( λ , k ) ∣ H 1 ] p ( H 1 ∣ Y ( λ , k ) ) + E [ δ d 2 ( λ , k ) ∣ H 0 ] p ( H 0 ∣ Y ( λ , k ) ) \hat{\delta}_{d}^{2} =E[{\delta}_{d}^{2}(\lambda,k)|Y(\lambda,k)]\\=E[\delta_{d}^{2}(\lambda,k)|H_{1}]p(H_{1}|Y(\lambda,k))+E[\delta_{d}^{2}(\lambda,k)|H_{0}]p(H_{0}|Y(\lambda,k)) δ^d2=E[δd2(λ,k)Y(λ,k)]=E[δd2(λ,k)H1]p(H1Y(λ,k))+E[δd2(λ,k)H0]p(H0Y(λ,k))
(1)得到带噪语音的频谱,
S ( λ , k ) = α s S ( λ − 1 , k ) + ( 1 − α s ) S f ( λ , k ) S(\lambda,k)=\alpha_{s} S(\lambda-1,k)+(1-\alpha_{s})S_{f}(\lambda,k) S(λ,k)=αsS(λ1,k)+(1αs)Sf(λ,k)
其中 α s \alpha_{s} αs为常数平滑因子,S为带噪语音的频谱,其中
S f ( λ , k ) = ∑ i = − I w I w w ( i ) ∣ Y ( λ , k ) ∣ 2 S_{f}(\lambda,k)=\sum_{i=-I_{w}}^{I_{w}}w(i)|Y(\lambda,k)|^{2} Sf(λ,k)=i=IwIww(i)Y(λ,k)2
其中 w ( i ) w( i) w(i)为窗函数。

(2)对 S S S进行最小值跟踪,以得到 S m i n S_{min} Smin
i f P m i n ( λ − 1 , k ) < P ( λ , k ) P m i n ( λ , k ) = γ P m i n ( λ − 1 , k ) + 1 − γ 1 − β ( P ( λ , k ) − β P ( λ − 1 , k ) ) e l s e P m i n ( λ , k ) = P ( λ , k ) e n d if P_{min}(\lambda-1,k)<P(\lambda,k)\\ P_{min}(\lambda,k)=\gamma P_{min}(\lambda-1,k)+\frac{1-\gamma}{1-\beta}(P(\lambda,k)-\beta P(\lambda-1,k))\\ else\\ P_{min}(\lambda,k)=P(\lambda,k)\\ end ifPmin(λ1,k)<P(λ,k)Pmin(λ,k)=γPmin(λ1,k)+1β1γ(P(λ,k)βP(λ1,k))elsePmin(λ,k)=P(λ,k)end
这里得到 S m i n S_{min} Smin

(3)计算p
i f S r ( λ , k ) > δ p ( λ , k ) = 1 s p e e c h p r e s e n t e l s e p ( λ , k ) = 0 s p e e c h a b s e n t if \quad S_{r}(\lambda,k)>\delta p(\lambda,k)=1 \quad speech present\\ else\\ p(\lambda,k)=0 \quad speech absent ifSr(λ,k)>δp(λ,k)=1speechpresentelsep(λ,k)=0speechabsent
其中 S r ( λ , k ) = S ( λ , k ) S m i n ( λ , k ) S_{r}(\lambda,k)=\frac{S(\lambda,k)}{S_{min}(\lambda,k)} Sr(λ,k)=Smin(λ,k)S(λ,k).通常对 p p p有一个后处理的平滑操作。
p ^ ( λ , k ) = α p p ^ ( λ − 1 , k ) + ( 1 − α p ) p ( λ , k ) \hat{p}(\lambda,k)=\alpha_{p}\hat{p}(\lambda-1,k)+(1-\alpha_{p})p(\lambda,k) p^(λ,k)=αpp^(λ1,k)+(1αp)p(λ,k)
(4)计算时频相关平滑因子
α d ( λ , k ) = α + ( 1 − α ) p ( λ , k ) \alpha_{d}(\lambda,k)=\alpha+(1-\alpha)p(\lambda,k) αd(λ,k)=α+(1α)p(λ,k)
其中 α ( λ , k ) = P ( H 1 k ∣ Y ( λ , k ) ) \alpha(\lambda,k)=P(H_{1}^{k}|Y(\lambda,k)) α(λ,k)=P(H1kY(λ,k))

(5)更新噪声谱
δ ^ d ( λ , k ) = α d ( λ , k ) δ ^ d 2 ( λ − 1 , k ) + [ 1 − α d ( λ , k ) ] ∣ Y ( λ , k ) ∣ 2 \hat{\delta}_{d}(\lambda,k)=\alpha_{d}(\lambda,k)\hat{\delta}_{d}^{2}(\lambda-1,k)+[1-\alpha_{d}(\lambda,k)]|Y(\lambda,k)|^{2} δ^d(λ,k)=αd(λ,k)δ^d2(λ1,k)+[1αd(λ,k)]Y(λ,k)2

IMCRA

(1)仍然是S和 S m i n S_{min} Smin的计算

(2)计算I(语音活动检测)
I ( λ , k ) = 1 i f γ m i n ( λ , k ) < γ 0 a n d ξ ( λ , k ) < ξ 0 ( s p e e c h i s a b s e n t ) I ( λ , k ) = 0. I(\lambda,k)=1\quad if \gamma_{min}(\lambda,k)<\gamma_{0} and \xi(\lambda,k) < \xi_{0} (speech is absent)\\ I(\lambda,k)=0. I(λ,k)=1ifγmin(λ,k)<γ0andξ(λ,k)<ξ0(speechisabsent)I(λ,k)=0.
其中 γ m i n = ∣ Y ( λ , k ) ∣ 2 B m i n S m i n ( λ , k ) \gamma_{min}=\frac{|Y(\lambda,k)|^{2}}{B_{min}S_{min}(\lambda,k)} γmin=BminSmin(λ,k)Y(λ,k)2; ξ ( λ , k ) = S ( λ , k ) B m i n S m i n ( λ , k ) \xi(\lambda,k)=\frac{S(\lambda,k)}{B_{min}S_{min}(\lambda,k)} ξ(λ,k)=BminSmin(λ,k)S(λ,k)其中 B m i n B_{min} Bmin是最小噪声估计偏差。这里采用常数值 B m i n = 1.66 B_{min}=1.66 Bmin=1.66

(3)IMCRA的更新

∑ i = − I w I w I ( λ , k − i ) ≠ 0 \sum_{i=-I_{w}}^{I_{w}}I(\lambda,k-i)\neq0 i=IwIwI(λ,ki)̸=0,更新 S ^ f ( λ , k ) \hat{S}_{f}(\lambda,k) S^f(λ,k)公式
S ^ f ( λ , k ) = ∑ i = − L w I w w ( i ) I ( λ , k − 1 ) ∣ ∣ ∑ i = − I w I w w ( i ) I ( λ , k − i ) \hat{S}_{f}(\lambda,k)=\frac{\sum_{i=-L_{w}}^{I_{w}}w(i)I(\lambda,k-1)||}{\sum_{i=-I_{w}}^{I_{w}}}w(i)I(\lambda,k-i) S^f(λ,k)=i=IwIwi=LwIww(i)I(λ,k1)w(i)I(λ,ki)
否则的话, S ^ ( λ , k ) = S ^ ( λ − 1 , k ) \hat{S}(\lambda,k)=\hat{S}(\lambda-1,k) S^(λ,k)=S^(λ1,k),然后采用递归平均
S ^ ( λ , k ) = α s S ^ ( λ − 1 , k ) + ( 1 − α s ) S ^ f ( λ , k ) \hat{S}(\lambda,k)=\alpha_{s}\hat{S}(\lambda-1,k)+(1-\alpha_{s})\hat{S}_{f}(\lambda,k) S^(λ,k)=αsS^(λ1,k)+(1αs)S^f(λ,k)
(4)计算语音不存在概率

使用
P ( H 1 k ∣ Y ( λ , k ) ) = r Λ ( λ , k ) 1 + r Λ ( λ , k ) P(H_{1}^{k}|Y(\lambda,k))=\frac{r\Lambda(\lambda,k)}{1+r\Lambda(\lambda,k)} P(H1kY(λ,k))=1+rΛ(λ,k)rΛ(λ,k)
进行估计,将
Λ ( λ , k ) = 1 1 + ξ k ( λ ) e x p [ ξ k ( λ ) 1 + ξ k γ k ( λ ) ] \Lambda(\lambda,k)=\frac{1}{1+\xi_{k}(\lambda)}exp[\frac{\xi_{k}(\lambda)}{1+\xi_{k}}\gamma_{k}(\lambda)] Λ(λ,k)=1+ξk(λ)1exp[1+ξkξk(λ)γk(λ)]
进而可以得到概率估计
p ( λ , k ) = 1 1 + q ( λ , k ) 1 − q ( λ , k ) ( 1 + ξ k ( λ ) ) e x p ( − v ( λ , k ) ) p(\lambda,k)=\frac{1}{1+\frac{q(\lambda,k)}{1-q(\lambda,k)}(1+\xi_{k}(\lambda))exp(-v(\lambda,k))} p(λ,k)=1+1q(λ,k)q(λ,k)(1+ξk(λ))exp(v(λ,k))1
其中 q ( λ , k ) = p ( H 0 k ) q(\lambda,k)=p(H_{0}^{k}) q(λ,k)=p(H0k)为语音不存在的概率, v ( λ , k ) = γ k ( λ ) ξ k ( λ ) / ( 1 + ξ k ( λ ) ) v(\lambda,k)=\gamma_{k}(\lambda)\xi_{k}(\lambda)/(1+\xi_{k}(\lambda)) v(λ,k)=γk(λ)ξk(λ)/(1+ξk(λ)),其中 γ k ( λ ) \gamma_{k}(\lambda) γk(λ) ξ k ( λ ) \xi_{k}(\lambda) ξk(λ)是后验和先验SNR.

上面的 q ( λ , k ) q(\lambda,k) q(λ,k)可以作为先验给定,也可以利用实验数据进行估计。

先定义 γ ^ m i n ( λ , k ) = ∣ Y ( λ , k ) ∣ 2 B m i n S ^ m i n ( λ , k ) \hat{\gamma}_{min}(\lambda,k)=\frac{|Y(\lambda,k)|^{2}}{B_{min}\hat{S}_{min}(\lambda,k)} γ^min(λ,k)=BminS^min(λ,k)Y(λ,k)2, ξ ^ ( λ , k ) = S ^ ( λ , k ) B m i n S ^ m i n ( λ , k ) \hat{\xi}(\lambda,k)=\frac{\hat{S}(\lambda,k)}{B_{min}\hat{S}_{min}}(\lambda,k) ξ^(λ,k)=BminS^minS^(λ,k)(λ,k).

如果 γ m i n ( λ , k ) ^ ≤ 1 \hat{\gamma_{min}(\lambda,k)}\leq1 γmin(λ,k)^1并且 ξ ^ ( λ , k ) < ξ 0 \hat{\xi}(\lambda,k)<\xi_{0} ξ^(λ,k)<ξ0此时 q ^ ( λ , k ) = 1 \hat{q}(\lambda,k)=1 q^(λ,k)=1

如果 1 < γ ^ m i n ( λ , k ) < γ 1 1<\hat{\gamma}_{min}(\lambda,k)<\gamma_{1} 1<γ^min(λ,k)<γ1并且 ξ ^ ( λ , k ) < ξ 0 \hat{\xi}(\lambda,k)<\xi_{0} ξ^(λ,k)<ξ0此时 q ^ ( λ , k ) = γ 1 − γ ( λ , k ) γ 1 − 1 \hat{q}(\lambda,k)=\frac{\gamma_{1}-\gamma(\lambda,k)}{\gamma_{1}-1} q^(λ,k)=γ11γ1γ(λ,k).利用上式对 q ( λ , k ) q(\lambda,k) q(λ,k)进行估计。

接下来需要对后验SNR和先验SNR进行估计,就可以完成 p ( λ , k ) p(\lambda,k) p(λ,k)的估计。

计算出 p p p以后,借助
δ ^ d 2 ( λ , k ) = α d ( λ , k ) δ ^ d 2 ( λ − 1 , k ) + [ 1 − α d ( λ , k ) ∣ Y ( λ , k ) ∣ 2 ] \hat{\delta}_{d}^{2}(\lambda,k)=\alpha_{d}(\lambda,k)\hat{\delta}_{d}^{2}(\lambda-1,k)+[1-\alpha_{d}(\lambda,k)|Y(\lambda,k)|^{2}] δ^d2(λ,k)=αd(λ,k)δ^d2(λ1,k)+[1αd(λ,k)Y(λ,k)2]
其中
α d ( λ , k ) = α + ( 1 − α ) p ( λ , k ) \alpha_{d}(\lambda,k)=\alpha+(1-\alpha)p(\lambda,k) αd(λ,k)=α+(1α)p(λ,k)
完成噪声估计后,并进一步对噪声谱进行修正,即得到
δ ^ d 2 = β δ d 2 ( λ , k ) \hat{\delta}_{d}^{2}=\beta\delta_{d}^{2}(\lambda,k) δ^d2=βδd2(λ,k)
至此完成了IMCRA的实现。

你可能感兴趣的:(噪声估计算法)