Overview of Beamformer

好久没更……
过去一段时间接触了一下beamforming,连看论文加做实验,大概理出了一些头绪。初步理解beamforming就是对多路信号进行频域滤波,从而获取一路增强信号,所谓的增强就是最大可能的滤除噪声,同时保留我们期望的信号。比较经典的方法有:延时相加,Max-SNR,MVDR,GSC(LCMV)等等(详细可学习陈老师的麦克风阵列信号处理[2]一书)。学习期间会接触到一些非常频繁的概念,比如信噪比,相关系数矩阵,PSD(功率谱密度),steer vector,以及一些数学问题的求解方法,比如拉格朗日乘子法,广义特征值等问题,深层次的理解还是需要扎实的统计,矩阵,优化理论基础,相关概念以后可能会写一篇专做解释。

我这里从DS(延迟相加)开始,引入频域beamforming的一般数学模型,再介绍GEV,MVDR,PMWF三种beamformer。虽然我的出发点和实验都是和NN结合来做的,但是本篇里面不牵扯到NN(神经网络)的东西,只说纯粹的信号处理。

延时相加(DS)方法是最简单的一种波束形成方法。它利用已知是麦克风阵列的拓扑结构,算出不同通道之间的相对延时,通过对多路信号进行时间上的同步和平均操作完成通道合并和增强效果。

对于有$N$个麦克风的阵列,在$t$时刻,麦克风$n(n = {1, 2, \cdots, N})$处收集的信号$y_n(t)$可以表达为:

$v_n(t)$表示该处噪声,$x_n(t)$表示声源到达麦克风的信号,考虑麦克风之间的空间分布,声源到达麦克风处的衰减和延迟是不同的,引入衰减因子$\alpha_n$和相对延时$\tau_n$,$x_n(t)$可以表示为:

$s$表示未知的声源信号。首先对多路信号进行延时操作:

相加取平均获取DS方法的输出$z_{DS}(t)$:

令$\alpha_{DS} = \sum_n \alpha_n, v_{DS}(t + \tau_n) = \sum_n v_n(t + \tau_n)$,定义输出信号的SNR:

以$s_1(t)$为参考,定义此处的信噪比:

显然,期望的波束形成结果应该满足$\text{oSNR} > \text{SNR}$。

若$\alpha_i = 1, \sigma_{v_1}^2 = \sigma_{v_2}^2 = \cdots = \sigma_{v_n}^2$且$v_i(t)$之间互不相关(因此不同噪声信号之间的协方差为0),那么:

故$\text{oSNR} = N \cdot \text{SNR}$。在DS方法中,准确的估计$\tau_n$十分重要,在线阵中,需要知道各个麦之间的间距$d$以及以及声源波面和线阵形成的夹角$\theta$。假设各麦间距相同,那么TDOA计算有简单的几何关系得到:

其中$c$表示声速。

以上分析是在时域上进行的,上面的各个变量下标为$t$,DS首先需要做的是在时域上进行对齐,之后叠加取均值。若变换到频域,那么$y_n(t) = x_n(t) + v_n(t)$写为:

由$x_n(t) = \alpha_n s(t - \tau_n)$:

令:

这里$\mathbf{d}(\omega)$称为steer vector。那么频域关系可以用向量形式描述为:

在频域上,波束形成是要在每个频率点上操作,完成$\mathbf{y}(\omega)$到$Z(\omega)$的映射,这种映射关系通过设计滤波器$\mathbf{h}(\omega)$实现,即:

注意,这里的$Z(\omega)$为数值,而$\mathbf{h}(\omega), \mathbf{y}(\omega)$为向量,实际的操作为:

其中,$\mathbf{h}(\omega) = [H_1(\omega), H_2(\omega), \cdots, H_N(\omega)]^T$, $\overline{H}_n(\omega)$表示$H_n(\omega)$的共轭。

从频域来看,DS设计的beamformer应该是:

使得$\mathbf{h}^H(\omega) \mathbf{d}(\omega) = 1$。

更一般的表示,可令$\mathbf{x}(\omega) = \mathbf{d}(\omega) X(\omega)$,则:

带入$Z(\omega)$可知,滤波器同时作用于$\mathbf{x}(\omega)$和$\mathbf{v}(\omega)$:

一般的可以将作用于前者的结果$\mathbf{h}^H(\omega) \mathbf{x}(\omega)$称为增强信号或者输出信号(desired speech),因为这是我们最终期望的结果,作用后者的结果$\mathbf{h}^H(\omega) \mathbf{v}(\omega)$称为残留噪声(residual noise)。显然,我们期望滤波器对前者产生增强效果,对后者产生削弱效应。

