多通道混响抑制:GWPE(Generalized Weighted Prediction Error)

本文介绍了一种多通道混响抑制技术——GWPE(Generalized Weighted Prediction Error)。首先,文章详细解释了模型构建,涉及多个说话人和麦克风的信号处理模型。接着,定义了GWPE损失函数,通过最小化麦克风阵列接收信号的相关性来去混响。最后,探讨了优化算法,包括如何估计预测矩阵G。GWPE利用Hadamard-Fischer互相关作为损失函数,目标是找到最佳的G来减小混响响应的长度。

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

1.模型构建

考虑一个M个说话人,N个麦克风的场景。
s m [ k ] ( 1 ≤ m ≤ M ) s^{m}[k](1 \leq m \leq M) sm[k](1mM):第m个说话人k时刻的信号。
y n [ k ] y^{n}[k] yn[k] v n [ k ] ( 1 ≤ n ≤ N ) v^{n}[k](1 \leq n \leq N) vn[k](1nN):第n个麦克风k时刻的接收信号和噪声。
则有:
y [ k ] = ∑ τ = 0 J − 1 H T [ τ ] s [ k − τ ] + v [ k ]           ( 1 ) \boldsymbol{y}[k]=\sum_{\tau=0}^{J-1} \boldsymbol{H}^{T}[\tau] \boldsymbol{s}[k-\tau]+\boldsymbol{v}[k]\ \ \ \ \ \ \ \ \ \ (1) y[k]=τ=0J1HT[τ]s[kτ]+v[k]          1
其中
y [ k ] = [ y 1 [ k ] , … , y N [ k ] ] T \boldsymbol{y}[k]=\left[y^{1}[k], \ldots, y^{N}[k]\right]^{T} y[k]=[y1[k],,yN[k]]T, s [ k ] = [ s 1 [ k ] , … , s M [ k ] ] T \boldsymbol{s}[k]=\left[s^{1}[k], \ldots, s^{M}[k]\right]^{T} s[k]=[s1[k],,sM[k]]T, v [ k ] = [ v 1 [ k ] , … , v N [ k ] ] T \boldsymbol{v}[k]=\left[v^{1}[k], \ldots, v^{N}[k]\right]^{T} v[k]=[v1[k],,vN[k]]T

H [ τ ] \boldsymbol{H}[\tau] H[τ]为房间的脉冲响应矩阵,J表示响应的阶数。
H [ τ ] = [ h 1 , 1 [ τ ] ⋯ h N , 1 [ τ ] ⋮ ⋱ ⋮ h 1 , M [ τ ] ⋯ h N , M [ τ ] ] M × N \boldsymbol{H}[\tau]=\left[\begin{array}{ccc} h^{1,1}[\tau] & \cdots & h^{N, 1}[\tau] \\ \vdots & \ddots & \vdots \\ h^{1, M}[\tau] & \cdots & h^{N, M}[\tau] \end{array}\right]_{M\times N} H[τ]= h1,1[τ]h1,M[τ]hN,1[τ]hN,M[τ] M×N
{ h n , m [ τ ] } 0 ≤ τ ≤ J − 1 \left\{h^{n, m}[\tau]\right\} 0 \leq \tau \leq J-1 {hn,m[τ]}0τJ1为说话人m与麦克风n之间的冲击响应。
式(1)其实就是卷积的矩阵形式。
为了减少滤波器的阶数,原论文中还对 y [ k ] \boldsymbol{y}[k] y[k]进行了子带分解,本文不做考虑。

我们希望能够减少混响响应的长度来对混响效果进行削弱。
y [ k ] \boldsymbol{y}[k] y[k]写为:
y [ k ] = ∑ τ = 0 Δ H T [ τ ] s [ k − τ ] + ∑ τ = Δ J − 1 H T [ τ ] s [ k − τ ] + v [ k ] \boldsymbol{y}[k]=\sum_{\tau=0}^{\Delta} \boldsymbol{H}^{T}[\tau] \boldsymbol{s}[k-\tau]+\sum_{\tau=\Delta}^{J-1} \boldsymbol{H}^{T}[\tau] \boldsymbol{s}[k-\tau]+\boldsymbol{v}[k] y[k]=τ=0ΔHT[τ]s[kτ]+τ=ΔJ1HT[τ]s[kτ]+v[k]
希望削减混响响应的长度到 Δ \Delta Δ,即只保留第一项。

