目录
- 简介
- 信号模型
- WPE 算法(Weighted prediction error)
- TVG 模型(time-varying Gaussian model)
- 目标函数
- 迭代求权重离线解
- 参考文献
- 附Python 代码
- 更新:
简介
背景噪声和空间内声反射产生的混响是声学信号处理和远场语音识别的两大障碍。WPE(Weighted Prediction Error)算法主要用于去除信号中的混响成分,此算法基于线性预测估计,是目前针对去混响(dereverberation)问题的主流算法之一。
信号模型
假设观测信号由D个麦克风采集,则该信号由STFT变换之后可表示为一个D维向量,其中时间index为t,频率index为f。
在远场情境之下,信号被卷性混响(观测信号为干净信号与混响的卷积)干扰。我们认为信号靠近声源的部分为空间冲击响应(RIR room impulse response),是有益的信号,而尾部的信号干扰ASR,需要被消除。我们假设信号主峰之后的50ms为,剩下的部分为。
在STFT域我们建立如下模型:
WPE 算法(Weighted prediction error)
WPE的主要思路是首先估计信号的混响尾部,然后再从观测信号中减去混响尾部,得到对弱混响信号的极大似然意义下的最优估计。
混响信号的时域可表达为:
经过STFT变换后记作:
为麦克风的编号,为滤波器的抽头(Filter Tap)数,预测步长。 代表滤波器权重,为观测信号。下图描述了WPE一步预测。
TVG 模型(time-varying Gaussian model)
WPE基于单通道干净语音服从均值为零,方差为的复高斯分布,且各通道独立的假设:
(1)
对于多通道语音分布则为:
(2)
目标函数
因为TVG模型是时频域独立的模型,对于一个frequency bin, 似然函数可写为:
(3)
其中为未知的方差,为权重,我们希望得到的信号为,为time index。
用极大似然法估计和,上式等价于最小化负log似然函数,问题可转化为求解如下优化问题:
(4)
迭代求权重离线解
默认流程为不断迭代优化方差和滤波器权重系数
- 估计权重g
假设方差固定,我们可以转化为最小方差问题(LS Problem)求解: - (5)
由信号的混响模型可知, - (6)
将公式(6)代入(5)中,得到对的估计: - (7)
- 估计方差
为了最小化 cost fucntion(4),这一步假设固定,估计的可以用(6)式计算,则估计的方差为:
这个问题的解表示为:
实际中,为了防止更新时被除数为0,我们一般规定一个最低阈值,取:
这样的迭代程序不断重复,直到满足收敛条件满足或达到最大的迭代次数。
通常初始化方差为:
这与初始化clean speech 等价。
- 算法流程:
以上就是离线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 代码
更新:
有很多人私信问代码该怎么用,下面贴一下我的使用。
我输入是的melspectrogram,参数具体问题具体分析,欢迎大家交流探讨。