在自适应波束成形方面进行了广泛的工作后,在我有一些经验之前,我真的会避免自己为此破解一些东西。(注意:具有大约 60 个通道的专业解决方案的成本约为 100k 欧元。使用许多通道,您的空间分辨率会变得更好,但您只能通过 USB 端口获得有限的信息量......)
为了实现可靠的波束成形,所有麦克风都必须使用相同的时基。实现这一点的最简单方法是使用具有多个输入通道的外部 USB 声卡。不过这些并不便宜。你有没有看过在 ebay 上可以找到什么?
另一种方法是通过使用多个 USB 声卡来牺牲公共时基,例如每个声卡有两个通道。但是,您需要校准采集系统。这实际上并不像听起来那么困难:
要进行校准,您需要设置阵列并在距阵列一定距离的范围内产生短促的声音(例如爆裂声/拍手声/等等)。然后,您记录此声音并使用 Matlab 或类似工具来计算拍手/破裂/等之间的互相关。在不同的频道。这将为您提供一个时间偏移列表,您需要将它们应用于您的通道以在将数据馈送到您的波束成形算法之前对齐它们。
要探索自适应波束成形,这可能是要走的路,除非您可以在多声道声卡上讨价还价。
编辑 1
此编辑是为了回答评论中提出的问题。
延迟和总和波束成形的基本思想是将延迟应用于不同的采集通道,以便在添加来自不同通道的信号时,来自空间中的一个点的声音对齐并“放大”。来自其他空间区域的声音不会对齐,因此不会“放大”。
声音使用特定延迟集对齐的空间点称为麦克风阵列的焦点(或焦点)。然而在现实中,焦点不是一个理想的点,而是一个小的(ish)(取决于阵列)声音对齐的空间区域。这个区域的大小称为焦点的大小。
几何形状(大小、形状等)取决于阵列的具体细节:麦克风数量、麦克风间距、感兴趣信号的频率内容。参见例如这篇文章。
有关更多信息,请查找有关在超声波中聚焦“相控阵”或“线性阵列”的文本。波束成形可用于接收(放大来自空间中某个点的信号)或发射(在房间中创建“响亮”点)。原理是一样的:只要在你的想法中用“扬声器”代替“麦克风”即可。
关于校准程序:你是对的。我概述的程序太简单了。仅当您可以从比您感兴趣的空间区域更长的距离创建校准拍手时,它才能很好地工作。(即确保平波。)
如果这是不可能的,你必须考虑拍手的位置。在这种情况下,最简单的过程是通过如上所述的互相关来校正延迟,然后通过应用“反向波束成形”延迟集来将波前的曲率加回到信号上,该延迟集是用原点位置计算的。拍。(即,如果您在“正常”波束成形算法中使用深度变量 +t0(或 +z0),则需要将 -t0(或 -z0)用于反向波束成形算法。)
这种校准的重点是什么:它消除了由于不同声卡在稍微不同的时间开始录制而导致的任何错误。即使有正确的延迟,这通常也会阻止信号正确对齐,从而阻止您正在寻找的放大效果。