语音增强技术

我的书:
在这里插入图片描述淘宝购买链接
当当购买链接
京东购买链接

在人机交互的场景中,麦克风采集到的人声不可避免的混杂外界噪声,可以通过信号处理的方法在处理前将其去除,以获得“纯净”的语音信号。这一过程称为降噪或者语音增强;从麦克风数量上分为单麦克降噪,多麦克降噪,算法层次上,主要分为滤波法(时域,频域,空域),谱分辨法,基于模型的方法。
噪声将改变采集到的人声特性,噪声/干扰分为四类:加性噪声,人声间互相干扰,混响,回声。这些噪声在信号处理领域分别被称为:降噪(noise reduction/noise suppression),去混响(dereverberation),回声消除(AEC),SS(source seperation)。每一个都是一个很大的研究类别。绕射声场:实际使用场景的空间有很多反射面和声场能量吸收介质,声音早空间中多次反射和绕射(衍射,声波会绕至障碍物背后并继续向前传播的一种现象)以在空间中获得一致性的分布。多次反射的部分形成混响。

加性噪声消除
消除噪声的同时要求不能损伤感兴趣的人声,如果损伤将对后续处理(
MFCC,PLP,LPC)有影响;这样可以使用诸如信噪比SNR准则,感知质量判决准则等,最早的降噪研究是模拟域的谱减法,后来又有了数字域的谱减法。由于语音和噪声的通常具有不同的特征,基于滤波的方法是将信号通过线性滤波器,在基本保持原有语音信号不变的同时将具有噪声特征的信号滤除;常用的方法包括维纳滤波,子空间法。谱分辨法估计语音和噪声的频谱,常用方法有最小均方误差(MMSE),最大似然估计,最大后验概率估计。基于模型的方法为语音产生建模,参数估计在模型空间进行,常用方法如基于线性预测的卡尔曼滤波,基于隐马尔科夫的统计模型。
2.1问题描述
这里以一个麦克风为例,在时刻 n n n,麦克风采集到的信号是 y ( n ) y(n) y(n),人声信号是 x ( n ) x(n) x(n),加性噪声是 v ( n ) v(n) v(n),这里没有考虑混响,回声和路径传播等影响,则有:
y ( n ) = x ( n ) + v ( n ) (2.1) y(n) = x(n) + v(n) \tag {2.1} y(n)=x(n)+v(n)(2.1)
其向量表示如下:
y ( n ) = x ( n ) + v ( n ) (2.2) \mathbf y(n) = \mathbf x(n) + \mathbf v(n) \tag {2.2} y(n)=x(n)+v(n)(2.2)
上式中 y ( n ) = [ y ( n ) y ( n − 1 ) ⋯ y ( n − L + 1 ) ] T \mathbf y(n)=\begin{bmatrix} y(n)& y(n-1)&\cdots &y(n-L+1)\end{bmatrix}^T y(n)=[y(n)y(n1)y(nL+1)]T, L L L是最近观测到的带噪信号数量,降噪问题就是从观测到的 y ( n ) y(n) y(n)估计 x ( n ) x(n) x(n),对式2.2做DTFT变换后得到:
Y ( n , i ω k ) = X ( n , i ω k ) + V ( n , i ω k ) (2.4) Y(n,i\omega_k)=X(n,i\omega_k)+V(n, i\omega_k) \tag {2.4} Y(n,iωk)=X(n,iωk)+V(n,iωk)(2.4)
Y ( n , i ω k ) = ∑ l − 0 L − 1 w ( l ) x ( n − L + l + 1 ) e − i ω k l (2.5) Y(n,i\omega_k)=\sum_{l-0}^{L-1}w(l)x(n-L+l+1)e^{-i\omega_kl} \tag {2.5} Y(n,iωk)=l0L1w(l)x(nL+l+1)eiωkl(2.5)
是n时刻的STFT, ω K = 2 π k / L , L = 0 , 1 , . . . , L − 1 \omega_K=2\pi k/L, L=0,1,...,L-1 ωK=2πk/L,L=0,1,...,L1, w ( l ) w(l) w(l)是窗函数。
在消除噪声的同时,要求尽量不损伤采集到的语音信号,常用评价准则:

  • SNR准则