首先采用多通道线性预测技术用 Δ − ( J − 1 ) \Delta -(J-1) Δ(J1)的麦克风接收信号去估计 Δ − ( J − 1 ) \Delta -(J-1) Δ(J1)部分的混响:
y ~ ( k ) = ∑ τ = Δ Δ + K − 1 G T ( τ ) y ( k − τ ) \tilde{\boldsymbol{y}}(k)=\sum_{\tau=\Delta}^{\Delta+K-1} G^{T}(\tau) \boldsymbol{y}(k-\tau) y~(k)=τ=ΔΔ+K1GT(τ)y(kτ)
其中 { G ( τ ) } Δ ≤ τ ≤ Δ + K − 1 \left\{G(\tau)\right\}_{\Delta \leq \tau \leq \Delta+K-1} {G(τ)}ΔτΔ+K1 N × N N\times N N×N的预测矩阵,由于实际中混响的效果随着时间逐渐减弱,所以只需要估计长度为K的混响信号。

然后与 y [ k ] \boldsymbol{y}[k] y[k]作差:
x ( k ) = y ( k ) − y ~ ( k )                     ( 2 ) \boldsymbol{x}(k)=\boldsymbol{y}(k)-\tilde{\boldsymbol{y}}(k)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (2) x(k)=y(k)y~(k)                   (2)
如果最小化(2),由于 y ~ ( k ) \tilde{y}(k) y~(k)只与 y ( k ) {y}(k) y(k) Δ ≤ τ ≤ Δ + K − 1 \Delta \leq \tau \leq \Delta+K-1 ΔτΔ+K1的部分相关,所以会对消掉。
理想的预测误差 x ( k ) \boldsymbol{x}(k) x(k)等于
x ( k ) = ∑ τ = 0 Δ − 1 H T ( τ ) s ( k − τ ) +  noise             ( 3 ) \boldsymbol{x}_{}(k)=\sum_{\tau=0}^{\Delta-1} \boldsymbol{H}^{T}(\tau) \boldsymbol{s}(k-\tau)+\text { noise }\ \ \ \ \ \ \ \ \ \ \ (3) x(k)=τ=0Δ1HT(τ)s(kτ)+ noise            (3)

2.GWPE损失函数定义

假设我们收集T点的预测误差数据 ( x ( k ) ) k ∈ T \left(\boldsymbol{x}(k)\right)_{k \in {T}} (x(k))kT,干净的语音信号在延迟时间大于几十毫秒后,其自相关系数基本为0,但是混响信号在延迟时间较长时自相关系数仍然很大,所以GWPE损失函数就是通过最小化T点麦克风阵列接收信号的相关性来达到去混响的目的。

  • GWPE使用Hadamard-Fischer mutual correlation作为损失函数,其定义如下:
    C H F ( U 1 , … , U N ) = 1 N ∑ n log ⁡ ( det ⁡ E ( U n U n H ) ) − log ⁡ ( det ⁡ E ( U U H ) ) C_{H F}\left(\boldsymbol{U}_{1}, \ldots, \boldsymbol{U}_{N}\right)=\frac{1}{N} \sum_{n} \log \left(\operatorname{det} E\left(\boldsymbol{U}_{n} \boldsymbol{U}_{n}^{H}\right)\right)-\log \left(\operatorname{det} E\left(\boldsymbol{U} \boldsymbol{U}^{H}\right)\right) CHF(U1,,UN)=N1nlog(detE(UnUnH))log(detE(UUH))
    其中 U 1 , … , U N \boldsymbol{U}_{1}, \ldots, \boldsymbol{U}_{N} U1,,UN表示复随机变量,当 U 1 , … , U N \boldsymbol{U}_{1}, \ldots, \boldsymbol{U}_{N} U1,,UN互不相关时:
    C H F ( U 1 , … , U N ) = 0 C_{\mathrm{HF}}\left(\boldsymbol{U}_{1}, \ldots, \boldsymbol{U}_{N}\right) = 0 CHF(U1,,UN)=0

