语音去混响算法之WPE( Weighted Prediction Error for speech dereverberation)

简介

背景噪声和空间内声反射产生的混响是声学信号处理和远场语音识别的两大障碍。WPE(Weighted Prediction Error)算法主要用于去除信号中的混响成分,此算法基于线性预测估计,是目前针对去混响(dereverberation)问题的主流算法之一。

信号模型

假设观测信号由D个麦克风采集,则该信号由STFT变换之后可表示为一个D维向量 y t , f y_{t,f} yt,f,其中时间index为t,频率index为f。
在远场情境之下,信号被卷性混响(观测信号为干净信号与混响的卷积)干扰。我们认为信号靠近声源的部分为空间冲击响应(RIR room impulse response),是有益的信号,而尾部的信号干扰ASR,需要被消除。我们假设信号主峰之后的50ms为 h ( e a r l y ) h^{(early)} h(early),剩下的部分为 h ( t a i l ) h^{(tail)} h(tail)
在STFT域我们建立如下模型:
Y t , f = X t , f ( e a r l y ) + X t , f ( t a i l ) Y_{t,f} = X_{t,f}^{(early) }+ X_{t,f}^{(tail)} Yt,f=Xt,f(early)+Xt,f(tail)
图片来源:https://www.sonible.com/de/blog/nachhall-audioproduktion/

WPE 算法(Weighted prediction error)

WPE的主要思路是首先估计信号的混响尾部,然后再从观测信号中减去混响尾部,得到对弱混响信号的极大似然意义下的最优估计。

混响信号的时域可表达为:
x t , f , d ( e a r l y ) = y t , f , d − ∑ τ = Δ Δ + K − 1 ∑ d ′ g τ , f , d , d ′ ∗ y t − τ , f , d ′ x_{t,f,d}^{(early)} = y_{t,f,d} - \sum_{\tau=\Delta}^{\Delta+K-1} {\sum_{d'}{g_{\tau,f,d,d'}^* y_{t-\tau,f,d'} } } xt,f,d(early)=yt,f,dτ=ΔΔ+K1dgτ,f,d,dytτ,f,d
经过STFT变换后记作:
X t , f ( e a r l y ) = Y t , f − G f H Y t − τ , f X_{t,f}^{(early)} = Y_{t,f} - G_f^H Y_{t-\tau,f} Xt,f(early)=Yt,fGfHYtτ,f

d d d为麦克风的编号, K K K为滤波器的抽头(Filter Tap)数,预测步长 Δ > 0 \Delta>0 Δ>0 G f G_f Gf 代表滤波器权重, Y t , f Y_{t,f} Yt,f为观测信号。下图描述了WPE一步预测。
在这里插入图片描述

TVG 模型(time-varying Gaussian model)

WPE基于单通道干净语音服从均值为零,方差为 λ t , f \lambda_{t,f} λt,f的复高斯分布,且各通道独立的假设:
(1)
对于多通道语音分布则为:
在这里插入图片描述 (2)

目标函数

因为TVG模型是时频域独立的模型,对于一个frequency bin, 似然函数可写为:
在这里插入图片描述 (3)
其中 λ \lambda λ为未知的方差, g g g为权重,我们希望得到的信号为 d = x ( e a r l y ) d = x^(early) d=x(early) n n n为time index。
用极大似然法估计 λ \lambda λ g g g,上式等价于最小化负log似然函数,问题可转化为求解如下优化问题:
在这里插入图片描述 (4)

迭代求权重离线解

默认流程为不断迭代优化方差 λ t , f \lambda_{t,f} λt,f和滤波器权重系数 G l G_l Gl
在这里插入图片描述

  1. 估计权重g
    假设方差 λ \lambda λ固定,我们可以转化为最小方差问题(LS Problem)求解:
    在这里插入图片描述(5)
    由信号的混响模型可知,
    在这里插入图片描述(6)
    将公式(6)代入(5)中,得到对 g g g的估计:
    在这里插入图片描述(7)

  2. 估计方差 λ \lambda λ

为了最小化 cost fucntion(4),这一步假设 g g g固定,估计的 d i + 1 d^{i+1} di+1可以用(6)式计算,则估计的方差为:
在这里插入图片描述
这个问题的解表示为:
在这里插入图片描述
实际中,为了防止更新时被除数为0,我们一般规定一个最低阈值 ϵ m i n \epsilon_{min} ϵmin,取:
在这里插入图片描述
这样的迭代程序不断重复,直到满足收敛条件满足或达到最大的迭代次数。
通常初始化方差为: λ 0 ^ = ∣ x 1 ∣ 2 \hat{\lambda^{0}} = |x_1|^2 λ0^=x12
这与初始化clean speech d ( 0 ) = x 1 d^{(0)} =x_1 d(0)=x1等价。

  1. 算法流程:
    在这里插入图片描述

以上就是离线WPE算法,目前也有各种对WPE算法的改进,例如:预训练的log-spectral先验 [4],对clean speech的时变Laplacain模型[5],还有一些基于自回归模型的方法[6]。

参考文献

[1] Yoshioka, Takuya, and Tomohiro Nakatani. “Generalization of multi-channel linear prediction methods for blind MIMO impulse response shortening.” IEEE Transactions on Audio, Speech, and Language Processing 20.10 (2012): 2707-2720.

[2] L. Drude, J. Heymann, C. Boeddeker和R. Haeb-Umbach, “NARA-WPE: A Python package for weighted prediction error dereverberation in Numpy and Tensorflow for online and offline processing”, Speech Communication; 13th ITG-Symposium, 10. 2018, pp1–5.

[3] A. Jukić, T. van Waterschoot, T. Gerkmann and S. Doclo, “Multi-Channel Linear Prediction-Based Speech Dereverberation With Sparse Priors,” in IEEE/ACM Transactions on Audio, Speech, and Language Processing, vol. 23, no. 9, pp. 1509-1520, Sept. 2015. doi: 10.1109/TASLP.2015.2438549

[4] Y. Iwata and T. Nakatani, “Introduction of speech log-spectral priors into dereverberation based on Itakura-Saito distance minimization,” in Proc. IEEE Int. Conf. Acoust., Speech, Signal Process. (ICASSP), Kyoto, Japan, May 2012, pp. 245–248

[5] A. Jukić and S. Doclo, “Speech dereverberation using weighted prediction error with Laplacian model of the desired signal,” in Proc. IEEE Int. Conf. Acoust., Speech, Signal Process. (ICASSP), Florence, Italy, May 2014, pp. 5172–5176.

[6] M. Togami and Y. Kawaguchi, “Noise robust speech dereverberation with Kalman smoother,” in Proc. IEEE Int. Conf. Acoust., Speech, Signal Process. (ICASSP), Vancouver, BC, Canada, May 2013, pp. 7447–7451

附Python 代码

https://download.csdn.net/download/veritasalice/12657798

更新:

有很多人私信问代码该怎么用,下面贴一下我的使用。
我输入是的melspectrogram,参数具体问题具体分析,欢迎大家交流探讨。
在这里插入图片描述

  • 19
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr. 卷心菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值