- 波束部分
1. MaxSNR Beamforming
根据MaxSNR Beamforming的公式有:
w
=
a
r
g
_
m
a
x
w
h
R
s
w
w
h
R
n
w
w=arg\_max \frac{w^hR_sw}{w^hR_nw}
w=arg_maxwhRnwwhRsw,其中
w
w
w即为滤波器系数。如上的无约束最大值问题对于
w
s
n
r
=
k
∗
w
s
n
r
w_{snr}=k*w_{snr}
wsnr=k∗wsnr仍然是成立的,也就是有一个尺度上的无约束。可设定
w
h
R
n
w
w^hR_nw
whRnw=1;则转化为:
a
r
g
_
m
a
x
w
h
R
s
w
1
arg\_max\frac{w^hR_sw}{1}
arg_max1whRsw且
w
h
R
n
w
=
1
w^hR_nw=1
whRnw=1。如上问题为一个有约束的优化问题,可通过拉格朗日乘子约束转化为无约束问题:
f
(
w
)
=
w
h
R
s
w
+
λ
(
w
h
R
n
w
−
1
)
f(w)=w^hR_sw+\lambda(w^hR_nw-1)
f(w)=whRsw+λ(whRnw−1)
通令求
f
(
w
)
f(w)
f(w)的微分=0即可转化为GEVD问题:
R
s
w
=
λ
R
n
w
R_sw=\lambda R_nw
Rsw=λRnw。
设
λ
1
\lambda_1
λ1,
λ
2
\lambda_2
λ2,
w
1
w_1
w1,
w
2
w_2
w2为(
R
s
R_s
Rs,
R
n
R_n
Rn)的广义特征值和对应的特征向量,
λ
1
\lambda_1
λ1>
λ
2
\lambda_2
λ2。其中
w
1
w_1
w1即为上述问题的解。而
w
2
w_2
w2为
m
i
n
f
(
w
)
min{f(w)}
minf(w)问题的解。
如果
R
s
R_s
Rs是秩1矩阵,即
R
s
=
a
a
H
R_s=aa^H
Rs=aaH。则
a
a
H
w
1
=
γ
a
=
λ
R
n
w
1
aa^Hw_1=\gamma a=\lambda R_nw_1
aaHw1=γa=λRnw1,进而有
a
=
β
R
n
w
1
a=\beta R_nw_1
a=βRnw1。a即为源s的RTF或者理解为导向向量(此处省去了常数因子)。
对于R_s,R_n均为正定的Hermitian矩阵来说,具有如下性质: w 1 R s w 2 = w 1 R n w 2 = 0 w_1R_sw_2=w_1R_nw_2=0 w1Rsw2=w1Rnw2=0。注意这也是aux-iva中常用的正交迭代约束。
根据如上性质,推导出
a
H
w
2
=
0
a^Hw_2=0
aHw2=0,
a
a
a理解为导向向量或者delay_sum的滤波器系数,其正交的
w
2
w_2
w2理解为
a
a
a构造出来的BM系数。
2. gev beamforming和MVDR的关系
w
m
v
d
r
=
R
n
−
1
a
a
H
R
n
−
1
a
=
γ
w
m
a
x
s
n
r
β
w
H
R
n
w
=
α
w
m
a
x
s
n
r
w_{mvdr}=\frac{R_n^{-1}a}{a^HR_n^{-1}a}=\frac{\gamma w_{maxsnr}}{\beta w^HR_nw}=\alpha w_{maxsnr}
wmvdr=aHRn−1aRn−1a=βwHRnwγwmaxsnr=αwmaxsnrMVDR只是gev 波束中通过约束
a
=
a
/
(
a
1
)
a=a/(a_1)
a=a/(a1)限制
a
a
a的大小,解决scaling问题一种方式,二者的滤波器系数方向都是一样的。
3. scale问题
一般在说scale问题的时候大家会想到的是ica类的盲源方法,但gev波束同样也存在。在1.中已经对其产生的原因进行了解释。论文中一般会有这样的一种方式来解决:
g
b
a
n
=
s
q
r
t
(
w
H
R
n
H
R
n
w
/
N
)
w
H
R
n
w
g_{ban}=\frac{sqrt(w^HR_n^HR_nw/N)}{w^HR_nw}
gban=wHRnwsqrt(wHRnHRnw/N),看上去和MVDR很像。笔者猜测就是
w
m
v
d
r
=
g
b
a
n
∗
w
g
e
v
w_{mvdr}=g_{ban}*w_{gev}
wmvdr=gban∗wgev(细节推导这里就不体现了),但该公式的物理意义是什么?
g
b
a
n
=
(
w
H
R
n
H
R
n
w
/
N
)
w
H
R
n
w
=
λ
(
w
H
R
s
H
R
s
w
)
/
N
λ
w
H
R
s
w
=
(
w
H
R
s
H
R
s
w
)
/
N
w
H
R
s
w
g_{ban}=\frac{\sqrt{(w^HR_n^HR_nw/N)}}{w^HR_nw}=\frac{\lambda \sqrt{(w^HR_s^HR_sw)/N}}{\lambda w^HR_sw}=\frac{\sqrt{(w^HR_s^HR_sw)/N}}{w^HR_sw}
gban=wHRnw(wHRnHRnw/N)=λwHRswλ(wHRsHRsw)/N=wHRsw(wHRsHRsw)/N
(
g
b
a
n
∗
(
w
H
(
R
n
+
R
s
)
w
)
)
2
=
w
H
(
R
s
H
R
s
+
R
n
H
R
n
)
w
/
N
(g_{ban}*(w^H(R_n+R_s)w))^2=w^H(R_s^HR_s+R_n^HR_n)w/N
(gban∗(wH(Rn+Rs)w))2=wH(RsHRs+RnHRn)w/N
因为声源
s
s
s和噪声
n
n
n并不相关,则
w
H
(
R
s
H
R
s
+
R
n
H
R
n
)
w
/
N
=
w
H
(
R
s
+
R
n
)
H
(
R
s
+
R
n
)
w
=
w
H
R
x
H
R
x
w
w^H(R_s^HR_s+R_n^HR_n)w/N=w^H(R_s+R_n)^H(R_s+R_n)w=w^HR_x^HR_xw
wH(RsHRs+RnHRn)w/N=wH(Rs+Rn)H(Rs+Rn)w=wHRxHRxw
如上有:
g
b
a
n
=
(
w
H
R
x
H
R
x
w
/
N
)
w
H
R
x
w
g_{ban}=\frac{\sqrt{(w^HR_x^HR_xw/N)}}{w^HR_xw}
gban=wHRxw(wHRxHRxw/N)
w
H
R
x
w
{w^HR_xw}
wHRxw解释为波束后的能量,
(
w
H
R
x
H
R
x
w
/
N
)
\sqrt{(w^HR_x^HR_xw/N)}
(wHRxHRxw/N)为波束后的输出和mic信号相关取模。类似于公式
E
(
x
y
)
E
(
y
y
)
\frac{E(xy)}{E(yy)}
E(yy)E(xy)。通过这种方式可以使得波束后输出信号scale和mic端的信号一个尺度。该方法和ica中只提取一路信号后用Minimal Distortion Principle准则解决scale问题是一致的。
4. 波束的痛点
如上的推导虽然完整,但
R
n
R_n
Rn和
R
s
R_s
Rs在没有外界信息的情况下是不可获得的。一般基于mask的方式对
R
n
R_n
Rn和
R
s
R_s
Rs进行估计。
R
s
=
E
(
m
a
s
k
s
∗
X
X
H
)
R_s=E(mask_s*XX^H)
Rs=E(masks∗XXH)
R
n
=
E
(
m
a
s
k
n
∗
X
X
H
)
R_n=E(mask_n*XX^H)
Rn=E(maskn∗XXH)mask表征什么样的物理意义,我们这里暂且认为
m
a
s
k
t
f
s
=
∣
s
t
f
∣
/
∣
x
t
f
∣
mask_{tf}^s=|s_{tf}|/|x_{tf}|
masktfs=∣stf∣/∣xtf∣(这里只讨论幅度谱的mask)。遗憾的是mask也难以得到。当然我们也可以通道doa_mask或者nn_mask的形式获得。波束问题通过mask控制
R
n
R_n
Rn和
R
s
R_s
Rs的更新过程,而自适应对消则通过mask控制步长。下面我们讨论下盲分离是如何看待这一问题的。
- 盲分离部分
1. 基础回顾
讨论波束时我们强调
R
n
R_n
Rn和
R
s
R_s
Rs的估计需要引入外界信息,但在bss框架下则通过引入源模型(source model)这一概念来实现对
R
n
R_n
Rn和
R
s
R_s
Rs的估计,可以理解盲分离是一种全盲波束,它通过对信号幅度谱进行假设建模实现混合数据的分离,而波束是假设数据为高斯分布的半盲分离/提取。
盲分离的一种objective function为:
J
(
W
)
=
∑
k
=
1
K
E
[
G
(
y
k
)
]
−
∑
w
=
1
N
w
l
o
g
∣
d
e
t
W
(
w
)
∣
J(W)=\sum^K_{k=1}E[G(\mathbf{y}_k)]- \sum_{w=1}^{N_w}log|detW(w)|
J(W)=∑k=1KE[G(yk)]−∑w=1Nwlog∣detW(w)∣,其中
G
(
y
k
)
=
−
l
o
g
p
(
y
k
)
G(\mathbf{y}_k)=-logp(\mathbf{y_k})
G(yk)=−logp(yk)。
应用辅助函数(这部分大家还是去看论文吧),则有:
J
(
w
)
<
=
E
[
G
′
(
r
w
)
/
r
w
∗
∑
w
=
1
N
w
∣
y
k
(
w
)
∣
2
]
+
R
k
J(w)<=E[G^{'}(r_w)/r_{w}*\sum^{N_w}_{w=1}|y_k(w)|^2]+R_k
J(w)<=E[G′(rw)/rw∗∑w=1Nw∣yk(w)∣2]+Rk。
J
(
w
)
<
=
∑
w
=
1
N
w
w
h
V
k
(
w
)
w
+
R
k
,
V
(
k
)
=
E
[
G
(
y
)
/
r
∗
x
(
w
)
x
(
w
)
h
]
J(w)<=\sum_{w=1}^{N_w}w^hV_k(w)w+R_k,V(k)=E[G(y)/r*x(w)x(w)^h]
J(w)<=∑w=1NwwhVk(w)w+Rk,V(k)=E[G(y)/r∗x(w)x(w)h]
-
ica: p ( y ) = α e − ( y ) 2 / 2 p(y)=\alpha e^{-(y)^2/2} p(y)=αe−(y)2/2,时不变高斯模型, G ( y ) ′ / y = 1 G(y)^{'}/y=1 G(y)′/y=1
-
ica: p ( y ) = α e − ∣ y ∣ / 2 p(y)=\alpha e^{-|y|/2} p(y)=αe−∣y∣/2,laplace模型, G ( y ) ′ / y = 1 / ∣ y ∣ G(y)^{'}/y=1/|y| G(y)′/y=1/∣y∣
-
ica: p ( y t f ) = α e − ( y t f ) 2 / r t f p(y_{tf})=\alpha e^{-(y_{tf})^2/r_{tf}} p(ytf)=αe−(ytf)2/rtf,时变高斯模型, G ( y ) ′ / y = 1 / r t f G(y)^{'}/y=1/r_{tf} G(y)′/y=1/rtf
如上看到,如果假设源信号为时不变高斯分布,则 E [ G ′ ( r w ) / r w ∣ x k ( w ) ∣ 2 ] = E ∣ x k ( w ) 2 ∣ E[G^{'}(r_w)/r_{w}|x_k(w)|^2]=E|x_k(w)^2| E[G′(rw)/rw∣xk(w)∣2]=E∣xk(w)2∣,这也是波束中协方差阵的形式。 平时我们说bss问题是最大化非高斯准则,如果源信号是高斯信号则是不可分的(其对应为 J ( w ) J(w) J(w)函数很难优化, w w w找不到一个优化方向)。这句话成立的前提是我们并不知道哪段是语音,哪段是干扰,需要用全盲的方法去做,而对于半盲的方法类似波束,则可以提取出期望信号。这里再多提一句,时变高斯模型组成的协方差阵在WPE中使用。回顾到波束部分的协方差阵估计,在已知mask的情况下,假设源数据为时变高斯信号,则加权协方差阵的形式为: R n = E ( 1 / r t f ∗ X X H ) = E ( X X H / ( m a s k 2 ∗ ∣ ∣ X ∣ ∣ 2 ) ) R_n=E(1/r_{tf}*XX^H)=E(XX^H/(mask^2*||X||^2)) Rn=E(1/rtf∗XXH)=E(XXH/(mask2∗∣∣X∣∣2))。
2. 优化迭代
对 J ( w ) J(w) J(w)进行微分=0操作则有: w l H V l w k = δ l k w_{l}^HV_lw_k=\delta_{lk} wlHVlwk=δlk即典型的Hybrid Exact-Approximate Joint Diagonalization [HEAD] problem。如果 V l V_l Vl按照时不变高斯分布组成的协方差阵形式,该问题很难优化,而在其他数据分布下可通过ip,ip2,iss,iss2等方法进行迭代求解,具体可参考文献。
两个源两个mic的情况下(对于多源问题同样可以转化为GEVD问题来求解,这里不进行推导)满足:
w 1 H V 1 w 1 = 1 w 1 H V 1 w 2 = 0 w_1^HV_1w_1=1 \qquad w_1^HV_1w_2=0 w1HV1w1=1w1HV1w2=0
w 2 H V 2 w 1 = 0 w 2 H V 2 w 2 = 1 w_2^HV_2w_1=0 \qquad w_2^HV_2w_2=1 w2HV2w1=0w2HV2w2=1
由上可得:
w 1 V 1 = λ w 1 V 2 w_1V_1=\lambda w_1V_2 w1V1=λw1V2,也就是和maxSnr波束类似的GEVD问题的解析解形式。选择最大特征值对应的特征向量则可表征为: f ( w ) = m a x w H V 1 w w H V 2 w f(w)=max\frac{w^HV_1w}{w^HV_2w} f(w)=maxwHV2wwHV1w, V 1 V_1 V1对应的矩阵为语音阵, V 2 V_2 V2对应的矩阵为噪声阵。根据如式依次迭代最终便分离出两个源信号。由于初始化的问题,在整个全盲求解过程中最终分离的结果顺序未知。
3. scale问题和source image
根据波束篇已经讨论了一种scaling问题的求解方式且适用于盲分离,这里讨论另外一种形式。已知分离矩阵 W W W(存在scale问题),则 A W = 1 AW=1 AW=1约束下可以得 A = W − 1 A=W^{-1} A=W−1。A表征源S到mic的传递函数。对于 A . ∗ W X = [ y 11 y 12 ; y 21 y 22 ] A.*WX=[y_{11} \quad y_{12};y_{21} \quad y_{22}] A.∗WX=[y11y12;y21y22]反应的是[ S 1 S 2 S_{1} \quad S_{2} S1S2]到[ m i c 1 m i c 2 mic_{1} \quad mic_{2} mic1mic2]的接收信号,即source image,至此scale问题解决。其中 A = [ a 11 a 12 ; a 21 a 22 ] A=[a_{11} \quad a_{12};a_{21} \quad a_{22}] A=[a11a12;a21a22]。 a 11 + a 12 a_{11}+a_{12} a11+a12反应的是对 S 1 S1 S1进行delay_sum为90度的波束。 a 11 − a 12 a_{11}-a_{12} a11−a12反应的是对 S 1 S1 S1进行差分的波束。即在盲源问题中可以分别求得源S到mic端的接收信号,对于波束问题同样也可以得到source image,只是beamforming 很少进行这样的讨论。在有些论文中我们看到对source image后再进行固定波束delay_sum的处理,是一种基于已知数据方向后的加权修正方式。
4. BSS框架下的扩展讨论
通过控制 r t f r_{tf} rtf即控制了输出结果,和波束问题一样但加权的系数不同。论文通过导向向量 [ e i w τ 1 e i w τ 2 . . . ] [e^{iw\tau_1} \quad e^{iw\tau_2}...] [eiwτ1eiwτ2...]加权到协方差阵的方式个人认为并不合适,由于导向向量的形式并不能真实反映RTF,加入的不准确先验会影响真实数据构成协方差阵的结果,还不如通过先验 r t f r_{tf} rtf来的直接,比如基于doa信息计算doa_mask来估计 r t f r_{tf} rtf(大概估计结果就行,不需要完全准确),bss模型计算出来的 r t f r_{tf} rtf和先验 r t f r_{tf} rtf加权等。对于ive,ilrma,mnmf,和bss和网络的结合这里不进行讨论。 -
Minimal Distortion Principle for Blind Source Separation