ソフトウェアシステムにより、iPad、スマートフォン、MacBook Pro、Surface Ultraを含む一連の家庭用デバイスを分散型マイクアレイに変えることで、40cm以内の範囲にある隠れた一酸化炭素警報器を特定することに成功しました。Simon WillisonによってAIコーディングエージェントを使用して開発されたこのプロジェクトは、音響三角測量が、手動で探索することなく、散らかった環境における実用的な問題をどのように解決できるかを示しています。

音響三角測量の仕組み

Beep Locatorは、Pythonウェブサーバーを介して複数の「リスナー」を調整することで動作します。モバイルまたはデスクトップのブラウザで実行される各リスナーは、60秒間のオーディオバッファを記録し、高速フーリエ変換(FFT)とハイパスフィルターを使用して、潜在的なビープ音を検出します。

これらの録音を整列させるために、サーバーは往復時間が最も短いデバイスから短い「同期チャープ音」をトリガーします。その後、すべてのリスナーはそのチャープ音を中心とした短いクリップ(約0.6秒から0.8秒)をアップロードし、システムは異なるハードウェアクロック間でオーディオデータを同期させます。

「このシステムによって、ビープ音の位置を約40cm以内の範囲で特定することができました。その後、その特定の箱の山をかき分けて、電池交換を切望している古い一酸化炭素警報器を見つけました。」

— Locating the source of a mysterious beep with Claude

キャリブレーションと位置特定

モバイルデバイスにはそれぞれ異なるクロックのドリフトやオーディオの遅延があるため、システムは2007年の「BeepBeep」論文にインスパイアされた双方向センシング技術を使用します。デバイスは互いにチャープ音を鳴らして相対的な位置を確立し、ユーザーは地図上のアイコンをドラッグすることで「Roughモード」で位置を微調整できます。

キャリブレーションが完了すると、システムはターゲットの周波数を監視します。ビープ音が検出されると、ソフトウェアはアレイ全体にわたる到達時間差(TDOA)を計算します。その後、グリッド探索とガウス・ニュートン法を使用して最も可能性の高い音源を三角測量し、その結果を2Dマップ上の網掛け領域として表示します。

グリッド状のマップ、5つのデバイスを色付きのドットで表示し、謎のビープ音の位置をピンクの網掛けの円で示したウェブアプリケーションのインターフェース。
Beep Locatorのインターフェースは、三角測量された音の位置と、各デバイスの「温かい/冷たい」音量インジケーターを表示する2Dマップを表示します。simonwillison.net

インターフェースは三角測量の結果を視覚的に表現し、40cmの精度と各マイクの相対的な音量を表示します。

AI支援による開発とリアルタイム更新

このプロジェクトはClaude Codeを使用して開発され、コアロジックを構築するために「BeepBeep」の研究論文を解釈するタスクを割り当てました。重要な技術的特徴は「ホットスワップ」モジュールシステムであり、サーバーがリスナーに新しいJavaScriptコードを自動的にプッシュすることを可能にします。

この機能により、開発者は、部屋にある各デバイスを手動でリフレッシュしたり再構成したりすることなく、検出アルゴリズムや、テスト用の「クラッピングモード」、および「再配置」ボタンなどのUI機能を反復的に改善することができました。

実用的な限界と精度

システムは検索範囲を特定の箱の山まで絞り込むことに成功しましたが、その精度はデバイスの初期配置やオーディオの明瞭度に影響を受けます。ソフトウェアは「音量の温かい/冷たい」インジケーターを提供し、ユーザーがどのデバイスが音源に近いかを把握するのを助けます。

システムはまた、「物理的に不可能な」到達時間を特定することもでき、これによりユーザーは実際の音源と音響的な反射やエコーを区別することができます。ソフトウェアが三角測量された位置を「絞り込む」と提案するエリアにデバイスを再配置することで、さらなる精度を高めることが可能です。

Hacker Newsの読者の反応

  • 代替案: あるコメント投稿者は、より単純な物理的アプローチを提案し、音源を特定するために箱を部屋の間で移動させるバイナリサーチ手法を提案しました。 コメント ↗
  • 代替案: 別のユーザーは、音を特定するためのハイエンドなハードウェアの代替手段として、プロ仕様の音響イメージングカメラが存在することを指摘しました。 コメント ↗

Hacker Newsのスレッドで出た意見の要約です。事実として検証されたものではありません。 議論の全文を読む ↗