麦克风阵列,是一组位于空间不同位置的全向麦克风按一定的形状规则布置形成的阵列,是对空间传播声音信号进行空间采样的一种装置,采集到的信号包含了其空间位置信息。根据声源和麦克风阵列之间距离的远近,可将阵列分为近场模型和远场模型。根据麦克风阵列的拓扑结构,则可分为线性阵列、平面阵列、体阵列等。
(1) 近场模型和远场模型
声波是纵波,即媒质中质点沿传播方向运动的波。声波是一种振动波,声源发声振动后,声源四周的媒质跟着振动,声波随着媒质向四周扩散,所以是球面波。
根据声源和麦克风阵列距离的远近,可将声场模型分为两种:近场模型和远场模型。近场模型将声波看成球面波,它考虑麦克风阵元接收信号间的幅度差;远场模型则将声波看成平面波,它忽略各阵元接收信号间的幅度差,近似认为各接收信号之间是简单的时延关系。显然远场模型是对实际模型的简化,极大地简化了处理难度。一般语音增强方法就是基于远场模型。
近场模型和远场模型的划分没有绝对的标准,一般认为声源离麦克风阵列中心参考点的距离远大于信号波长时为远场;反之,则为近场。设均匀线性阵列相邻阵元之间的距离(又称阵列孔径)为d,声源最高频率语音的波长(即声源的最小波长)为λmin,如果声源到阵列中心的距离大于2d2/λmin,则为远场模型,否则为近场模型,如图1所示。
图1 近场模型和远场模型
(2) 麦克风阵列拓扑结构
按麦克风阵列的维数,可分为一维、二维和三维麦克风阵列。这里只讨论有一定形状规则的麦克风阵列。
一维麦克风阵列,即线性麦克风阵列,其阵元中心位于同一条直线上。根据相邻阵元间距是否相同,又可分为均匀线性阵列(Uniform Linear Array,ULA)和嵌套线性阵列,如图2所示。均匀线性阵列是最简单的阵列拓扑结构,其阵元之间距离相等、相位及灵敏度一直。嵌套线性阵列则可看成几组均匀线性阵列的叠加,是一类特殊的非均匀阵。线性阵列只能得到信号的水平方向角信息。
图2 线性阵列拓扑结构
二维麦克风阵列,即平面麦克风阵列,其阵元中心分布在一个平面上。根据阵列的几何形状可分为等边三角形阵、T型阵、均匀圆阵、均匀方阵、同轴圆阵、圆形或矩形面阵等,如图3所示。平面阵列可以得到信号的水平方位角和垂直方位角信息。
图3 平面阵列拓扑结构
三维麦克风阵列,即立体麦克风阵列,其阵元中心分布在立体空间中。根据阵列的立体形状可分为四面体阵、正方体阵、长方体阵、球型阵等,如图4所示。立体阵列可以得到信号的水平方位角、垂直方位角和声源与麦克风阵列参考点距离这三维信息。
图4 立体阵列拓扑结构
2 波束形成
波束形成,是对各阵元的输出进行时延或相位补偿、幅度加权处理,以形成指向特定方向的波束。
在远场模型中,假设输入是一个平面波。设传播方向为θ,时域频率(弧度)为ω,声音在介质中的传播速度为c,对于在一个局部均匀的介质里传播的平面波,定义波束k为
k = ωsinθ/c = 2sinθ/λ,其中λ是对应于频率ω的波长。由于信号到达不同的传感器的时间不同,则阵列接收到的信号可表示为
f(t)=[f(t-τ0) f(t-τ1)…f(t-τN-1)]T=[exp(jω(t-kτ0)) exp(jω(t-kτ1))…exp(jω(t-kτN-1))]T
其中τn为第n个阵元接收到的信号相对于参考点的时延,N为阵元个数,T表示转置。
定义v(k) = [e-jωkτ0 e-jωkτ1 …e-jωkτN-1]T
矢量v包含了阵列的空间特征,称为阵列流行矢量。则f(t)可表示为f(t) = ejωtv(k)。
阵列处理器对一个平面波的响应为y(t,k) =HT(ω) v(k)ejωt
其中H(ω)是滤波器系数向量的傅里叶变换。符号y(t,k)强调了输出和输入波数k的关系。时域上的相关性体现在输出是一个复指数,和输入平面波有相同的频率。在频域上式可表示为Y(ω,k) =HT(ω) v(k)。
注意此处ω对应单一的输入频率,所以是窄带的。阵列的空时处理关系完全可以由上式的右端描述,称为阵列的频率-波数响应函数。它描述了一个阵列对于时域频率为ω,波数为k的输入平面波的复增益。
阵列的波束方向图反映了平面波在一个局部均匀的介质中传播情况,它是用入射方向表示的频率-波数响应函数,可以写成B(ω:θ) = Y(ω,k)|k=sinθ。
阵列的波束方向图是确定阵列性能的关键要素,其主要参数有3dB带宽,到第一零点的距离,第一旁瓣高度,旁瓣衰减速度等。其幅度的平方定义为功率方向图,是常用的一种阵列性能度量。
3 时延补偿
由于麦克风阵元空间位置的差异,各阵元接收到的信号存在时延,在对信号处理之前进行时延补偿,保证各阵元待处理数据的一致性,使阵列指向期望方向。
考虑最简单的均匀线性麦克风阵列,如图5所示。
图5 ULA时延
设麦克风阵列共用M个阵元,中心为参考点,阵元间距为d,信号入射角为θ,声音传播速度为c,则根据几何知识,第m(0≤m≤M-1)个阵元的时延为τm = (d/c) sinθ(m-(K-1)/2)。
麦克风采集的是数字信号,设采样周期为T,则对时域离散的信号来说,时延为D = τ/T。
通常D不是一个整数,而对离散信号来说,整数时延才有意义。对于非整数D,可以分解为整数部分和分数部分D = ⌊D⌋ + d,式中,⌊D⌋为D的向下取整,0≤d<1。对于非零的分数部分d,此时信号实际值介于两个相邻采样点之间,即分数延迟。在实际处理中,可对d四舍五入取整,然后加上⌊D⌋,得到近似整数时延,但这种方法处理的结果不够精确。
为了得到较为精确的处理结果,就必须设计分数时延滤波器,对采样信号进行精确的时延补偿。理想的分数时延滤波器的冲激响应可表示为hid(m) = sinc(m-D)。
由数字信号处理知识可知,上式是无限长、非因果不稳定的,在物理上不可实现。为了解决这一问题,在实际操作中,通常会对上式进行加窗,加窗后滤波器的冲激响应为
h(m)=(W(m-D)sinc(m-D), 0≤m≤M-1。加窗后的分数时延滤波器的时延精确程度与理想分数时延滤波器非常接近。