书名《Audio Source Sepatation and Speech Enhancement》

作者:Emmanuel Vincent, Tuomas Virtanen, Sharon Gannot

出版时间:2018 出版商:Wiley

题外话:立个flag,一周三更,督促一下自己。


本章节是本书的第五章,章节名为Spectral Masking and Filtering

主要描述单通道的滤波方法:谱减法,维纳滤波(线性MMSE),贝叶斯估计(非线性MMSE)。

本文以粗讲滤波过程,细讲原理,各自优势。文章较长,文末有总结。


Time-Frequency Masking

这一点不翻译是因为比较难翻,直译过来词不达意,所以就保留原标题。

我们思考一个问题:不管什么理论和技术,在时频域的操作中,落脚于信号的数值上,我们是如何对这些数值矩阵进行分离的?其核心在于什么?

答:估计 Time-Frequency mask

	ilde{s_{j}}(n,f)=w_{j}(n,f)*x_{j}(n,f)

其中, n,f 表示帧和频点, w 表示所需要估计的TF-mask, x 表示观测信号, s 代表处理后的信号。

在实际操作中,我们都是估计出每一个时频点的mask,即 w_{j}(n,f) ,再对每一个时频点上的观测信号乘以该mask,乘出的结果就是处理后的信号。而这一步相乘就是绝大多数单通道分离中进行的处理。

举例来说,对于第100帧第100个频点数,此时数值可能为 x=0.95+0.34i ,估计出的w=0 ,在这种情况下处理便是:

	ilde{s_{j}}(n,f)=w_{j}(n,f)*x_{j}(n,f)=0*(0.95+0.34i)=0

所以,我们可以得出一般的结论:一般来讲,语音分离的处理都是估计出一个TF-maks,再将其乘以对应的观测信号的时频点。

那么如何估计 Mask 呢,一般来说,都是建立一个目标函数:

其中, c_{j}(n,f) 表示实际的干净信号, w_{j}(n,f)x(n,f) 代表降噪后的信号。上式的意义就在于:找出一个 w_{j}(n,f) ,使得降噪后的信号与原始干净信号尽可能一致。上式采用的是欧式距离。

而根据此限制,再计算估计出的相关性:

据此来估计 Mask ,一般来说,分为两种 Mask

Binary Mask:

即与哪个源接近便划为哪一类。这是一种看似比较粗暴的方法,但是有文献从理论上说明此种方法的可行性:根据w-disjoint orthogonality,即同一个时频点上,只有一个源信号。据此,才可以使用二值掩模技术。

Oracle Soft Mask:

即mask的取值不仅仅是0,1那么粗暴,还可以是一个范围值,在 [0,1] 之间变化。

mask 也成为 ratio mask

就此两种选择来说,对于增强或者是降噪来说,因为这种场景下,更像是一种回归问题,所以 ratio mask 更为好一些;但是对于分离或者是麦克风阵列的方向指向性,这种问题更像是聚类问题,非0即1,所以 binary mask 更好一些。


至此,我们达成一点共识:单通道分离便是估计出这么一个 TF-masking (矩阵形式),再逐一乘以相应的原观测数据,得出处理后的数据。

接下来,介绍三种估计 TF-masking 的方法:谱减法,维纳滤波(线性MMSE),贝叶斯估计(非线性MMSE)。

一、谱减法

简单来说,谱减法便是估计出干扰(杂讯)声的幅度谱,再减去。模型如下:

其中

为干扰声(杂讯)的幅度谱,换成上文的 TF-mask 形式,如下所示:

下标SS代表 Spectral Subtraction

但是鉴于一点:即真实信号在幅度上,并不等于观测信号减去干扰信号:

It is important to realize that even though the complex spectral coefficients of the target and the interference are additive, neither their magnitudes nor the averages or the expected values of their magnitudes are additive.

所以将幅度谱上相减改成能量谱上进行相减:

下表PSS代表Power Spectral Subtraction

小结:谱减法只需估计出干扰声即可,而且对于这种求完均值再进行整体相减的方法,对平稳杂讯比较好用,但对于非平稳杂讯比较难。如果想使谱减法更好地应对非平稳杂讯,可以对其进行实时化处理:实时化的VAD+实时化的谱减法。而这又取决于VAD的性能了,如果VAD能估计且跟踪到干扰声,那么谱减法的效果还是可以的,否则不行。

其次,谱减假设过于简单,实际处理时会引入非常多的失真和畸变。

二、维纳滤波(线性MMSE)

单通道维纳滤波的核心在于,寻找到这么一个 TF-mask ,最小化均值平方误差即 MMSE

将上式展开,得到

式5.18

所以我们的核心是使得上式最小化。