所以我们就可以通过上述损失函数来最小化 ( x ( k ) ) k ∈ T \left(\boldsymbol{x}(k)\right)_{k \in {T}} (x(k))kT的相关性。
x T = [ x T ( T ) , … , x T ( 1 ) ] T \boldsymbol{x}_{T}=\left[\boldsymbol{x}^{T}(T), \ldots, \boldsymbol{x}^{T}(1)\right]^{T} xT=[xT(T),,xT(1)]T损失函数可以写为:
F ( G ) = C H F ( x ( 1 ) , … , x ( T ) ) = 1 ∣ T ∣ ∑ t ∈ T log ⁡ ( det ⁡ E ( x T ( t ) x T T ( t ) ) ) − log ⁡ ( det ⁡ E ( x T x T T ) ) ( 4 ) \begin{aligned} F\left(\mathcal{G}\right)=& C_{\mathrm{HF}}\left(\boldsymbol{x}(1), \ldots, \boldsymbol{x}(T)\right) \\ =& \frac{1}{|T|} \sum_{t \in T} \log \left(\operatorname{det} E\left(\boldsymbol{x}_{T}(t) \boldsymbol{x}_{T}^{T}(t)\right)\right) -\log \left(\operatorname{det} E\left(\boldsymbol{x}_{T} \boldsymbol{x}_{T}^{T}\right)\right) \end{aligned}(4) F(G)==CHF(x(1),,x(T))T1tTlog(detE(xT(t)xTT(t)))log(detE(xTxTT))4
其中 G = { G ( τ ) } Δ ≤ τ ≤ Δ + K − 1 \mathcal{G}=\left\{\boldsymbol{G}(\tau)\right\}_{\Delta \leq \tau \leq \Delta+K-1} G={G(τ)}ΔτΔ+K1.

损失函数第二项实际上是常数,证明如下:
我们将式(2)写为矩阵形式:
x T = G ⋅ y T x_{T}=G \cdot y_{T} xT=GyT
其中 y T = [ y T ( T ) , … , y T ( 1 ) ] T \boldsymbol{y}_{T}=\left[\boldsymbol{y}^{T}(T), \ldots, \boldsymbol{y}^{T}(1)\right]^{T} yT=[yT(T),,yT(1)]T,
G = { I , O , … , O , − G ( Δ ) , … , − G ( Δ + K l − 1 ) } G=\left\{\boldsymbol{I}, \boldsymbol{O}, \ldots, \boldsymbol{O},-\boldsymbol{G}(\Delta), \ldots,-\boldsymbol{G}\left(\Delta+K_{l}-1\right)\right\} G={I,O,,O,G(Δ),,G(Δ+Kl1)}因此有: det ⁡ E ( x T x T T ) = ∣ det ⁡ G ∣ 2 det ⁡ E ( y T y T T ) = det ⁡ E ( y T y T T ) =  constant.  \begin{aligned} \operatorname{det} E\left(\boldsymbol{x}_{T} \boldsymbol{x}_{T}^{T}\right) &=\left|\operatorname{det} \boldsymbol{G}\right|^{2} \operatorname{det} E\left(\boldsymbol{y}_{T} \boldsymbol{y}_{T}^{T}\right) \\ &=\operatorname{det} E\left(\boldsymbol{y}_{T} \boldsymbol{y}_{T}^{T}\right) \\ &=\text { constant. } \end{aligned} detE(xTxTT)=detG2detE(yTyTT)=detE(yTyTT)= constant. 
(上标T表示转置/共轭转置)所以式(4)的第二项可以去掉。
F ( G ) = 1 ∣ T ∣ ∑ t ∈ T log ⁡ ( det ⁡ E ( x T ( t ) x T T ( t ) ) ) ( 5 ) \begin{aligned} F\left(\mathcal{G}\right)=& \frac{1}{|T|} \sum_{t \in T} \log \left(\operatorname{det} E\left(\boldsymbol{x}_{T}(t) \boldsymbol{x}_{T}^{T}(t)\right)\right) \end{aligned}(5) F(G)=T1tTlog(detE(xT(t)xTT(t)))5
上式就是GWPE的损失函数,现在混响抑制的目标可以写为:
G = arg ⁡ min ⁡ G F ( G ) \mathcal{G}_{}=\arg \min _{\mathcal{G}_{}} F\left(\mathcal{G}_{}\right) G=argGminF(G)