S N R ≜ σ x 2 σ v 2 = E [ x 2 ( n ) ] E [ v 2 ( n ) ] (2.6) SNR \triangleq \frac{\sigma_x^2}{\sigma_v^2}=\frac{E[x^2(n)]}{E[v^2(n)]} \tag {2.6} SNRσv2σx2=E[v2(n)]E[x2(n)](2.6)
其中 P x ( ω ) P_x(\omega) Px(ω) p v ( ω ) p_v(\omega) pv(ω)分别是信号和噪声的功率谱。

  • 语音失真度
    假设式2.1估计的语音信号是 x ^ n r ( n ) \hat x_{nr}(n) x^nr(n),则语音失真如下:
    ϕ s d = E [ x ( n ) − x ^ n r ( n ) ] 2 E [ x 2 ( n ) ] (2.7) \phi_{sd}=\frac{E[x(n)-\hat x_{nr}(n)]^2}{E[x^2(n)]} \tag {2.7} ϕsd=E[x2(n)]E[x(n)x^nr(n)]2(2.7)
    该值介于0~1,靠近0则失真度小,该值反应的是整体失真度,更为细粒度的频谱指标是:
    Φ s d ( ω ) ≜ E [ ∣ X ( i ω ) ∣ 2 − ∣ X ^ ( i ω ) ∣ 2 ] E [ ∣ X ( i ω ) ∣ 2 ] = P x ( ω ) − P X ^ n r P x ( ω ) (2.8) \Phi_{sd}(\omega) \triangleq \frac{E[|X(i\omega)|^2-|\hat X(i\omega)|^2]}{E[|X(i\omega)|^2]}=\frac{P_x(\omega)-P_{\hat X_{nr}}}{P_x(\omega)} \tag {2.8} Φsd(ω)E[X(iω)2]E[X(iω)2X^(iω)2]=Px(ω)Px(ω)PX^nr(2.8)
    这里可以看出,可以针对每个频率点,进行分析,通常划分成低中高三个频带或者低,中低,中高,高四个频带进行分析。
    ##滤波降噪法
    维纳滤波法,子空间法以及维纳滤波参数法。
    ###维纳滤波法
    通过实际信号和误差信号之间的最小均方误差MMSE进行求解,将观测道德额信号通过一个FIR滤波器 h ( n ) = [ h 0 h 1 ⋯ h L − 1 ] T \mathbf h(n)=\begin{bmatrix}h_0&h_1& \cdots &h_{L-1}\end{bmatrix}^T h(n)=[h0h1hL1]T,则可以得到输入信号的估计值 x ^ ( n ) \hat x(n) x^(n):
    x ^ ( n ) = h T y ( n ) \hat x(n)=\mathbf h^T \mathbf y(n) x^(n)=hTy(n)
    这样就可以得到误差信号 e x ( n ) e_x(n) ex(n):
    e x ( n ) ≜ x ( n ) − x ^ ( n ) = x ( n ) − h T y ( n ) (2.9) e_x(n) \triangleq x(n)-\hat x(n)=x(n)-\mathbf{h}^T \mathbf y(n) \tag {2.9} ex(n)x(n)x^(n)=x(n)hTy(n)(2.9)
    则可以得到判决准则/代价/目标函数:
    h ^ = arg ⁡ min ⁡ h J x ( h ) = E [ e x 2 ( n ) ] (2.10) \hat {\mathbf h}=\arg \min\limits_{\mathbf h}J_x(\mathbf h)=E[e_x^2(n)] \tag {2.10} h^=arghminJx(h)=E[ex2(n)](2.10)
    根据MMSE准则,推导 h ^ \hat {\mathbf h} h^表达式:
    E [ e x 2 ( n ) ] = [ x ( n ) − h T y ( n ) ] [ x ( n ) − h T y ( n ) ] ∗ (2.11) E[e_x^2(n)] =[x(n)- \mathbf h^T \mathbf y(n)][x(n)- \mathbf h^T \mathbf y(n)]^{*} \tag {2.11} E[ex2(n)]=[x(n)hTy(n)][x(n)hTy(n)](2.11)
    这里直接给出 h \mathbf h h的最优解(维纳-霍夫)方程,推导见后文。
    h o p t = R − 1 P ∗ (2.22) \mathbf h_{opt}=\mathbf R^{-1}\mathbf P^{*}\tag {2.22} hopt=R1P(2.22)
    其中 R = E [ y ∗ ( n ) y T ( n ) ] \mathbf R=E[\mathbf y^{*}(n) \mathbf y^T(n)] R=E[y(n)yT(n)], P = E [ x ∗ ( n ) y ( n ) ] \mathbf P = E[x^{*}(n)\mathbf y(n)] P=E[x(n)y(n)]
  • 维纳-霍夫方程推导
    根据方程2.11可以进一步推导如下:
    E [ e x 2 ( n ) ] = E [ x 2 ( n ) ] + h H ( n ) [ x ∗ ( n ) x T ( n ) ] h ( n ) − 2 R e h T ( n ) E [ x ∗ ( n ) x ( n ) ] = E [ x 2 ( n ) ] + h H R h − 2 R e ( h T P ) (2.23) E[e_x^2(n)]=E[x^2(n)]+\mathbf h^H(n)[\mathbf x^{*}(n) \mathbf x^T(n)]\mathbf h(n)-2Re{\mathbf h^T(n)E[x^{*}(n)\mathbf x(n)]}=E[x^2(n)]+\mathbf h^H\mathbf R \mathbf h-2Re(\mathbf h^T \mathbf P)\tag {2.23} E[ex2(n)]=E[x2(n)]+hH(n)[x(n)xT(n)]h(n)2RehT(n)E[x(n)x(n)]=E[x2(n)]+hHRh2Re(hTP)(2.23)
    式2.23可以式子的右边是误差的平方,必然大于等于零,而我们期望误差尽可能的小(期望它等于0),这是关于 h \mathbf h h的二次函数,存在全局最小点。
    将式2.23对 h \mathbf h h求导数:
    ▽ = ∂ E [ e x 2 ( n ) ] ∂ h = 2 R h − 2 P ∗ (2.24) \bigtriangledown=\frac{\partial E[e^2_x(n)]}{\partial \mathbf h}=2\mathbf R \mathbf h -2 \mathbf P^{*} \tag {2.24} =hE[ex2(n)]=2Rh2P(2.24)
    最优解处梯度等于零,则令2.24等于0得:
    ▽ = 2 R h o p t − 2 P ∗ = 0 (2.25) \bigtriangledown =2\mathbf R \mathbf h_{opt}-2\mathbf P^{*}=\mathbf 0 \tag {2.25} =2Rhopt2P=0(2.25)
    ###子空间法
    以MMSE为准则的维纳滤波能够获得最大的降噪性能,但是同时对语音信号损伤也会比较大。
    根据式2.9,
    e ( n ) = x ^ ( n ) − x ( n ) = h y ( n ) − x ( n ) = ( h − I ) x ( n ) + h v ( n ) = e x ( n ) + e v ( n ) (2.26) \mathbf e(n)= \hat {\mathbf x}(n)-\mathbf x(n)=\mathbf h \mathbf y(n)-\mathbf x(n) = (\mathbf h- \mathbf I)\mathbf x(n)+\mathbf h\mathbf v(n)=\mathbf e_x(n) + \mathbf e_v(n) \tag {2.26} e(n)=x^(n)x(n)=hy(n)x(n)=(hI)x(n)+hv(n)=ex(n)+ev(n)(2.26)
    根据上式,可以有三种方式求解 h \mathbf h h:

1.最小化 e ( n ) \mathbf e(n) e(n),这就是上一节维纳滤波的方法
2.最小化噪声 e v ( n ) \mathbf e_v(n) ev(n),同时限制语音失真,估计结果会产生稳态剩余噪声,一般不用。
3.最小化语音失真 e x ( n ) \mathbf e_x(n) ex(n),同时限制剩余噪声量。子空间使用的方法

由于变换矩阵 h \mathbf h h并非完美的,这将导致语音失真(式2.26的第一项),第二项是噪声失真。子空间法用数学公式表示是:
h o p t = arg ⁡ min ⁡ h t r { E [ e x ( n ) e x T ( n ) ] } , 且 满 足 t r { E [ e v ( n ) e v T ( n ) ] } ≤ L δ 2 (2.27) \mathbf h_{opt}=\arg \min \limits_{\mathbf h}tr\{E[e_x(n)e_x^T(n)]\}, 且满足 tr\{E[\mathbf e_v(n)\mathbf e_v^T(n)]\} \le L\delta^2 \tag {2.27} hopt=arghmintr{E[ex(n)exT(n)]},tr{E[ev(n)evT(n)]}Lδ2(2.27)
上式中,前一项是信号失真度,后一项是剩余噪声量。
可以使用拉格朗日乘法将上述两项综合起来:
H 0 = arg ⁡ min ⁡ H ℓ ( H , μ ) (2.28) \mathbf H_0=\arg\min_{\mathbf H}\ell(\mathbf H,\mu) \tag {2.28} H0=argHmin(H,μ)(2.28)
这里
ℓ ( H , μ ) = t r { E [ e x ( n ) e x T ( n ) ] } + μ ( t r { E ( e v ( n ) e v T ( n ) ) } − L σ 2 ) = t r [ ( H − I ) R x ( H − I ) T ] + μ [ t r ( H R v H T ) − L σ 2 ] (2.29) \ell(\mathbf H,\mu)=tr\{E[\mathbf e_x(n) \mathbf e_x^T(n)]\}+\mu (tr\{E(\mathbf e_v(n)\mathbf e_v^T(n))\}-\mathbf L \sigma^2)=tr[(\mathbf H- \mathbf I)\mathbf R_x(\mathbf H - \mathbf I)^T]+\mu[tr(\mathbf H \mathbf R_v \mathbf H^T)-\mathbf L \sigma^2] \tag {2.29} (H,μ)=tr{E[ex(n)exT(n)]}+μ(tr{E(ev(n)evT(n))}Lσ2)=tr[(HIRx(HI)T]+μ[tr(HRvHT)Lσ2](2.29)

R x \mathbf R_x Rx R v \mathbf R_v Rv是语音和噪声的协方差矩阵, μ \mu μ是拉格朗日乘子。
∂ ∂ H t r ( R x H ) = ∂ ∂ H t r ( H R x ) = R x T = R x (2.30) \frac{\partial}{\partial {\mathbf H}} tr(\mathbf R_x \mathbf H )=\frac{\partial}{\partial {\mathbf H}} tr(\mathbf H \mathbf R_x )= \mathbf R_x^T=\mathbf R_x \tag {2.30} Htr(RxH)=Htr(HRx)=RxT=Rx(2.30)

∂ ∂ H t r ( H R x H T ) = 2 H R x (2.31) \frac{\partial}{\partial {\mathbf H}}tr(\mathbf H\mathbf R_x \mathbf H^T)=2\mathbf H \mathbf R_x \tag {2.31} Htr(HRxHT)=2HRx(2.31)
∂ ∂ H t r ( H R v H T ) = 2 H R v (2.31) \frac{\partial}{\partial {\mathbf H}}tr(\mathbf H\mathbf R_v \mathbf H^T)=2\mathbf H \mathbf R_v \tag {2.31} Htr(HRvHT)=2HRv(2.31)

则可以推导出:
∂ ∂ H ℓ ( H , μ ) = 2 H R x − 2 R x + 2 μ H R v (2.32) \frac{\partial}{\partial {\mathbf H}}\ell(\mathbf H,\mu)=2\mathbf H \mathbf R_x-2\mathbf R_x+2\mu\mathbf H\mathbf R_v \tag {2.32} H(H,μ)=2HRx2Rx+2μHRv(2.32)

令式2.32等于零,可得 H \mathbf H H的最优解:
H o p t = R x ( R x + μ R v ) − 1 (2.33) \mathbf H_{opt}=\mathbf R_x(\mathbf R_x+\mu \mathbf R_v)^{-1} \tag {2.33} Hopt=Rx(Rx+μRv)1(2.33)
上式中 μ \mu μ满足
t r [ R x ( R x + μ R v ) − 1 R v ( R x + μ R v ) − 1 R x ] = L σ 2 (2.34) tr[\mathbf R_x(\mathbf R_x+\mu \mathbf R_v)^{-1}\mathbf R_v(\mathbf R_x+\mu \mathbf R_v)^{-1} \mathbf R_x]=\mathbf L \sigma^2 \tag {2.34} tr[Rx(Rx+μRv)1Rv(Rx+μRv)1Rx]=Lσ2(2.34)

使用广义特征向量法,可以将式2.33重写如下:
KaTeX parse error: \tag works only in display equations
式2.35的另一个理解是将向量空间分解到两个子空间中,语音子空间对于于特征值 λ i > 0 \lambda_i>0 λi>0的情况,噪声对应于特征值 λ i = 0 \lambda_i=0 λi=0的情况。假设语音子空间的维度是M,则有:
H o p t = B T \mathbf H_{opt}=\mathbf B^T Hopt=BT
KaTeX parse error: Got function '\sum' with no arguments as argument to '\mathbf' at position 56: …ix} {\mathbf \̲s̲u̲m̲}&{\mathbf 0_{M…

K = L − M \mathbf K = \mathbf L - \mathbf M K=LM是噪声子空间的阶数,
∑ = d i a g ( λ 1 λ 1 + μ , λ 2 λ 2 + μ , . . . , λ M λ M + μ ) (2.36) \mathbf {\sum}=diag(\frac{\lambda_1}{\lambda_1+\mu},\frac{\lambda_2}{\lambda_2+\mu},...,\frac{\lambda_M}{\lambda_M+\mu}) \tag {2.36} =diag(λ1+μλ1,λ2+μλ2,...,λM+μλM)(2.36)

子空间法降噪就是将噪声子空间值缩小到零,同时时语音子空间获得纯净的语音。
噪声衰减因子是:
ξ n r ( H o p t ) = t r { R v } t r { E [ e v ( n ) e v T ( n ) ] } \xi_{nr}(\mathbf H_{opt})=\frac{tr\{\mathbf {R_v}\}}{tr\{E[\mathbf e_v(n)\mathbf e_v^T(n)]\}} ξnr(Hopt)=tr{E[ev(n)evT(n)]}tr{Rv}

###频域维纳滤波
使用重叠相加法将时域维纳滤波变换到频域,这样可以获得和时域维纳滤波一样的性能。频域维纳滤波的目标函数的权重解是:
H o p t ( i ω k ) = arg ⁡ min ⁡ H ( i ω k ) J X [ H ( i ω k ) ] (2.37) \mathbf H_{opt}(i\omega_k)=\arg\min \limits_{\mathbf H(i\omega_k)}J_X[\mathbf H(i\omega_k)]\tag {2.37} Hopt(iωk)=argH(iωk)minJX[H(iωk)](2.37)
其中:
J X [ H ( i ω k ) ] = E [ ∣ X ( n , i ω k ) − H ( i ω k ) Y ( n , i ω k ) ∣ 2 ] (2.38) J_X[\mathbf H(i\omega_k)]=E[|\mathbf X(n,i\omega_k)-\mathbf H(i\omega_k)\mathbf Y(n,i\omega_k)|^2]\tag {2.38} JX[H(iωk)]=E[X(n,iωk)H(iωk)Y(n,iωk)2](2.38)
是频域MSE准则,类似时域解法令 J J J H ( i ω k ) \mathbf H(i\omega_k) H(iωk)求偏导等于零,可以得到最优解。
H o p t ( i ω k ) = E [ ∣ X ( n , i ω k ) ∣ 2 ] E [ ∣ Y ( n , i ω k ) ∣ 2 ] = P x ( ω k ) P y ( ω k ) (2.39) \mathbf H_{opt}(i\omega_k)=\frac{E[|X(n,i\omega_k)|^2]}{E[|Y(n,i\omega_k)|^2]}=\frac{P_x(\omega_k)}{P_y(\omega_k)}\tag {2.39} Hopt(iωk)=E[Y(n,iωk)2]E[X(n,iωk)2]=Py(ωk)Px(ωk)(2.39)
其中 P x P_x Px P y P_y Py分别是 x ( n ) x(n) x(n) y ( n ) y(n) y(n)的功率谱密度。这里可以看出 H o p t \mathbf H_{opt} Hopt非负且是实数,这就意味着只改变了信号的幅度并没改变信号的相位。

这样可以得到纯净语音估计是:
X ^ o p t = H o p t Y ( n , i ω k ) = H o p t X ( n , i ω k ) + H o p t V ( n , i ω k ) (2.40) \hat{\mathbf X}_{opt}=\mathbf H_{opt}\mathbf Y(n,i\omega_k)=\mathbf H_{opt}\mathbf X(n,i\omega_k)+\mathbf H_{opt}\mathbf V(n,i\omega_k)\tag {2.40} X^opt=HoptY(n,iωk)=HoptX(n,iωk)+HoptV(n,iωk)(2.40)
使用DFT逆变换可以得到语音的最优估计 x ^ 0 \hat {\mathbf x}_0 x^0,{guj,估计得到的语音功率使用帕斯瓦尔定理可以求得:
E [ x ^ o p t ( n ) ] = ∑ k = 0 L − 1 1 L E [ ∣ X ^ o p t ( n , i ω k ) ∣ 2 ] = ∑ k = 0 L − 1 H o p t 2 ( ω k ) P y ( ω k ) = ∑ k = 0 L − 1 P x 2 ( ω k ) P y 2 ( ω k ) P x ( ω k ) + ∑ k = 0 L − 1 P x 2 ( ω k ) P y 2 ( ω k ) P v ( ω k ) (2.41) E[\hat x_{opt}(n)]=\sum \limits_{k=0}^{L-1}\frac{1}{L}E[|\hat X_{opt}(n,i\omega_k)|^2]=\sum \limits_{k=0}^{L-1}\mathbf H_{opt}^2(\omega_k)P_y(\omega_k) = \sum_{k=0}^{L-1}\frac{P_x^2(\omega_k)}{P_y^2(\omega_k)}P_x(\omega_k)+\sum_{k=0}^{L-1}\frac{P_x^2(\omega_k)}{P_y^2(\omega_k)}P_v(\omega_k) \tag {2.41} E[x^opt(n)]=k=0L1L1E[X^opt(n,iωk)2]=k=0L1Hopt2(ωk)Py(ωk)=k=0L1Py2(ωk)Px2(ωk)Px(ωk)+k=0L1Py2(ωk)Px2(ωk)Pv(ωk)(2.41)

滤波后的语音语音能量分为两个部分,第一项是经过滤波的纯净语音信号,第二项是经过滤波后端噪声信号能量。

可以得到衰减因子如下:
ξ n r [ H ( ω k ) ] = ∑ k = 0 L − 1 P v ( ω k ) ∑ k = 0 L − 1 p x 2 ( ω k ) p y 2 ( ω k ) P v ( ω k ) (2.42) \xi_{nr}[\mathbf H(\omega_k)]=\frac{\sum \limits_{k=0}^{L-1}P_v(\omega_k)}{\sum \limits_{k=0}^{L-1}\frac{p_x^2(\omega_k)}{p_y^2(\omega_k)}P_v(\omega_k)} \tag {2.42} ξnr[H(ωk)]=k=0L1py2(ωk)px2(ωk)Pv(ωk)k=0L1Pv(ωk)(2.42)
###频谱复原法
在频域,降噪可以看成是从噪声语音谱中估计语音谱的问题。
#####MMSE谱估计
假设噪声和语音是零均值随机过程,其短时傅里叶变换(STFT)系数 X ( n , i ω k ) X(n,i\omega_k) X(n,iωk) V ( n , i ω k ) V(n,i\omega_k) V(n,iωk)同样是零均值。如果将纯净语音 谱分成实部和虚部则有:
X ( n , i ω k ) = X R + i X I (2.43) X(n,i\omega_k)=X_R+iX_I \tag {2.43} X(n,iωk)=XR+iXI(2.43)
假设实部和虚部是独立的,则 X ( n , i ω k ) X(n,i\omega_k) X(n,iωk)估计值如下:
X ^ M M S E ( n , i ω k ) = E [ X ( n , i ω k ) ∣ Y ( n , i ω k ) ] = E [ X R ∣ Y ( n , i ω k ) ] + i E [ X I ∣ Y ( n , i ω k ) ] = X ^ R , M M S E + X ^ I , M M S E (2.44) \hat X_{MMSE}(n,i\omega_k)=E[X(n,i\omega_k)|Y(n,i\omega_k)]=E[X_R|Y(n,i\omega_k)]+iE[ X_I|Y(n,i\omega_k)]=\hat X_{R,MMSE}+\hat X_{I,MMSE}\tag {2.44} X^MMSE(n,iωk)=E[X(n,iωk)Y(n,iωk)]=E[XRY(n,iωk)]+iE[XIY(n,iωk)]=X^R,MMSE+X^I,MMSE(2.44)
假设语音实部和虚部独立并且符合高斯分布,使用条件和联合概率密度函数推导后可以得到:
X ^ M M S E ( n , i ω k ) = σ x 2 σ x 2 + σ y 2 Y ( n , i ω k ) (2.45) \hat X_{MMSE}(n,i\omega_k)=\frac{\sigma_x^2}{\sigma_x^2+\sigma_y^2}Y(n,i\omega_k) \tag{2.45} X^MMSE(n,iωk)=σx2+σy2σx2Y(n,iωk)(2.45)
####最大似然幅度谱估计
如果降噪相位失真带来的语音失真在任何子带 ω k \omega_k ωk上的SNR大于6dB将会影响语音的正确感知。有文献显示语音幅度比相位信息更为重要。从信号处理和语音感知角度来看,可以使用噪声相位做为语音相位,这样单通道噪声估计问题就变成了纯净语音的幅度估计问题。可以使用谱减法进行消噪。

Y ( n , i ω k ) = X ( n , i ω k ) + V ( n , i ω k ) = X k exp ⁡ ( i θ X k ) + V ( n , i ω k ) (2.46) Y(n,i\omega_k)=X(n,i\omega_k)+V(n,i\omega_k) = X_k \exp(i \theta_{X_k}) +V(n,i\omega_k) \tag{2.46} Y(n,iωk)=X(n,iωk)+V(n,iωk)=Xkexp(iθXk)+V(n,iωk)(2.46)
X k X_k Xk的ML可以写成:
X ^ k , M L = arg ⁡ max ⁡ X k l n { p [ Y ( n , i ω k ) ∣ X k ] } = arg ⁡ max ⁡ X k l n { ∫ − π π p [ Y ( n , i ω k ) ∣ X k , θ X k ] p ( θ X k ) d θ X k } (2.47) \hat X_{k,ML}=\arg \max \limits_{X_k} ln{\{p[Y(n,i\omega_k)|X_k]\}}=\arg \max \limits_{X_k} ln{\{\int_{-\pi}^{\pi}p[Y(n,i\omega_k)|X_k,\theta_{X_k}]p(\theta_{X_k})d\theta_{X_k}\}} \tag {2.47} X^k,ML=argXkmaxln{p[Y(n,iωk)Xk]}=argXkmaxln{ππp[Y(n,iωk)Xk,θXk]p(θXk)dθXk}(2.47)
如果噪声谱符合高斯分布,那么上式的条件概率密度可以写为:
p [ Y ( n , i ω k ) ∣ X k ] = 1 π σ v 2 exp ⁡ [ − Y k 2 + X k 2 σ v 2 ] I 0 [ 2 X k Y k σ v 2 ] (2.48) p[Y(n,i\omega_k)|X_k]=\frac{1}{\pi \sigma_v^2}\exp[-\frac{Y_k^2+X_k^2}{\sigma_v^2}]I_0[\frac{2X_kY_k}{\sigma_v^2}] \tag{2.48} p[Y(n,iωk)Xk]=πσv21exp[σv2Yk2+Xk2]I0[σv22XkYk](2.48)
####最大似然功率谱估计
ML估计可以由于功率谱估计范畴,假设语音和噪声都符合高斯分布,那么 Y ( n , i w k ) Y(n,iw_k) Y(n,iwk)也是高斯随机过程,其概率密度函数可以表述如下:
p [ Y ( n , i ω k ) ] = 1 π ( δ x 2 + δ v 2 ) exp ⁡ ( − Y k 2 δ x 2 + δ v 2 ) (2.49) p[Y(n,i\omega_k)]=\frac{1}{\pi(\delta_x^2+\delta_v^2)}\exp(-\frac{Y_k^2}{\delta_x^2+\delta_v^2}) \tag{2.49} p[Y(n,iωk)]=π(δx2+δv2)1exp(δx2+δv2Yk2)(2.49)
其对数似然函数如下:
ℓ = ln ⁡ { p [ Y ( n , i ω k ) ] ∣ δ x 2 , δ v 2 } = − ln ⁡ ( π ) − ln ⁡ ( δ x 2 + δ v 2 ) − Y k 2 δ x 2 + δ v 2 (2.50) \ell=\ln\{p[Y(n,i\omega_k)]|\delta_x^2,\delta_v^2\}=-\ln(\pi)-\ln(\delta_x^2+\delta_v^2)-\frac{Y_k^2}{\delta_x^2+\delta_v^2} \tag {2.50} =ln{p[Y(n,iωk)]δx2,δv2}=ln(π)ln(δx2+δv2)δx2+δv2Yk2(2.50)
时2.50对 δ x 2 \delta_x^2 δx2求导并令其等于零,则可以得到最大似然功率谱估计:
δ ^ X , M L 2 = Y k 2 − δ v 2 (2.51) \hat \delta_{X,ML}^2=Y_k^2-\delta_v^2 \tag{2.51} δ^X,ML2=Yk2δv2(2.51)
这样纯净语音的估计值是:
X ^ M L P ( n , i ω k ) = δ ^ X , M L 2 exp ⁡ ( i θ Y k ) = H M L P ( ω k ) Y ( n , i ω k ) (2.52) \hat X_{MLP}(n,i\omega_k)=\sqrt{\hat \delta_{X,ML}^2}\exp(i\theta_{Y_k})=H_{MLP}(\omega_k)Y(n,i\omega_k) \tag {2.52} X^MLP(n,iωk)=δ^X,ML2 exp(iθYk)=HMLP(ωk)Y(n,iωk)(2.52)

###基于语音模型的降噪
核心思想是利用语音生成机制来消除噪声加性噪声,语音模型包括谐波模型,LP模型,HMM模型,MFCC模型等,
####基于谐波模型的降噪
用正弦波极其谐波(音调就是正弦波的基频率)来模拟语音信号,
x ( n ) = ∑ i = 0 Q A i ( n ) c o s ( 2 π f i n + ϕ i ) (2.53) x(n)=\sum_{i=0}^Q A_i(n)cos(2\pi f_i n+\phi_i) \tag{2.53} x(n)=i=0QAi(n)cos(2πfin+ϕi)(2.53)
A i ( n ) , f i , ϕ i , Q A_i(n),f_i,\phi_i,Q Ai(n),fi,ϕiQ分别是随时间变换的幅度,频率,第i个声调的初始相位和总谐波数。对于语音信号频率关系实际上是基频以及倍频(在频域里类似的一个概念是频谱平坦度用于区别噪声和语音,共振峰用于语音识别),则可以得到:
x ( n ) = ∑ i = 1 Q A i ( n ) c o s ( 2 π i f 0 n + ϕ i ) (2.54) x(n)=\sum_{i=1}^QA_i(n)cos(2\pi if_0 n+\phi_i) \tag{2.54} x(n)=i=1QAi(n)cos(2πif0n+ϕi)(2.54)
基于以上模型,则麦克风采集到的信号,可以分成具有谐波的语音和噪声,由于语音只在谐波频率上有能量而噪声在谐波间也是有能量的,那么可以使用梳状滤波器滤除噪声。这一公式如下:
x ^ ( n ) = y ( n ) ∗ h C O M B ( n ) , h C O M B ( n ) = ∑ i = − K K h i δ ( n − N i ) , ∑ i = − K K h i = 1 (2.55) \hat x(n)=y(n)*h_{COMB}(n), h_{COMB}(n)=\sum_{i=-K}^Kh_i\delta(n-N_i),\sum_{i=-K}^K h_i = 1\tag {2.55} x^(n)=y(n)hCOMB(n),hCOMB(n)=i=KKhiδ(nNi),i=KKhi=1(2.55)

N i = { − ∑ j = 0 i − 1 T j i > 0 0 i = 0 − ∑ j = i − 1 T j i < 0 N_i=\left\{ \begin{aligned} -\sum_{j=0}^{i-1} T_j & & i>0 \\ 0 & & i=0 \\ -\sum_{j=i}^{-1}T_j & & i<0 \end{aligned} \right. Ni=j=0i1Tj0j=i1Tji>0i=0i<0
其中 T j T_j Tj是瞬时音调周期,这个算法要求能够准确估计滤波器系数 h i h_i hi(实际上是语音的基频成分)和随时频变换的音调 T j T_j Tj

####基于线性预测的降噪
短时平稳的语音帧可以使用全零点系统来模拟,这种表示语音的模型被称为线性预测模型(也被称为自回归模型)。

###总结
现在一般情况下不会只依赖一特性去降噪,而是上面多维的一个综合以提高程序的鲁棒性。这里有一个链接,可以看一下,对于瞬变(如发动机加速声音)可以使用模板的方式进行消除。
链接: 链接: https://pan.baidu.com/s/1EZcNXV30XEM9L7mdETvdhQ 提取码: neaw

你可能感兴趣的:(语音识别)