主要内容

微分波束形成导论

本例展示了差分波束形成的基本概念,以及如何使用该技术来形成线性差分麦克风阵列。

加式与差分式麦克风阵列

麦克风阵列已经部署在许多音频应用中。根据布局的不同,麦克风阵列可分为两大类:加式麦克风阵列和差分麦克风阵列。附加麦克风阵列类似于其他应用中使用的阵列,如无线通信。对于加性麦克风阵列,目标是相干地组合来自每个通道的信号,这样我们就可以形成一个朝向源的窄波束,并提高信噪比。中介绍了几种这样的波束形成算法使用麦克风阵列的声学波束形成的例子。

虽然附加式麦克风阵列非常有用,但它们也有一些局限性。为了说明,让我们定义一个间隔为5厘米的2元素数组,并查看它在1-4 kHz之间的模式。请注意,虽然音频频带范围从20hz到20khz,但1-4 kHz频带对于语音可理解性特别重要。阵列中5厘米的间距大约是4千赫波长的一半。

C = 343;F = (1:4)*1e3;Fmax = f(end);Lambda = c/fmax;D = 0.05;N = 2;micarraya = phase . ula (N,d);模式(micarraya f 180:180 0“PropagationSpeed”c)

{“字符串”:“”,“它”:[],“乳胶”:[]}

从图中我们能观察到的第一件事可能是在这个频率范围内模式发生了多大变化。虽然该阵列在4 kHz时表现出明确的方向响应,但在1 kHz时,其模式基本上是全向的。因此,在较低的频率下,阵列不能实现很大的空间滤波。这反过来又降低了数组的指向性。在频率范围内沿侧面的指向性如下所示。

Da =指向性(micarraya,f,[0;0],“PropagationSpeed”c);clf;情节(f / 1 e3,哒,“o”);包含(的频率(赫兹));ylabel (“方向性(dBi)”);标题(“附加麦克风阵列指向性”);

{

请注意,麦克风阵列(如语音和音乐)的感兴趣信号总是宽带的。因此,在频率范围内的模式差异也会导致波束形成信号的失真。

已经探索了许多数组几何来绕过这些限制。嵌套数组就是这样一个例子。在嵌套数组中,小数组嵌入到大数组中。然后,您可以激活不同频带上的不同元素,从而在整个频带上产生类似的模式。考虑下面的4元素数组

Nn = 4;nestedpos = [0 1 2 4]*d; 0 (1,Nn)];Micarrayn =相控阵。ConformalArray (“ElementPosition”, nestedpos);viewArray (micarrayn);集(gcf,“颜色”' w ');

{“字符串”:“”,“它”:[],“乳胶”:[]}

如果你在4 kHz左右的波段使用第一和第二元素;第一和第三个元素用于2和3 kHz之间的频带;以及1 kHz左右波段的第一和第四元素,得到的波束模式如下