3.优化算法

最小化(5)来获得 G \mathcal{G} G的估计,但是由于(5)没有解析解,所以论文中给出辅助函数的方法,构造辅助函数:
F ~ ( G , L ) = 1 ∣ T ∣ ∑ t ∈ T ( E ( x T ( t ) Λ ( t ) − 1 x T ( t ) ) − N + log ⁡ ( det ⁡ Λ ( t ) ) ) \begin{array}{r} \tilde{F}\left(\mathcal{G}, \mathcal{L}\right)=\frac{1}{|T|} \sum_{t \in T}\left(E\left(x^{T}(t) \boldsymbol{\Lambda}(t)^{-1} \boldsymbol{x}_{T}(t)\right)\right. \left.-N+\log \left(\operatorname{det} \boldsymbol{\Lambda(t)}\right)\right) \end{array} F~(G,L)=T1tT(E(xT(t)Λ(t)1xT(t))N+log(detΛ(t)))
其中 Λ = E ( x T x T T ) \mathbf{\Lambda}=E\left(\boldsymbol{x}_{T} \boldsymbol{x}_{T}^{T}\right) Λ=E(xTxTT)
为空间相关矩阵, Λ \mathbf{\Lambda} Λ通常通过时间平均的方法得到
Λ = ∑ k = t − δ t + δ 1 2 δ + 1 x T x T T {\boldsymbol{\Lambda}}=\sum_{k=t-\delta}^{t+\delta}\frac{1}{2 \delta+1} \mathbf{x}_{T} \mathbf{x}_{T}^{T} Λ=k=tδt+δ2δ+11xTxTT
然后估计 G \mathcal{G} G
R ^ = ∑ t ∈ T ψ ( t − Δ ) ‾ Λ ^ ( t ) − 1 ψ ∗ ( t − Δ ) ‾ r ^ = ∑ t ∈ T ψ ( t − Δ ) ‾ Λ ^ ( t ) − 1 y ( t ) \begin{aligned} \hat{\boldsymbol{R}} &=\sum_{t \in \mathcal{T}} \overline{\boldsymbol{\psi}(t-\Delta)} \hat{\boldsymbol{\Lambda}}(t)^{-1} \overline{\boldsymbol{\psi}^{*}(t-\Delta)} \\ \hat{\boldsymbol{r}} &=\sum_{t \in \mathcal{T}} \overline{\boldsymbol{\psi}(t-\Delta)} \hat{\boldsymbol{\Lambda}}(t)^{-1} \boldsymbol{y}(t) \end{aligned} R^r^=tTψ(tΔ)Λ^(t)1ψ(tΔ)=tTψ(tΔ)Λ^(t)1y(t)
g ^ = R ^ − 1 r ^ \hat{\boldsymbol{g}}=\hat{\boldsymbol{R}}^{-1} \hat{\boldsymbol{r}} g^=R^1r^
g g g为预测矩阵 G = { G ( τ ) } Δ ≤ τ ≤ Δ + K − 1 \mathcal{G}=\left\{\boldsymbol{G}(\tau)\right\}_{\Delta \leq \tau \leq \Delta+K-1} G={G(τ)}ΔτΔ+K1的列向量拼接起来的向量:
g = [ g 1 ( Δ ) ⋮ g N ( Δ ) ⋮ g 1 ( Δ + K − 1 ) ⋮ g N ( Δ + K − 1 ) ] \boldsymbol{g}=\left[\begin{array}{c} \boldsymbol{g}^{1}(\Delta) \\ \vdots \\ \boldsymbol{g}^{N}(\Delta) \\ \hline \vdots \\ \hline \boldsymbol{g}^{1}\left(\Delta+K-1\right) \\ \vdots \\ g^{N}\left(\Delta+K-1\right) \end{array}\right] g= g1(Δ)gN(Δ)g1(Δ+K1)gN(Δ+K1)
其中 g n ( τ ) \boldsymbol{g}^{n}(\tau) gn(τ)代表 G ( τ ) \boldsymbol{G}(\tau) G(τ)的第n列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值