语音去混响之MCLP算法

本文聚焦MISO版本的MCLP算法,它也叫WPE算法,用于语音信号去混响。介绍了MCLP模型、目标函数、离线解和自适应解,给出了相关公式。通过四麦克风圆阵采集语音数据进行仿真,结果显示该算法能有效去除混响。还提及SISO和MIMO版本算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

MCLP(Multichannel Linear Prediction)算法也被称为WPE(Weighted Prediction Error)算法,是实现语音信号去混响的一种方法。本文关注MISO(Multiple Input Single Output)版本的MCLP算法的原理,即输入为多个麦克风接收信号,输出为一路去除混响之后的语音信号。主要内容包括MCLP模型、待求解的目标函数、离线解,自适应解,并给出仿真波形。
  符号表示:对语音信号做短时傅里叶变换,nnn表示帧号,lll表示频点,MMM表示麦克风个数。y1,n,ly_{1,n,l}y1,n,l表示第一个麦克风接收的第nnn帧第lll个频点的信号,sn,ls_{n,l}sn,l表示纯净信号,将多个麦克风的接收信号写成向量形式为yn,l=(y1,n,l,y2,n,l,...,yM,n,l)T\textbf{y}_{n,l}=(y_{1,n,l},y_{2,n,l},...,y_{M,n,l})^Tyn,l=(y1,n,l,y2,n,l,...,yM,n,l)T,将n−Δn-\DeltanΔ帧到n−Δ−K+1n-\Delta-K+1nΔK+1帧的接收信号记为yˉn−Δ,l=(yn−Δ,lT,...,yn−Δ−K+1,lT)T\bar{\textbf{y}}_{n-\Delta,l}=(\textbf{y}_{n-\Delta,l}^T,..., \textbf{y}_{n-\Delta-K+1,l}^T)^TyˉnΔ,l=(ynΔ,lT,...,ynΔK+1,lT)T

原理

MCLP模型

MCLP模型表示当前接收信号由当前纯净信号与过去若干帧的接收信号线性组合而成。忽略噪声,用公式表示如下
 


  y1,n,l=glHyˉn−Δ,l+sn,ly_{1,n,l}=\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l}+s_{n,l}y1,n,l=glHyˉnΔ,l+sn,l
 

这里gl\textbf{g}_lgl为长度为MKMKMK的列向量,被称为线性系数(linear coefficients),去混响算法的目的就是估计出gl\textbf{g}_lgl,从当前接收信号y1,n,ly_{1,n,l}y1,n,l中减去混响部分“glHyˉn−Δ,l\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l}glHyˉnΔ,l”,从而恢复出sn,ls_{n,l}sn,l

目标函数

求解上述gl\textbf{g}_lgl的思路是最大化似然函数。假设已知n=1n=1n=1~NNN帧的接收信号,则最优化问题表示为
 


  max∑n=1Nlogp(y1,n,l)max \sum\limits_{n=1}^N log p(y_{1,n,l})maxn=1Nlogp(y1,n,l)
  <=> max∑n=1Nlogp(y1,n,l∣sn,l)p(sn,l)max \sum\limits_{n=1}^N log p(y_{1,n,l}|s_{n,l})p(s_{n,l})maxn=1Nlogp(y1,n,lsn,l)p(sn,l)
 

由MCLP模型,上式中p(y1,n,l∣sn,l)=δ(y1,n,l−glHyˉn−Δ,l)p(y_{1,n,l}|s_{n,l})=\delta(y_{1,n,l}-\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l})p(y1,n,lsn,l)=δ(y1,n,lglHyˉnΔ,l),并假设sn,ls_{n,l}sn,l服从时变复高斯分布,即sn,ls_{n,l}sn,l~NC(0,λn,l)N_C(0,\lambda_{n,l})NC(0,λn,l),将高斯分布的概率表达式代入上式,可知上述最优化问题等价于
 

  min⁡λn,l&gt;0,gl∑n=1N(∣sn,l∣2λn,l+logπλn,l)\min \limits_{\lambda_{n,l}&gt;0,\textbf{g}_l} \sum\limits_{n=1}^N (\frac{|s_{n,l}|^2}{\lambda_{n,l}}+log\pi\lambda_{n,l})λn,l>0,glminn=1N(λn,lsn,l2+logπλn,l)
 

离线解

上式目标函数包含两组参数:gl\textbf{g}_lglλn,l\lambda_{n,l}λn,l。可用EM算法求解,首先固定gl\textbf{g}_lgl不变求解λn,l\lambda_{n,l}λn,l,有
 


  λn,l=∣y1,n,l−glHyˉn−Δ,l∣2\lambda_{n,l}=|y_{1,n,l}-\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l}|^2λn,l=y1,n,lglHyˉnΔ,l2
 

再固定λn,l\lambda_{n,l}λn,l不变求解gl\textbf{g}_lgl,即
 

  min⁡gl∑n=1N∣y1,n,l−glHyˉn−Δ,l∣2λn,l\min \limits_{\textbf{g}_l} \sum\limits_{n=1}^N \frac{|y_{1,n,l}-\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l}|^2}{\lambda_{n,l}}glminn=1Nλn,ly1,n,lglHyˉnΔ,l2
 

