我有四个麦克风,我想用它们来定位音频源的方向。是否有任何 Python 模块实现算法,给定四个麦克风的录音,会给我一个指向音频源/角度的向量?提前致谢
声源位置
我希望我可以说有两种不同的方法来确定源相对于阵列的某个相位中心的方向,但那是不正确的。
首先,我不认为有一个 Python 模块可以做到这一点,因为没有完全通用的算法。
已经说过没有 2 类通用算法,我将忽略我刚才所说的。有波束形成和互相关。
波束成形寻求使用相干增益来确定方向。
互相关旨在确定传感器之间的相对延迟,然后选择最佳解决方案。
这两个类别都基于这样的原理,即传播波可以用波前来描述,波前是固定相的 3 维或 2 维表面。在均匀的 3 d 自由空间中,点源的波前由膨胀的球体组成,其中振幅下降为. 离点源足够远,波前足够平坦以呈现平面波。
所以在一个真正的问题中,你必须对传播的波前做出一些假设。我们也可以在源附近有非辐射场分量。
最典型的标准方法是假设来自点源的平面波撞击您的传感器。还有其他类型的假设可以做出,例如近点源具有一定曲率的波前,但您只有 4 个传感器。
在波束成形中,我们基于假设来自某个方向的每个接收到的信号应用一组延迟,然后将它们叠加起来并求和。来自正确方向的延迟集合将产生最大的相干增益。这意味着您必须为很多建议的方向形成大量的光束。偏离一点意味着估计的方向也会偏离一点。实时波束成形是昂贵的。老式雷达通过使用旋转抛物面天线进行扫描解决了这个问题。在 SONAR 中,旋转抛物线在机械上是不可取的,形成多波束是更好的方法。
互相关方法在延迟之后进行,但您必须完成所有配对,然后您需要确定哪个方向产生了这些延迟。
有一种叫做分裂孔径波束形成的东西,它是两者的结合。
当您有多个来源时,基本想法大多是成立的,但有些问题最好留给一本书或 2 或 10 本书。
如果您的传感器靠得太近,就会出现问题。
如果您的资源是分布式的,一些调整会有所帮助。
这些问题的一个很好的方面是贝塞尔傅里叶关系,因为就像时间上的傅里叶级数一样,时间频率上的任意波前可以用平面波的总和来描述。
有大量关于测向的文献。我有时想知道是否有比实际数组更多的论文,但随着时间的推移,这种情况越来越不真实(实际上并非如此)。