我有记录声音的麦克风阵列。有一个我知道方向的主要声音和背景中的一些噪音。现在我想有选择地放大来自已知方向的声音。这看起来像是天线信号波束成形的反向问题。我试图在互联网上找到一些关于如何做到这一点的信息,但只有我找到的信息告诉我需要从麦克风转移声音信号。但维基百科说它只适用于窄带信号,而我的信号会比单窦更复杂。
我试图在互联网上搜索波束成形,但我发现的只是电磁波和天线。是否有一些已知的方法来解决这个问题?
我有记录声音的麦克风阵列。有一个我知道方向的主要声音和背景中的一些噪音。现在我想有选择地放大来自已知方向的声音。这看起来像是天线信号波束成形的反向问题。我试图在互联网上找到一些关于如何做到这一点的信息,但只有我找到的信息告诉我需要从麦克风转移声音信号。但维基百科说它只适用于窄带信号,而我的信号会比单窦更复杂。
我试图在互联网上搜索波束成形,但我发现的只是电磁波和天线。是否有一些已知的方法来解决这个问题?
我刚刚查看了有关波束成形的 Wikipedia 文章,我可以理解您的困惑。它试图一次解释太多。还有一些命名问题,MUSIC 是一种测向技术。它不会形成字面意义上的光束。
不幸的是,许多文章和书籍都是由了解该材料的人为了解该材料的其他人撰写的。
您还应该知道,对于许多音频情况,波束成形并不总是甚至是实用的解决方案。猎枪式麦克风或抛物面反射器通常是很好的且可能更便宜的解决方案。研究鸟鸣的人倾向于使用这些。
除了您已知的方向之外,您还需要知道麦克风的位置。
最简单的波束形成方法是将所有麦克风放置在与要放大的源方向垂直的平面上,然后将所有麦克风的输出相加。这是基于源距离足够远的假设,因此您可以忽略波前的曲率。这个假设依赖于源可以被认为是一个点发射器的假设。
另一种说法是,从源到每个麦克风的声学延迟时间是相同的。维基百科的文章使用建设性干扰一词来表达同样的意思。
如果无法将麦克风定位在相干波前,则在每个麦克风中引入延迟,以便每个相加的麦克风在相干相加时具有相同的声学距离传播时间。这种延迟的引入可以是非常普遍的,并且允许阵列连贯地将来自许多选定方向的声音相加。既然你说你有录音,这是你的任务。
每个麦克风都应该与您的音源有清晰的视线。麦克风通常也具有方向响应,因此它也有助于将每个麦克风指向源。不能通过引入延迟来补偿每个麦克风的个别方向性。实际上,很多关于阵列的材料都做出了不切实际的假设,即每个麦克风都具有全向响应。
正如我所描述的,有许多影响使传统的延迟和和波束成形复杂化。源声音可以从多个方向到达阵列,称为多路径。在这种情况下,信号会对其自身造成破坏性干扰。房间内有很多潜在的多路径。该源不能被认为是简单的点源。这些只是一些并发症。
您可以有另一个响亮的声源撞击阵列,因此即使没有连贯地求和,仍然会干扰感兴趣的声源。处理这种情况的方法是将第二个波束引向该声源,并明智地从感兴趣的声音中减去它的声音。有一整篇关于最佳波束成形的文献可以处理这种情况。
总而言之,波束成形可能值得也可能不值得。它需要专门的硬件,例如同步多通道模数转换器。
与猎枪式麦克风相比,它并不便宜。通常会进行波束成形,因为没有其他可能。
首先假设介质是均匀的——这意味着传感器之间的到达时间延迟对于所有感兴趣的频率都是恒定的(在感兴趣的带宽上)。现在要对这些信号进行波束形成,您需要实现一个真正的延时波束形成器。这些可以在时域和频域中实现。一个常见的例子是无源声纳阵列。感兴趣的带宽通常在 0Hz - 8 KHz 范围内。水中的声速标称为 1500 m/s(它随温度、盐度和压力/深度而变化)。请注意,该阵列通常具有不均匀的传感器间距以满足空间采样要求,即间距。时间延迟波束形成的一个很好的参考是 Neilson 的“声纳信号处理”。在许多文本中,他们将此称为宽带波束成形,并且通常在传感器上具有抽头延迟线滤波器。该滤波器的目标是近似将来自不同传感器的信号相干地求和以实现增益/放大所需的时间延迟。
实现真正的时延波束形成的一种常见方法是对信号进行上采样,因此您可以直接形成时延。不幸的是,这通常意味着您需要以比通常的奈奎斯特要求高 10 倍(或更高)的速率进行采样。您需要的采样率取决于您想要的保真度。另一种常见的替代方法是上采样 3 倍左右,然后使用样条插值来实现所需的时间延迟。使用更高的初始上采样因子将导致更好的波束成形性能,但代价是增加了计算要求。
现在,在一些带宽相对于中心频率很窄的系统中。您可以用相移代替时间延迟。这些通常称为窄带波束形成器实现。如果信号带宽增加,则相移的使用变得不太合适,性能也会受到影响。
在介质是分散的情况下,传播时间延迟会随着感兴趣的带宽而变化。现在,您用来实现的滤波器必须补偿不同频率下的不同时间延迟。这通常非常困难,因为您通常事先不知道时间延迟。
我相信你已经有了两个相当不错的答案,所以我将把它们加起来。当您录制信号时(如 Stanley Pawlukiewicz 提到的),您可以在录制后执行“波束成形过程”,这很常见。正如 Stanley 和 David 所提到的,您可以使用延迟和求和波束形成器或更“高级”的波束形成器(如Capon/MVDR或 LCMV),它们的设计方式可以使它们产生零点(或深陷波)在干扰的方向上(如果这是恒定的并且当然是已知的)(有关更多信息,您可以查看例如Van Trees 的Optimum Array Processing)。
另外,正如 Stanley 正确提到的那样,您不能使用子空间技术(例如MUSIC)来形成波束,但您可以很好地使用它们来找到您正在寻找的声音的方向(并使整个过程自动化),因为它们倾向于在到达方向估计方面,它比波束形成器具有更高的精度。
由于您不必实际实施用于后处理的硬件系统,我相信软件解决方案将是一个非常可行的解决方案。您可以通过自己编程或使用现成的包和库来轻松实现这一点(对于许多编程语言,如python、 C++和MATLAB包括很多编程语言,Marcus Müller 在他的评论中也提到)。