本章利用信号的高阶统计量来分离出目标语音,盲语音分离就是假定源信号具有相互独立的统计特性,利用高阶统计量度量独立性,它能分离出所有非高斯性声源,实际使用中最常用的为独立成分分析法(ICA)。一般根据麦克风个数与声源个数的大小关系来区分不同的盲语音分离方法。在这里仅介绍麦克风个数大于或等于声源个数的情况,对于麦克风个数小于声源个数的情况,使用信号处理的方法效果不佳。
一、ICA基本概念
假定现有m个声源和m个麦克风,麦克风采集信号分别为
x
1
(
t
)
,
x
2
(
t
)
,
⋯
,
x
m
(
t
)
x_1(t),x_2(t),\cdots,x_m(t)
x1(t),x2(t),⋯,xm(t),原始信号为
s
1
(
t
)
,
s
2
(
t
)
,
⋯
,
s
m
(
t
)
s_1(t),s_2(t),\cdots,s_m(t)
s1(t),s2(t),⋯,sm(t),则
x
i
(
t
)
=
∑
j
=
1
m
a
i
j
s
j
(
t
)
其
中
i
=
1
,
.
.
.
,
m
x_i(t)=\sum_{j=1}^{m}a_{ij}s_j(t)\ \ 其中 i=1,...,m
xi(t)=j=1∑maijsj(t) 其中i=1,...,m
a
i
j
a_{ij}
aij为声源与麦克风之间的传递系数,式中除了
x
i
(
t
)
x_i{(t)}
xi(t),其它都是未知,如何仅利用
x
i
(
t
)
x_i(t)
xi(t)找出源信号
s
j
(
t
)
s_j(t)
sj(t),这就是盲源分离的问题。
只需考虑信号的统计独立性,就能找到上述问题的解。若源信号是非高斯的,那么只需要找到分离矩阵
W
=
[
w
11
w
12
w
13
w
21
w
22
w
23
w
31
w
32
w
33
]
W= %开始数学环境 \left[ %左括号 \begin{array}{ccc} %该矩阵一共3列,每一列都居中放置 w_{11} & w_{12} & w_{13}\\ %第一行元素 w_{21} & w_{22} & w_{23}\\ %第二行元素 w_{31} & w_{32} & w_{33} \end{array} \right] %右括号
W=⎣⎡w11w21w31w12w22w32w13w23w33⎦⎤使得
y
1
(
t
)
、
y
2
(
t
)
、
y
3
(
t
)
y_1(t)、y_2(t)、y_3(t)
y1(t)、y2(t)、y3(t)相互独立即可。
y
1
(
t
)
=
w
11
x
1
(
t
)
+
w
12
x
2
(
t
)
+
w
13
x
3
(
t
)
y_1(t)=w_{11}x_1(t)+w_{12}x_2(t)+w_{13}x_3(t)
y1(t)=w11x1(t)+w12x2(t)+w13x3(t)
y
2
(
t
)
=
w
21
x
1
(
t
)
+
w
22
x
2
(
t
)
+
w
23
x
3
(
t
)
y_2(t)=w_{21}x_1(t)+w_{22}x_2(t)+w_{23}x_3(t)
y2(t)=w21x1(t)+w22x2(t)+w23x3(t)
y
3
(
t
)
=
w
31
x
1
(
t
)
+
w
32
x
2
(
t
)
+
w
33
x
3
(
t
)
y_3(t)=w_{31}x_1(t)+w_{32}x_2(t)+w_{33}x_3(t)
y3(t)=w31x1(t)+w32x2(t)+w33x3(t)
这也是独立成分分析法的命名缘由。现在的关键点就称为如何理解统计独立性。在波束或者传统信号处理中, 最常见的就是不相关,首先区分两者的不同,以便更好的理解独立性。
二、ICA估计原理
1、非线性去相关
寻找矩阵W,使得对任何
i
≠
j
i\neq j
i=j,
y
i
y_i
yi和
y
j
y_j
yj不相关,且变换后的
g
(
y
i
)
g(y_i)
g(yi)和
h
(
y
j
)
h(y_j)
h(yj)也不相关,其中g和h为非线性函数。
2、极大非高斯性
在y的方差为常数的约束下,求线性组合
y
=
∑
i
b
i
x
i
y=\sum_ib_ix_i
y=∑ibixi非高斯性的局部极大值,每个局部极大值对应一个独立成分。
该原理的启发来源于中心极限定理:非高斯随机变量之和更接近于高斯。因此,反向思考,对于混合变量做变换,当非高斯性达到极大时,对应独立成分。
求解过程需要用到数值计算。使用梯度下降法来进行优化
三、盲源分离预处理
PCA是ICA一个必要过程,主要作用有:
- 当麦克风个数大于声源个数时,可以用PCA对多麦克风数据降维,降至与声源个数相等,因为ICA要求输入维度与输出维度一致。
- 当麦克风个数等于声源个数时,PCA做预处理,可以将ICA的待估计参数减少一半,极大地降低了计算复杂度。
四、频域独立成分分析法(FDICA)
ICA及其衍生方法是盲语音分离的主流解决方案。语音信号为宽带平稳信号,对其处理一般在频域进行,首先对麦克风信号做STFT,STFT将时域信号变换至时/频域,再对每个频带单独做复数ICA分离。
ICA本身有两个不确定性问题:独立成分方差不确定和独立成分顺序不确定。在时/频域,这两个缺陷会严重恶化语音的分离效果,需要特殊处理。
- 独立成分的方差无法确定
由于源信号s和混合矩阵A都未知,对某个源的任意标量乘积都能通过对A矩阵对应的列 a i a_i ai除以对应的标量值而低消, x = ∑ i ( 1 λ a i ) ( s i λ ) x=\sum_i(\frac{1}{\lambda }a_i)(s_i\lambda) x=∑i(λ1ai)(siλ),因此在求解过程中, 需要调整分离矩阵W保证方差的一致性。 - 独立成分次序的不确定
由于s和A引起,我们可以把任意一个独立成分作为第一个,从数学公式看,可以引入一个置换矩阵P, x = A P − 1 P s x=AP^{-1}Ps x=AP−1Ps, P s Ps Ps矩阵中的元素仍然是原来的独立变量 s i s_i si,但顺序发生了变化,这是矩阵 A P − 1 AP^{-1} AP−1是另一个新的待估矩阵。
解决策略:
(1) 根据频带间的相关性来归类,因为来自同一生源的相邻频带具有更强的相关性, 但是当声源数目较多或者混响严重的情况下,这种方法大概率会出错。
(2)利用先验信息,比如声源定位,将来自同一方位的声源归为一类,这对声源定位方法有较高要求。
后置滤波处理通用框架
该框架可以同时处理有平稳噪声和非平稳噪声的情况。
后处理也是在频域进行,理论依据是Ephraim和Malah提出的最优估计方法,整个流程可以分为两部分:噪声
λ
\lambda
λ和衰减因子
G
(
k
)
G(k)
G(k)的计算。最终输出为:
X
^
p
(
k
)
=
G
(
k
)
Y
p
(
k
)
\hat{X}_p(k)=G(k)Y_p(k)
X^p(k)=G(k)Yp(k)
实际上,这要流程是语音增强中基于统计模型的方法,最难的部分是噪声估计,只有准确估计早生,才能更准确地计算衰减因子。
噪声估计
一般噪声估计都假定噪声为平稳噪声,但是通道之间泄漏的往往为非平稳的语音。
将平稳噪声和非平稳噪声分开估计,表达式如下:
λ
p
(
k
,
l
)
=
λ
p
s
t
a
t
(
k
,
l
)
+
λ
p
l
e
a
k
(
k
,
l
)
\lambda_p(k,l)=\lambda_p^{stat}(k,l)+\lambda_p^{leak}(k,l)
λp(k,l)=λpstat(k,l)+λpleak(k,l)
λ
p
s
t
a
t
(
k
,
l
)
\lambda_p^{stat}(k,l)
λpstat(k,l)为平稳噪声方差,
λ
p
l
e
a
k
(
k
,
l
)
\lambda_p^{leak}(k,l)
λpleak(k,l)为泄漏语音方差。
对于非平稳泄漏语音,想要准确估计非常困难,但可以做一个基本假设:泄漏的语音来自其它声源且有一个固定的泄漏因子。
λ
p
l
e
a
k
(
k
,
l
)
=
θ
∑
i
=
0
,
i
≠
p
P
S
i
(
k
,
l
)
\lambda_p^{leak}(k,l)=\theta\sum_{i=0,i\neq{p}}^PS_i(k,l)
λpleak(k,l)=θi=0,i=p∑PSi(k,l)
其中,
S
p
(
k
,
l
)
S_p(k,l)
Sp(k,l)为第p个估计声源
Y
p
(
k
)
Y_p(k)
Yp(k)的平滑功率谱(平滑系数
α
=
0.7
\alpha=0.7
α=0.7):
S
p
(
k
,
l
)
=
α
S
p
(
k
,
l
−
1
)
+
(
1
−
α
)
Y
p
(
k
,
l
)
S_p(k,l)=\alpha S_p(k,l-1)+(1-\alpha)Y_p(k,l)
Sp(k,l)=αSp(k,l−1)+(1−α)Yp(k,l)