想要一个USB微型麦克风阵列。可能吗?


13

我已经学习了很多有关自适应波束形成的知识,并且已经在MATLAB等各种模拟技术中摸索着。

但是,有什么比与整个系统一起玩的更好的理解方式(真正理解它)的呢?

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

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

麦克风在A / D等的比特分辨率方面不必花哨。质量可靠的KISS麦克风就可以了。

Answers:


8

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

有关以这种方式使用它的示例,请参见:Ubuntu Karmic上的PS3 Eye 4通道音频测试


1
@Mohammad如果您乐意将自己限制为四个频道,那么这可能是一个很好的解决方案。四个通道将为您提供约12dB的波束成形增益。不利的一面是,由于阵列的总范围很小,您将拥有很大的波束成形焦点:您无法分离过于靠近的声源。因此,此阵列的主要应用可能不是隔离声源,而是通过空间跟踪单个声源。即从声音中知道一个人站在哪里...
ARF 2012年

1
@ArikRaffaelFunke嗯,我对自适应波束形成的了解不足,无法知道焦点是什么。:-)但是我认为我仍然可以使用非瞬时ICA来分离来源。(实际上,我目前正在关注ICA)。此外,是的4并没有我所希望的那么...但这也许可以作为一个开始。.c–
Spacey

3

在自适应波束成形方面进行了广泛的工作之后,我真的会回避自己为之破解某些东西,直到有经验为止。(注意:大约60个通道的专业解决方案的成本约为10万欧元。在许多通道中,您的空间分辨率会提高很多,但是您只能通过USB端口获得有限的信息...)

为了获得可靠的波束成形,至关重要的是所有麦克风都使用相同的时基。最简单的方法是使用带有多个输入通道的外部USB声卡。那些并不是很便宜。您是否看过eBay上可以找到的内容?

另一种选择是通过使用多个USB声卡(例如每个具有两个通道)来牺牲公共时基。但是,您将需要校准采集系统。这确实没有听起来那么困难:

要进行校准,您需要设置阵列并在距阵列一定距离处发出短促的声音(例如,裂纹/拍击声等),大约是阵列范围的大小。然后,您可以录制此声音,并使用Matlab或类似方法计算拍手/裂纹/等之间的互相关。在不同的渠道上。这将为您提供一个时间偏移列表,您需要将这些时间偏移应用于通道以将它们对齐,然后再将数据输入到波束成形算法中。

要探索自适应波束成形,除非您可以在多通道声卡上讨价还价,否则这可能是解决之道。


编辑1

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

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

使用一组特定的延迟将声音对齐的空间点称为麦克风阵列(或焦点)的焦点。然而,实际上,焦点不是理想的点,而是声音对准的空间很小(取决于阵列)的小区域。该区域的大小称为焦点的大小。

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

有关更多信息,请查找有关在超声中聚焦“相控阵”或“线性阵”的文本。波束成形可用于接收(放大空间中某个特定点的信号)或发射(用于在房间中创建“响亮”点)。原理是相同的:在您的思考中,用“扬声器”代替“麦克风”。

关于校准程序:您是正确的。我概述的过程太简单了。仅当您可以在比您感兴趣的空间区域更长的距离内创建校准拍手时,它才能很好地工作。

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

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


谢谢阿里克。但是,我不确定为什么要在这里补偿时间延迟。例如,您知道某些自适应波束成形是“延迟与和”,因此它会自动处理时延问题。第二件事(我想这就是您的意思)是,我确实想要通用的时间同步。(即,按下一个按钮,所有麦克风都开始同时录音),但是我希望它们有共同的延时。
Spacey 2012年

我实际上在笔记本电脑中内置了一个麦克风阵列,我只是两个麦克风,但这可能是一个起点,但是我不知道如何以最小的麻烦分别实际访问他们的数据...
Spacey

@Mohammad-问题不是补偿已知的时间延迟,而是补偿未知的时间延迟。基本上,每个单独的USB声卡都会有一些处理时间,并且每个设备的处理时间可能会有所不同(在这种情况下,可以对其进行补偿),甚至可能因USB总线负载的不同而有所变化。
康纳·沃尔夫

@Mohammad FakeName所说的...为了使事情更清晰:任何波束成形的时基必须好于您要考虑的最高频率分量的一半。我相信,仅通过同时开始录制独立声卡就不可能实现这一目标。如果您有一个带有多个通道的声卡,情况会有所不同。
ARF 2012年

@ArikRaffaelFunke我明白您对校准的含义,我误解了您的说法。但是,我看不到如何从不常见的时基中删除时延,而又不经意地从通道中删除时延(您要保留)。唯一的方法是确保从拍手到每个麦克风的距离相同,但是对于线性阵列> 2来说这是不可能的。也许如果距离足够远(因此为平面波阵面),那不会太大吗?
Spacey 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.