对信号来说,最佳逼近可以分成最佳相位逼近和最佳幅度,先看如何对这个目标函数进行最佳相位估计,即optimal phase

optimal phase

相位只影响 2R(w*Eleft{ c*w 
ight}) 这一项,那么要使目标函数最小,就相位来说,应该尽快让 2R(w*Eleft{ c*w 
ight}) 最大,那么如何让这一项最大化呢:只有让 wEleft{ c*w 
ight} 相位保持一致才可以。

To minimize (5.18) we need to maximize the real part of w*Eleft{ c*w 
ight} . It is easy to show that this happens when the phase of w is the same as that of Eleft{ c*w 
ight} such that the product w*Eleft{ c*w 
ight} is real-valued:

怎么理解,从数学上看, 要使2R(w*Eleft{ c*w 
ight}) 实部最大,可以把问题转换为两个向量相乘,如何使相乘后实部最大——两个向量要方向一致。如何保持方向一致,那么就是相位一致即可。所以得出上述结论。

optimal magnitude

对5.18式进行求导得:

解出方程中得 w

这就是对应得最佳幅度逼近。

将相位和幅度结合起来,求得的 TF-mask 如下:

再代入 Eleft{ left| x 
ight|^{2} 
ight}= Eleft{ left| c 
ight|^{2} 
ight} +Eleft{ left| u 
ight|^{2} 
ight} ,即在能量谱上,观测信号能量等于干扰声能量加上目标信号能量。便得:

最后的结果非常漂亮:频谱下的维纳滤波化为了求一个 TF-mask ,而这个 TF-mask目标信号能量除以目标信号能量与干扰信号能量之和。

从此可以看出,w为观测信号的线性函数,而处理后的信号为w乘以观测信号,那么处理后的信号便是观测信号的线性函数。这也是为什么称维纳滤波为线性MMSE的原因了。

那么这样一来,维纳滤波的实践就非常简单了,只需检测出目标信号干扰信号,就工程上实现非常简单,只需要一个不错的VAD即可。但其理论代表的物理意义和数学推导却是如此美妙!

视估计出的杂讯为y_noise,估计出的语音为y_speech,观测信号为y_ori,处理后的数据为y

伪代码
y1 = y_noise.^2;
y2 = y_speech.^2;
w = y2/(y1+y2);
y = w*y_ori

三、贝叶斯估计(非线性MMSE)

在处理MMSE的时候,维纳滤波的视角只有一个假设:信号不相关。但当我们从统计处理的角度来逼近MSE时,我们得出的便是非线性MMSE:

将其改成贝叶斯估计,即后验概率:

上式的意思是,当观测到观测信号,它属于目标信号的概率,换作语音增强的场景,即当给一个混合信号,对于这个时频点,它属于语音的概率。

对于后验概率,我们利用贝叶斯理论,将其转写成似然函数:

所以,对于原目标,我们的目标便是求 p(x|c) , p(c) , p(x)

下面,我们以三个概率分布为零均的高斯分布作为示例,体验一下如何推这个公式:

代入相消:

回到原式,我们所求的是 Eleft{ c|x 
ight} ,即在给定混合信号下,它属于语音的概率。

从上式这么一个高斯分布可以看出,其均值为:

而这,就是维纳滤波的形式。

但对于非高斯分布的干扰而言,统计概率下的MMSE就不是观测信号的线性函数了。

In other words, for Gaussian target and interference, the optimal estimate in the MMSE sense is the Wiener filter no matter whether we constrain the filter to be linear or not.Note,however,that for nongaussian target or interference this is not necessarily true and the MMSE estimate is generally a nonlinear function of the observation.

下面是我自己手推的,当语音和杂讯都符合拉普拉斯分布(有文献说,在时频域上,语音信号更加符合拉普拉斯分布,我们做的实验也是如此)时,上述条件概率的样子:

可以看出,其均值不再是观测信号x的线性变换了。


总结:至此我们描述完了单通道滤波的基本步骤:语音里面单通道滤波主要是估计 TF-mask ,再用这个时频掩模乘以观测信号,以达到信号增强(分离)的作用。

而常见的估计时频掩模的方法有三类:1、谱减法 2、维纳滤波法 3、贝叶斯估计法。

其中谱减法较为简单容易引入语音失真,维纳滤波法是线性MMSE法,贝叶斯估计则是非线性MMSE。

就线性MMSE和非线性MMSE而言,线性MMSE在求解过程中,只能在一个范围内进行求解,局限性比较大,而且其物理意义不够明确。而非线性MMSE,在理论推导过程中,因为加入了信号的概率密度函数,引入了其物理上的分布,就理论上更加符合实际。

比较如下:


推荐阅读:
相关文章