差分麦克风阵列(Differential microphone arrays)
1.介绍
传统波束成形方法有延时累加(delay-sum),滤波相加(filter-sum)以及自适应波束形成(LCMV、MVDR、GSC …..)等等,这些方法都是将阵列数据做同步后相加输出,与相加相对应的是相减,这类方法就是下面要介绍的差分阵列(Differential microphone arrays),简称DMAs。
差分阵列表现的是空间声压的差异性,声压的一阶差分可以由两个相近放置的全向麦克风输出相减得到,同理,N个麦克风可以最多可以获得声压的N-1阶差分。
要设计一个差分阵列,一个很重要的条件就是麦克风间距要小到麦克风间的有限差值输出能够估计实际声压场的差别,与声音信号波长相比,麦克风间距要远小于波长
DMAs一般以端射方向作为注视方向,与加性阵列相比,差分阵列有以下几个优势
- 紧凑的阵列放置
- 频率不变波束模式
- 低频效果好
- 给定阵元数量时有可能获得最大方向增益
也有以下几个劣势
- 高通特性
- 阵列响应由阵列相对声源方向而定
- 低频白噪声增益
在filter-sum beamformer中,麦克风数据经最优滤波输出以使主瓣方向对准目标方向,而在差分阵列中,一般主瓣方向固定,差分阵列的滤波器设计是为了在指定的方向上放置零点。
2.一阶差分阵列
对于一个特定的波束模式,给定
M
M
个约束,个方程获得,一阶差分阵列中,需要两个麦克风,有两个约束条件:
1.在目标方向无失真(gain = 1 at
θ=00
θ
=
0
0
)
2.零点在区间
0。<θ<180。
0
。
<
θ
<
180
。
内
这两个约束用数学表示如下:
其中 α1,1=cosθ1,1,β1,1=0 α 1 , 1 = c o s θ 1 , 1 , β 1 , 1 = 0
式(3.2)与(3.3)用矩阵表示如下
式(3.4)有学名叫做Vandermonde matrix,求解(3.4),得到一阶DMA滤波器为
当麦克风间距远小于信号波长时,作如下假设:
ex≈1+x e x ≈ 1 + x
将以上假设应用到
1−ejωτ0(α1,1−1)
1
−
e
j
ω
τ
0
(
α
1
,
1
−
1
)
中,则(3.5)可以简化为
因此,两个麦克风的滤波系数分别为以下两式
H1(ω)=1 H 1 ( ω ) = 1
H2(ω)=−ejωτ0α1,1 H 2 ( ω ) = − e j ω τ 0 α 1 , 1
输出补偿滤波器为
一阶DMA波束模式为
代入简化条件后beam pattern为
一阶DMA结构以及几种不同波束模式如下图所示
3.一阶差分阵列频率响应
根据以上分析,编写程序绘制一阶DMA频率响应
1.未添加补偿滤波器时
close all;
theta = [0,90,135]'*pi/180;%0:2*pi/360:2*pi; %注视方向
alpha = 180*pi/180; %零点方向
f = 1:1:20000;
d = 0.02;
c = 340;
tao0 = d/c;
omega = 2*pi*f;
B = zeros(3,length(f));
for i = 1:length(f)
%B(:,i) = 1j/(omega(i)*tao0*(alpha-1))*(1-exp(-1*1j*omega(i)*tao0*(cos(theta)-cos(alpha))));
B(:,i) = (1-exp(-1*1j*omega(i)*tao0*(cos(theta)-cos(alpha))));
end
figure,plot(pow2db(abs(B(1,:))),'b'),ylim([-20,5]),
set(gca,'XScale','log'),grid on
hold on
plot(pow2db(abs(B(2,:))),'r'),ylim([-20,5]),
hold on,
plot(pow2db(abs(B(3,:))),'g'),ylim([-20,5]),
legend('theta = 0','theta = 90','theta = 135');
2.添加补偿滤波器后
code example:
https://github.com/wangwei2009/differential-array
参考:
[1]: 《Differential Microphone Arrays》
[2]: 《Study and Design of Differential Microphone Arrays》