注意到上式目标函数为gl\textbf{g}_lgl的二次函数,对gl\textbf{g}_lgl求导置零可得解析解:
  

  gl=(∑n=1Nyˉn−Δ,lyˉn−Δ,lHλn,l)−1(yˉn−Δ,ly1,n,l∗λn,l)\textbf{g}_l=(\frac{\sum\limits_{n=1}^N \bar{\textbf{y}}_{n-\Delta,l}\bar{\textbf{y}}_{n-\Delta,l}^H}{\lambda_{n,l}})^{-1}(\frac{\bar{\textbf{y}}_{n-\Delta,l} y_{1,n,l}^*}{\lambda_{n,l}})gl=(λn,ln=1NyˉnΔ,lyˉnΔ,lH)1(λn,lyˉnΔ,ly1,n,l)
 

不断重复上式计算gl\textbf{g}_lglλn,l\lambda_{n,l}λn,l直至收敛即可。该gl\textbf{g}_lgl的解析解通常被称为离线解,因为需要已知n=1n=1n=1~NNN帧所有接收信号来计算去混响之后的信号,属于“batch processing”。下一部分讨论gl\textbf{g}_lgl的自适应解。

自适应解

自适应解也称为在线解,使算法可用于实时处理信号。将求解gl\textbf{g}_lgl的目标函数加入指数因子,
 


  min⁡gl∑n=1NαN−n∣y1,n,l−glHyˉn−Δ,l∣2λn,l\min \limits_{\textbf{g}_l} \sum\limits_{n=1}^N \alpha^{N-n}\frac{|y_{1,n,l}-\textbf{g}_l^H \bar{\textbf{y}}_{n-\Delta,l}|^2}{\lambda_{n,l}}glminn=1NαNnλn,ly1,n,lglHyˉnΔ,l2
 

采用RLS(Recursive Least Square)算法求解上式,可得
 

  kl(n)=Σl(n−1)yˉn−Δ,lαλn,l+yˉn−Δ,lHΣl(n−1)yˉn−Δ,l\textbf{k}_l(n)=\frac{\Sigma_l(n-1) \bar{\textbf{y}}_{n-\Delta,l} }{\alpha \lambda_{n,l}+\bar{\textbf{y}}_{n-\Delta,l}^H \Sigma_l(n-1)\bar{\textbf{y}}_{n-\Delta,l}}kl(n)=αλn,l+yˉnΔ,lHΣl(n1)yˉnΔ,lΣl(n1)yˉnΔ,l
  Σl(n)=Σl(n−1)−kl(n)yˉn−Δ,lHΣl(n−1)α\Sigma_l(n)=\frac{\Sigma_l(n-1)-\textbf{k}_l(n)\bar{\textbf{y}}_{n-\Delta,l}^H \Sigma_l(n-1)}{\alpha}Σl(n)=αΣl(n1)kl(n)yˉnΔ,lHΣl(n1)
  gl(n)=gl(n−1)+kl(n)(y1,n,l−glH(n−1)yˉn−Δ,l)\textbf{g}_l(n)=\textbf{g}_l(n-1)+\textbf{k}_l(n)(y_{1,n,l}-\textbf{g}_l^H(n-1) \bar{\textbf{y}}_{n-\Delta,l})gl(n)=gl(n1)+kl(n)(y1,n,lglH(n1)yˉnΔ,l)
 

其中kl\textbf{k}_lklMKMKMK长度的列向量,Σl\Sigma_lΣlMK×MKMK\times MKMK×MK的复矩阵。

仿真图形

使用麦克风阵列为彼此间距6cm的四麦克风圆阵,在室内带一定混响的安静环境采集语音数据。采用上文所述自适应MCLP算法处理语音数据,输出一路数据,将其中一路输入信号与算法输出信号对比如下。从波形上可看出处理后的语音拖尾变小,可见MCLP能有效去除混响。


在这里插入图片描述
图1 MCLP算法处理语音
 

Reference

本文主要参照[1]和[2],其中离线解部分参照[1],自适应解部分参照[2]。
常见的MCLP算法还包括SISO(Single Input Single Output)版本和MIMO(Multiple Input Multiple Output)版本。其中SISO为本文MISO版本的算法的一个特例,上述推导过程只需修改使M=1即可。MIMO版本通常要求输出的多路去混响信号保持TDOA信息不变,以便后续接波束算法。MIMO版本的MCLP算法推导与本文有所不同,离线解可参照[3]、自适应解可参照[4]。

[1] GB/T 7714 Jukic A , Van Waterschoot T , Gerkmann T , et al. Multi-Channel Linear Prediction-Based Speech Dereverberation With Sparse Priors[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2015, 23(9):1509-1520.
[2] Yoshioka T , Tachibana H , Nakatani T , et al. Adaptive dereverberation of speech signals with speaker-position change detection[C]// IEEE International Conference on Acoustics. IEEE, 2009.
[3] Yoshioka T , Nakatani T . Generalization of Multi-Channel Linear Prediction Methods for Blind MIMO Impulse Response Shortening[J]. IEEE Transactions on Audio Speech & Language Processing, 2012, 20(10):2707-2720.
[4] Nakatani T , Yoshioka T . Dereverberation for Reverberation-Robust Microphone Arrays[C]// Signal Processing Conference. IEEE, 2014.

评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值