想要一个 USB 迷你麦克风阵列。可能吗?

电器工程 USB 声音的 麦克风
2022-01-04 03:00:53

我一直在学习很多关于自适应波束形成的知识,并且一直在使用 MATLAB 等中的各种模拟程序。

但是,有什么比玩整个系统更好的方式来理解——真正理解它?

为此,我想找到(构建?)一个 USB 连接的麦克风阵列,比如 5 个左右的麦克风。他们将能够从环境(也就是我的笔记本电脑所在的任何地方)获取信号,然后我将能够获取这些信号并在 MATLAB 或其他任何工具中处理它们。

我真的不想构建整个东西,所以我希望有人过去已经使用过 USB 连接的麦克风阵列,并且可以指出正确的方向?

就其 A/D 等的位分辨率而言,麦克风不需要任何花哨的东西。质量可观的 KISS 麦克风就可以了。

2个回答

Playstation Eye摄像机具有 4 元素线性麦克风阵列它提供 48 KHz 的 16 位样本,SNR 为 90 dB。它易于使用:它枚举为具有四个独立通道的标准 USB 音频设备。

有关以这种方式使用它的示例,请参阅:PS3 Eye 4-channel Audio Tests on Ubuntu Karmic

在自适应波束成形方面进行了广泛的工作后,在我有一些经验之前,我真的会避免自己为此破解一些东西。(注意:具有大约 60 个通道的专业解决方案的成本约为 100k 欧元。使用许多通道,您的空间分辨率会变得更好,但您只能通过 USB 端口获得有限的信息量......)

为了实现可靠的波束成形,所有麦克风都必须使用相同的时基。实现这一点的最简单方法是使用具有多个输入通道的外部 USB 声卡。不过这些并不便宜。你有没有看过在 ebay 上可以找到什么?

另一种方法是通过使用多个 USB 声卡来牺牲公共时基,例如每个声卡有两个通道。但是,您需要校准采集系统。这实际上并不像听起来那么困难:

要进行校准,您需要设置阵列并在距阵列一定距离的范围内产生短促的声音(例如爆裂声/拍手声/等等)。然后,您记录此声音并使用 Matlab 或类似工具来计算拍手/破裂/等之间的互相关。在不同的频道。这将为您提供一个时间偏移列表,您需要将它们应用于您的通道以在将数据馈送到您的波束成形算法之前对齐它们。

要探索自适应波束成形,这可能是要走的路,除非您可以在多声道声卡上讨价还价。


编辑 1

此编辑是为了回答评论中提出的问题。

延迟和总和波束成形的基本思想是将延迟应用于不同的采集通道,以便在添加来自不同通道的信号时,来自空间中的一个点的声音对齐并“放大”。来自其他空间区域的声音不会对齐,因此不会“放大”。

声音使用特定延迟集对齐的空间点称为麦克风阵列的焦点(或焦点)。然而在现实中,焦点不是一个理想的点,而是一个小的(ish)(取决于阵列)声音对齐的空间区域。这个区域的大小称为焦点的大小。

几何形状(大小、形状等)取决于阵列的具体细节:麦克风数量、麦克风间距、感兴趣信号的频率内容。参见例如这篇文章

有关更多信息,请查找有关在超声波中聚焦“相控阵”或“线性阵列”的文本。波束成形可用于接收(放大来自空间中某个点的信号)或发射(在房间中创建“响亮”点)。原理是一样的:只要在你的想法中用“扬声器”代替“麦克风”即可。

关于校准程序:你是对的。我概述的程序太简单了。仅当您可以从比您感兴趣的空间区域更长的距离创建校准拍手时,它才能很好地工作。(即确保平波。)

如果这是不可能的,你必须考虑拍手的位置。在这种情况下,最简单的过程是通过如上所述的互相关来校正延迟,然后通过应用“反向波束成形”延迟集来将波前的曲率加回到信号上,该延迟集是用原点位置计算的。拍。(即,如果您在“正常”波束成形算法中使用深度变量 +t0(或 +z0),则需要将 -t0(或 -z0)用于反向波束成形算法。)

这种校准的重点是什么:它消除了由于不同声卡在稍微不同的时间开始录制而导致的任何错误。即使有正确的延迟,这通常也会阻止信号正确对齐,从而阻止您正在寻找的放大效果。