概要
本作品は「その場所でしか聞くことができない音」を録音し、探索し、再生させるための装置です。
好きな場所で自由に音の標(しるべ)を立て、さらに音を導(しるべ)として録音された場所を辿ることもできます。
SPRESENSEの高精度な測位機能を活用することで実現しました。
主な機能は以下になります。
録音
- 音声データと録音場所の座標をクラウド(AWS)へアップロード
- 人の耳のモデルを介した「バイノーラル録音」
探索
- 探索開始地点から、最寄りの録音場所を探知
- GNSSとIMUを活用し、録音場所の方角と距離を算出
- ソナー音(バイノーラル)によって、録音場所まで案内
目的地からの距離に伴うソナー音パターン
| レベル | 目的地からの距離 | ソナー音 |
|---|---|---|
| 0 | 301M~ | デフォルト |
| 1 | ~300M | 「レベル0」×1.5倍速 |
| 2 | ~30M | 「レベル1」×1.5倍速 |
| 3 | ~15M | 「レベル2」×1.5倍速 |
| 4 | ~5M | 高音のソナー音に変化 |
再生
- 臨場感のある立体的な音像
- 近い録音場所の音声をまとめて再生 ※場所を起点に対話が可能
- 持ち手部分を回すことで音量を調整
使用方法
前提
- 野外で使用すること
- 有線イヤホン必須
- 通信状況により待機時間や位置検知の精度が変動
録音
- 「電源ボタン」をON
- 全ボタンの点滅が終わった後、点灯している「録音ボタン」を押下
- 音声等を録音
- 再度「録音ボタン」を押下することで録音が完了しデータが保存される
※「中断ボタン」押下で録音を中断(保存はされない)
※録音した音声は24時間探索・再生が不可
探索/再生
- 「電源ボタン」をON
- 全ボタンの点滅が終わった後、点灯している「探索」ボタンを押下
- ソナー音を頼りに録音場所へ移動
- 録音場所へ到着するとソナー音が変化
- 「再生ボタン」を押下で再生開始
※「中断ボタン」押下で探索を中断
※再生した音声は24時間探索・再生が不可
モード遷移フロー
分岐毎の挙動
| 分岐 | 条件 | 操作 | 結果 |
|---|---|---|---|
| a | 「ニュートラル」モードであること | 「録音ボタン」押下 | 録音開始 |
| a' | 「録音」モードであること | 「録音ボタン」押下 | 録音完了 |
| b | 「ニュートラル」モードであること | 「探索ボタン」押下 | 探索開始 |
| c | 「探索」モードであること、目的地に到着していること | 「再生ボタン」押下 | 再生開始 |
| x | - | 「中断ボタン」押下 | 実行中のモードを中断し「ニュートラル」モードに移行 |
モード毎の挙動
| モード | 効果音 | ボタン点灯パターン |
|---|---|---|
| ニュートラル | - | 録音ボタン:点灯 / 探索ボタン:点灯 |
| 録音 | - | 録音ボタン:点滅 / 中断ボタン:点灯 |
| 探索 | ソナー音 | 探索ボタン:点滅 / 中断ボタン:点灯 |
| 探索(目的地到着) | 目的地到着 | 探索ボタン:点滅 / 再生ボタン:点灯 / 中断ボタン:点灯 |
| 再生モード | 再生開始 | 再生ボタン:点滅 / 中断ボタン:点灯 |
※点灯:利用可能 / 点滅:実行中
筐体設計
3Dプリンターによる制作
制作物
- 本体×1
- カバー×1
- 基盤取付板×1
- 耳取付ジョイント×2
- 持ち手ジョイント×1
- ボリュームつまみ×1
- 持ち手×1
工夫点
- 音の録音に臨場感がでるよう筐体幅を頭幅にそろえ、耳の形状を再現
- 持ち手を3部材に分割することで、音量つまみの自由回転を実現
- 耳ジョイントを作成し、耳モデルの取り外しを容易に
- 耳ジョイントががたつかないよう微小な「かえし」を作成
電装・電気回路
- LTE拡張ボード[LM1]に、メインボード、マルチIMUアドオンボード、GNSSアドオンボードをスタック
- LTE拡張ボードを駆動に十分な出力容量を持つ薄型モバイルバッテリーを使用
- 小型実装可能なデジタルMEMSマイクを使用(LTE拡張ボードに必要な接続変更を実施)
- 操作系LED内蔵スイッチをGPIO、ボリュームをアナログ入力に接続
ソフトウェア
githubパブリックリポジトリ: https://github.com/HagTak/otoshirube
- SPRESENSE Arduinoライブラリを使用
- 工夫した点
- 大きな音声ファイルのアップロード、ダウンロードを行うため、Read / Writeを分割して処理するようにした
- 探索モード時の探索音の再生方法
- 目的地方向と距離を的確に知らせるため、頭部伝達関数を畳み込み12方向分(30°毎)×距離による音パターン3種=36種類の探索音をSDカードに内蔵し、それらから選択して再生
- 頭部伝達関数は、http://sound.media.mit.edu/resources/KEMAR/full.zip を使用
位置検知
GNSSナビゲーションの実装技術
SPRESENSE単体で正確なナビゲーションを実現するために、ハードウェア選定とソフトウェア実装の両面で最適化を行っています。
本項では、GNSS Navigation APIの実装において、技術的に重要視した4つのポイントについて解説します。
1. 高精度・高安定なセンサーハードウェアの選定
ナビゲーションの信頼性を確保するため、標準搭載の機能に加え、以下の産業用途向けアドオンボードを採用しました。
GNSSアドオンボード
Spresense本体の内蔵GNSSに加え、L1帯とL5帯の同時受信が可能なアドオンボードを使用しています。
ビル街や樹木下など、マルチパス(電波の乱反射)が発生しやすい環境においても、L5帯の信号を併用することで測位精度を維持し、
目的の座標を安定して特定できるようにしています。
マルチIMUアドオンボード
方位推定の安定化には、16個のMEMSセンサー(加速度・ジャイロ)を搭載したマルチIMUボードを採用しました。
単一のセンサーでは避けられないノイズやドリフト誤差を、16個のセンサーデータを用いた合成処理(アベレージング)によって低減させています。
これにより、移動中の微細な振動やふらつきの影響を抑えた、安定した挙動検知が可能となりました。
2. GNSS×IMUのセンサーフュージョンによる方位補正
地磁気センサー(電子コンパス)は、周囲の磁気環境(建物や電子機器)の影響を受けやすく、正しい方位を示さない場合があります。
これを解決するため、本システムでは 「移動ベクトルによる方位補正ロジック」を実装しています。
- 課題: 地磁気センサー単体では、環境要因により「北」の方角に誤差が生じる
- 解決策: ユーザーの移動時、GNSSから得られる「実際の進行方向(移動ベクトル)」と、IMUが示す「機首方位」を比較。
その差分をオフセット値として算出し、リアルタイムで補正
これにより、磁気干渉を受けやすい環境下でも、歩行し続けることで正しい方位へ収束するアルゴリズムとなっています。
3. POSIXスレッドを用いた非同期処理設計
Spresense(NuttX)のマルチスレッド機能を活用し、各処理を独立したスレッドで並列動作させています。
- GNSSスレッド: 測位データの受信と解析をバックグラウンドで実行し、最新座標を保持
- IMUスレッド: 60Hzの周期でセンサー値を取得し、フィルタリングと方位計算を継続
- メインスレッド: アプリケーションからの要求に対し、待機時間なしで最新の計算結果(座標・距離・角度)を返却
GNSSのデータ受信待ち等によるメイン処理のブロッキングを防ぎ、音声再生やUI操作のレスポンスを損なわない設計としています。
4. ナビゲーションに特化したAPI仕様
取得した緯度経度をそのまま返すのではなく、アプリケーション側で使いやすい形式に加工して出力するAPIを実装しました。
-
相対情報の算出:
現在地と目的地の座標から、大円距離(Haversine法)による「残り距離(m)」と、現在の進行方向に対する「回転角度(Turn Degree)」を内部で計算して返却し、アプリ側での計算負荷を軽減 -
時系列ソート機能 (API-3):
指定範囲内の音声データを検索する際、位置的な近さだけでなく「登録日時(Timestamp)」の昇順でソートして返却することで、「過去のデータから順に再生できるよう実装
AWSの構成
API Gateway / Lambda / DynamoDB / S3 の4つのサービスを組み合わせて構築されており、役割分担としては下記の構成になっています。
- API Gateway:外部からの HTTP リクエスト受付
- Lambda:アプリケーションの処理本体
- DynamoDB:音声に紐づく位置情報などのメタデータ保存
- S3:音声ファイル(mp3)の実体保存
メタデータの保存について
DynamoDBに保存しているのは以下のような 軽量なメタデータのみです。
これにより、近傍検索(指定地点から半径○m以内)を高速かつ低コストで実現しています。
- 取得日時
- 音声ID
- 緯度・経度
- レコード種別
その他工夫点
- DynamoDBのソートキーに緯度を格納
- Lambdaにて、クエリパラメータで指定された検索中心座標と半径に対応する緯度範囲でソートキーを検索し、その結果を緯度カラムでフィルタリング
※今後データ量が増えた場合、ソートキーを丸めた経度と緯度の組み合わせとすることで、低コストで大量データから読み取り可能
使用部品
最後に
子供の頃、街には市井の人のごく個人的なメッセージが溢れていたように思います。
駅の伝言板、喫茶店のお客様ノート、電話ボックスに貼られたメモ、あちこちに書かれたラクガキなど。
過去にその場にいた誰かがメッセージを残し、そこに自分が遭遇したという事実に、得も言われぬ高揚感を感じたものです。
ネットの普及によりそういったものは無くなりつつありますが、当時のワクワクを現実世界に復活したいと思い企画しました。
ソナー音を頼りに街や自然を歩き回り、誰かの声に辿り着いた時。
自分で録音した音声が、未来の同じ場所で再生され、返答が録音されていた時。
なんてことない言葉だったとしても、便利なSNSでは味わえない「かけがえのなさ」を感じられると思います。
今は世界に一台しか存在しませんが、もし様々な地域でたくさんの人々に利用されるようになれば、、
日常や旅先の景色が、より特別なものに感じられるはずです。
使用例
- 生まれ育った街の思い入れがある場所で、子供時代のエピソードを話してみよう
- 取り壊しが決まった建物の前で、そこでの思い出を振り返ってみよう
- お祭りの日に、普段とは違う街の環境音を録音してみよう
- 旅先で家族と一緒に、旅の感想を語り合ってみよう
- 仕事帰りに公園に寄り道し、ベンチに座って愚痴を吐いてみよう
- 「駅前のタバコ屋の横の路地を進んで突き当りを右に曲がり3つ目の電信柱の下で次の音声を再生しろ」という感じで謎解き感覚の道案内をしてみよう


-
TPN-Dev
さんが
2026/01/29
に
編集
をしました。
(メッセージ: 初版)
-
TPN-Dev
さんが
2026/01/29
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/29
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
-
TPN-Dev
さんが
2026/01/30
に
編集
をしました。
ログインしてコメントを投稿する