一套软件系统成功在 40 厘米半径内定位了一个隐藏的一氧化碳探测器,它将一系列家用设备——包括 iPad、一部手机、一台 MacBook Pro 和一部 Surface Ultra——转化为分布式麦克风阵列。该项目由 Simon Willison 使用 AI 编码代理开发,展示了声学三角定位如何在杂乱环境中解决实际问题,而无需手动搜索。
声学三角定位机制
Beep Locator 通过 Python Web 服务器协调多个“监听器”运行。每个在移动端或桌面端浏览器中运行的监听器都会记录 60 秒的音频缓冲,并使用快速傅里叶变换(FFT)和高通滤波器来检测潜在的蜂鸣声。
为了对齐这些录音,服务器会触发来自往返时间最短设备的简短“同步啁啾声”。随后,每个监听器都会上传一个以该啁啾声为中心的短片段(大约 0.6 秒到 0.8 秒),从而允许系统跨不同硬件时钟同步音频数据。
“它给出的蜂鸣声位置精度在 40 厘米以内,然后我翻找了那个特定的箱子堆,找到了一个急需更换电池的旧一氧化碳探测器。”
— Locating the source of a mysterious beep with Claude
校准与定位
由于移动设备具有不同的时钟漂移和音频延迟,该系统采用了受 2007 年“BeepBeep”论文启发的双向传感技术。设备互相播放啁啾声以建立相对位置,用户随后可以在“粗略模式”中通过拖动地图上的图标来优化这些位置。
校准完成后,系统会监听目标频率。当检测到蜂鸣声时,软件会计算整个阵列的到达时间差(TDOA)。然后,它使用网格搜索和 Gauss-Newton 算法来三角定位最可能的来源,并将结果作为二维地图上的阴影区域显示出来。

该界面提供了三角定位结果的视觉表示,显示了 40 厘米的精度以及每个麦克风的相对音量。
AI 辅助开发与实时更新
该项目是使用 Claude Code 开发的,其任务是解读“BeepBeep”研究论文以构建核心逻辑。一个重要的技术特性是“热交换”模块系统,它允许服务器自动向监听器推送新的 JavaScript 代码。
这种能力使开发者能够在无需手动刷新或重新配置房间中每个独立设备的情况下,不断迭代检测算法和 UI 功能——例如用于测试的“拍手模式”和“重新定位”按钮。
实际限制与精度
虽然该系统成功将搜索范围缩小到特定的箱子堆,但其精度受到设备初始放置位置和音频清晰度的影响。软件提供“音量变热/变冷”指示器,帮助用户了解哪些设备更靠近声源。
系统还能识别“物理上不可能”的到达时间,这有助于用户区分实际声源与声学反射或回声。通过将设备重新放置到软件建议的、能够“收窄”三角定位位置的区域,可以进一步提高精度。
Hacker News 读者的反应
- 替代方案: 一位评论者建议了一种更简单的物理方法,提议通过在房间之间移动箱子来隔离声源的二分搜索法。 评论 ↗
- 替代方案: 另一位用户指出,作为定位声音的高端硬件替代方案,存在专业的声学成像摄像机。 评论 ↗
以上为 Hacker News 讨论中观点的摘要,并非经过核实的事实。 阅读完整讨论 ↗