再往下需要补充一个关于PSD(power spectrum density,功率谱密度)的定义,对于复数域的向量$\mathbf{v}(\omega)$,称:

为$\mathbf{v}(\omega)$的PSD。假设噪声和原始信号之间是不相关的,那么$\mathbf{x}(\omega), \mathbf{v}(\omega), \mathbf{y}(\omega)$之间的PSD满足如下关系:

对于$Z(\omega) = \mathbf{h}^H(\omega) \mathbf{y}(\omega) = \mathbf{h}^H(\omega) \mathbf{x}(\omega) + \mathbf{h}^H(\omega) \mathbf{v}(\omega)​$,有:

在每个频率点$\omega​$上,定义一个局部信噪比(local SNR):

所谓GEV(Generalized Eigenvalue Decomposition) beamformer,就是要设计一个滤波器$\mathbf{h}(\omega)$,使得在频率点$\omega$处$\text{SNR}(\omega)$达到最大,即:

称之为GEV,是因为该极值求解问题是一个瑞利商问题,可以用广义特征值来求解,即$\mathbf{h}_\text{GEV}(\omega)$实际上就是$\mathbf{\Phi}_{vv}^{-1}(\omega)\mathbf{\Phi}_{yy}(\omega)$最大特征值对应的特征向量。在编程实现的时候,遍历每一个$\omega$就可以得到每个频率上对应的滤波系数了。

接下来引入使用非常广泛的一种波束形成方法:MVDR(Minimum Variance Distortionless Response )。它通过最小化残留噪声的能量,同时约束期望(方向)的信号不失真来实现。

引入GEV的过程中,通过$\mathbf{x}(\omega)$将$\mathbf{d}(\omega) X(\omega)$整体看待,在DS中,$\mathbf{d}(\omega)$(steer vector)描述的是衰减因子和延时的综合作用,现在推广它的含义,用$\mathbf{d}(\omega)$描述声源到每一个麦克风的转移方程,那么:

MVDR的求解问题可以表示为:

约束条件$\mathbf{h}(\omega)^H \mathbf{d}(\omega) = 1$可以保证MVDR滤波器在满足转移方程$\mathbf{d}(\omega)$的方向或者条件下,增强的信号不失真。同时也表示$\mathbf{d}(\omega)$需要估计或者已知。用拉格朗日乘子法得到$\mathbf{h}_\text{MVDR}$的数学表达式:

现在可以对MVDR的约束条件加以推广,MVDR约束信号不失真通过转移方程或者steer vector完成,约束residual noise通过获取最小化能量完成。如果定义一个参考信号/麦克风(reference microphone )$r$,那么衡量信号的失真程度可以通过误差$\epsilon_r(\omega)$进行:

其中$\mathbf{u}_r = [0_1, 0_2, \cdots, 1_r, 0_{r + 1}, \cdots, 0_N]^T​$用于选择出第$r​$路参考信号。

仿照MVDR,写下约束优化问题:

该问题的解称之为PMWF(Parameterized Multichannel Wiener Filter ):

$\beta = 1 / \gamma$,其中$\gamma$是拉格朗日乘子。利用$\mathbf{\Phi}_{xx}(\omega)$的秩为1(因为$\mathbf{\Phi}_{xx}(\omega) = \Phi_{ss}(\omega)\mathbf{d}(\omega)\mathbf{d}^H(\omega)$),可将解化简为以下形式:

其中$\lambda(\omega) = \text{tr}[\mathbf{\Phi}_{vv}^{-1}(\omega)\mathbf{\Phi}_{xx}(\omega)]$。其中的数学推导可以参见[1]。

从编程的角度说,获取到不同beamformer的滤波系数$\mathbf{h}(\omega)$之后,就可以对多路的麦克风信号进行滤波和重建。假设谱中有$F$个频率点(bin),麦克风数量为$N$个,语音段帧数为$T$,在频率$f$上,滤波操作为:

遍历频率bin一次就可以得到滤波后的频谱$S_{F \times T}$,使用重叠相加即可对其进行重建。同样,计算PSD的时候,不同频率点之间的计算是完全不相关的,在每个频率上,将通道视为随机变量,计算相关系数矩阵,得到$R(f)_{M \times M}$即为PSD。

参考文献:

[1]. On Optimal Frequency-Domain Multichannel Linear Filtering for Noise Reduction
[2]. Microphone Array Signal Processing
[3]. Blind Acoustic Beamforming Based on Generalized Eigenvalue Decomposition
[4]. Performance Study of the MVDR Beamformer as a Function of the Source Incidence Angle