Wn = [1 1 1 1 1;0 0 0 1;0 1 1 0;模式(micarrayn f 180:180 0“PropagationSpeed”c“重量”wn);

{“字符串”:“”,“它”:[],“乳胶”:[]}

在图中,1、2和4 kHz的模式基本上是相同的,但3kHz的模式仍然不同。此外,在本设计中,元素的数量增加了一倍。实际上,要获得一个嵌套数组,使其在一个较大的频段内具有频率不变模式,您将需要大量的麦克风元素,因此这种方法不是很实用。

差分麦克风阵列(DMA)技术是另一种可能的解决方案。由于dma可以形成频率不变的模式,因此它们成为音频应用的有价值的工具。

一阶线性DMA

与附加式麦克风阵列不同,DMA对阵列周围声场的空间导数更敏感,因此被称为“差分”。由于不可能计算麦克风元件之间的真实导数,因此使用每个麦克风元件测量值之间的差值来近似导数。由于一对位置紧密的元件可以更准确地测量导数,DMA中的元件间距通常比波长小得多。下面的代码构造了一个波长间隔为1/10的2元线性阵列。

Dd = lambda/10;micarrayd = phase . ula (N,dd);viewArray (micarrayd)组(gcf,“颜色”' w ');

{“字符串”:“”,“它”:[],“乳胶”:[]}

紧凑的间距带来的一个好处是整个阵列的孔径相当小。因此,这种线性dma是助听器的流行选择。

由于差分波束形成测量的是场导数,所以它的主瓣指向终焰方向。终射方向沿线阵轴线方向。这是可以理解的,因为对于一个加性阵列,主瓣在侧面,这是垂直于阵列轴的方向,该方向的导数为0。因此,DMA的设计通常是关于空位置的。对于双元线性DMA,当主瓣在末端发射时,只能控制一个空位置。这被称为一阶DMA。然而,即使只有一个空位置,改变位置也会产生一些有趣的模式。

首先,将null放在数组的侧面。这意味着我们需要计算一个权重向量,当结合末端火力和舷侧方向的转向向量时,分别生成单位响应和零响应。这样的权重向量可以用最小二乘法来推导。

Ang_d = 90;%纵向Ang_n = 0;%侧向Dd_f = dd./(c./f);w =复数(零(N,数字(f)));m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”);结束clf;模式(micarrayd f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

由此产生的图案具有偶极子的形状。请注意,所有频率的模式都是重叠的,因此它们在整个频带上是不变的。方向性现在是频率上的常数,如下图所示。

Dd =指向性(micarrayd,f,ang_d,“PropagationSpeed”c“重量”, w);clf;情节(f / 1 e3,弟弟,“o”);ylim ([0 5]);包含(的频率(赫兹));ylabel (“方向性(dBi)”);标题(双元线性DMA偶极方向性);

{

与麦克风阵列相关的另一个重要性能特征是它的信噪比(SNR)增益超过白噪声。

Agd =阶段性。ArrayGain (“SensorArray”micarrayd,“PropagationSpeed”c“WeightsInputPort”,真正的);WNGD = agd(f,ang_d,w);clf;情节(f / 1 e3, wngd“- *”);包含(的频率(赫兹));ylabel (白噪声增益(dB));标题(双元线性DMA偶极子信噪比增益);

{

从图中可以看出,该DMA在整个频率范围内的信噪比增益都低于0 dB,这意味着噪声被显著放大,特别是在低频区域。与加法阵列相比,这可能是与dma相关的最大问题。因此,工程师可能需要在更集中的波束(这有助于处理拥挤环境中的混响)和更高的接收信号信噪比之间做出权衡。

如果空值位于终火方向的另一端呢?

Ang_n = -90;%纵向m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”);结束模式(micarrayd f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

现在得到的图案是一条心线。你也可以把零放在-45度,以得到一个超心脏型。

Ang_n = -45;%纵向m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”);结束模式(micarrayd f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

WNGD = agd(f,ang_d,w);clf;情节(f / 1 e3, wngd“- *”);包含(的频率(赫兹));ylabel (白噪声增益(dB));标题(“2元线性DMA超心脏信噪比增益”);

{

注意,超心型比偶极子型提供更好的信噪比增益。

高阶线性DMA

你可能已经注意到,对于一阶线性dma,你可以指定一个零方向。一般来说,一个n元线性数组可以形成一个(N-1)-阶DMA,具有分配N-1个空值的能力。例如,对于一个四麦克风的三阶DMA,可以为超心型束模式设置3个空值。

N = 4;micarrayd3 = phase . ula (N,dd);Ang_d = 90;%纵向Ang_n = [0 -30 -90];% nullw =复数(零(N,数字(f)));m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”);结束模式(micarrayd3 f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

高阶DMA的信噪比增益仍然具有与一阶DMA相同的趋势。

Agd =阶段性。ArrayGain (“SensorArray”micarrayd3,“PropagationSpeed”c“WeightsInputPort”,真正的);WNGD = agd(f,ang_d,w);clf;情节(f / 1 e3, wngd“- *”);包含(的频率(赫兹));ylabel (白噪声增益(dB));标题(“4元线性DMA超心脏信噪比增益”);

{

也可以用多重性分配空值。下面是一个示例,您将-90度的null设置为2的倍数。

Ang_n = [0 -90 -90];% nullw =复数(零(N,数字(f)));m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”);结束模式(micarrayd3 f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

虽然默认DMA的末端主瓣在助听器应用中工作良好,但对于其他应用,如音条,它并不理想。在这些应用中,你可能会期望主波束或多或少地被引导到阵列的侧面。然而,尽管线性DMA可以被操纵,但与加法阵列相比,它有几个独特的特征:

  1. 转向牺牲了阵列的自由度。对于l阶线性DMA,您最多可以指定L-1个空值,其余空值由算法根据指定的空值位置选择。因此,一阶线性DMA是不可操纵的。

  2. 与加性阵列不同,线性DMA的波束形状在操纵时不会被保留。

下面的代码片段展示了如何引导线性DMA。在这种情况下,主梁转向舷侧。此外,一个null被放置在70度的侧面。剩余的空值由转向权重算法导出。

Ang_d = 0;%侧向Ang_n = 70;% nullw =复数(零(N,数字(f)));m = 1:元素个数(f) w(:,米)= diffbfweights (N, dd_f (m), ang_n,“ArrayGeometry”“乌拉”“SteerAngle”, ang_d);结束模式(micarrayd3 f 180:180 0“PropagationSpeed”c“重量”, w);

{“字符串”:“”,“它”:[],“乳胶”:[]}

请注意,主瓣现在朝向侧面。由于线性阵列的对称性,所得到的图案也具有等效的后瓣。在一些设计中,这可以通过采用带有小后瓣的麦克风元件来缓解。

总结

本例介绍了差分传声器阵列的基本概念。该示例演示了如何计算差分波束形成权值以形成许多经典的DMA波束形状,并比较了线性DMA与线性加性麦克风阵列的性能。阵列波束模式清楚地表明,DMA可以提供频率不变模式。该示例最后讨论了如何引导高阶线性DMA。

参考文献

[1]陈景东,潘超,线性微分传声器阵列的设计与实现,中国声学学报,2014年第6期,Vol. 136

Jacob Benesty,陈景东,潘超,微分波束形成基础,施普林格,2016。

[3]金吉鲁等,线性差分麦克风阵列的转向研究,IEEE/ACM语音与语言处理学报,第29卷,2021

Baidu
map