<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>聴覚拡張 on #たひメモ</title>
        <link>https://tahi314.work/tags/%E8%81%B4%E8%A6%9A%E6%8B%A1%E5%BC%B5/</link>
        <description>Recent content in 聴覚拡張 on #たひメモ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <copyright>Tahi314</copyright>
        <lastBuildDate>Mon, 04 May 2026 12:00:00 +0900</lastBuildDate><atom:link href="https://tahi314.work/tags/%E8%81%B4%E8%A6%9A%E6%8B%A1%E5%BC%B5/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>ビームフォーミング聴覚拡張デバイスを作りたい #1 — 冒険のはじまり</title>
        <link>https://tahi314.work/multichannel-usb-mic-overview/</link>
        <pubDate>Mon, 04 May 2026 12:00:00 +0900</pubDate>
        
        <guid>https://tahi314.work/multichannel-usb-mic-overview/</guid>
        <description>&lt;img src="https://tahi314.work/multichannel-usb-mic-overview/system-architecture.webp" alt="Featured image of post ビームフォーミング聴覚拡張デバイスを作りたい #1 — 冒険のはじまり" /&gt;&lt;p&gt;こんにちは、たひです。&lt;/p&gt;
&lt;p&gt;最近、個人プロジェクトで &lt;strong&gt;ウェアラブル聴覚拡張システム&lt;/strong&gt; を作っています。
カフェやパーティのような騒がしい環境で「話している人の声だけ」をクリアに聞き取るためのデバイスです。&lt;/p&gt;
&lt;p&gt;本記事はそのシリーズ第1回として、プロジェクト全体像を紹介します。
このあとの連載では中核ハードウェアである &lt;strong&gt;マルチチャンネルUSBマイク&lt;/strong&gt; の設計を、回路選定からドライバ実装まで順を追って書いていく予定です。&lt;/p&gt;
&lt;h2 id=&#34;なぜ作ろうと思ったか&#34;&gt;なぜ作ろうと思ったか
&lt;/h2&gt;&lt;p&gt;複数人で会話するとき、特に騒がしい場所だと「目の前の人の声」が周囲のノイズに紛れて聞き取れないことがあります。
特に &lt;strong&gt;同時に複数人が話す状況&lt;/strong&gt; では、人間の聴覚でも対象話者を選別するのは負荷が大きい作業です。&lt;/p&gt;
&lt;p&gt;最初は「ノイズキャンセリングイヤホンで何とかなるのでは？」と思っていたのですが、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ノイキャンは &lt;strong&gt;「全方向のノイズを下げる」&lt;/strong&gt; ものなので、話者の声も同時に減衰してしまう&lt;/li&gt;
&lt;li&gt;騒がしい場所では結局聞こえない&lt;/li&gt;
&lt;li&gt;補聴器系のデバイスは高価で、しかも「話者選別」までは踏み込んでいない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ということに気付き、&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;マイクアレイで &lt;strong&gt;指向性を絞り&lt;/strong&gt;、その方向だけを強調すればいけるのでは？&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;という発想で自作することにしました。&lt;/p&gt;
&lt;h2 id=&#34;何を作っているのか&#34;&gt;何を作っているのか
&lt;/h2&gt;&lt;p&gt;ざっくり言うと、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;複数のマイクを配置したセンサユニット&lt;/strong&gt; を頭部（メガネ側）に&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;顔検出と音源方向推定&lt;/strong&gt; でいま誰が話しているかを特定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ビームフォーミング&lt;/strong&gt; でその方向に指向性を絞り、他をカット&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ニューラルノイズリダクション&lt;/strong&gt; でさらにノイズを除去&lt;/li&gt;
&lt;li&gt;仕上がった音声を &lt;strong&gt;イヤホンに送って耳に届ける&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;という処理パイプラインです。&lt;/p&gt;
&lt;p&gt;構成は &lt;strong&gt;「センサユニット — 処理ユニット — イヤホン」の3ブロック&lt;/strong&gt; で、センサ側にカメラと多chマイクを載せ、USB-C 1本で処理ユニット（小型 SBC）に流し込み、最後は Bluetooth でイヤホンに飛ばします。&lt;/p&gt;
&lt;p&gt;実際の信号フローはこんな感じです。&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://tahi314.work/multichannel-usb-mic-overview/system-architecture.webp&#34;
	width=&#34;3135&#34;
	height=&#34;1775&#34;
	srcset=&#34;https://tahi314.work/multichannel-usb-mic-overview/system-architecture_hu_1292f0c6a531dc00.webp 480w, https://tahi314.work/multichannel-usb-mic-overview/system-architecture_hu_1650bca1c3c4efc9.webp 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;システムアーキテクチャ&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;176&#34;
		data-flex-basis=&#34;423px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;左側の &lt;strong&gt;LuckFox HAT が「マルチチャンネルUSBマイク」&lt;/strong&gt; にあたる部分で、MEMSマイク → CODEC → USB ガジェットというハードスタックになっています。本シリーズではこの左側のブロックを掘り下げていきます。&lt;/p&gt;
&lt;h2 id=&#34;なぜマルチチャンネルusbマイクを自作するのか&#34;&gt;なぜ「マルチチャンネルUSBマイク」を自作するのか
&lt;/h2&gt;&lt;p&gt;このシステムの肝は &lt;strong&gt;マイクアレイ&lt;/strong&gt; です。
ビームフォーミング（音の指向性制御）には少なくとも 4ch、できれば 6ch 以上のマイクが必要で、しかも各マイク間の &lt;strong&gt;位置関係が既知かつ正確に固定されている&lt;/strong&gt; 必要があります。&lt;/p&gt;
&lt;p&gt;「だったら市販のマイクアレイを使えばいいのでは？」と最初は考えました。Seeed Studio の &lt;strong&gt;reSpeaker&lt;/strong&gt; などは有名どころです。&lt;/p&gt;
&lt;p&gt;ただ実際に検証してみると、&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;形状の自由度が低い&lt;/strong&gt; — メガネフレームに沿った配置は不可能&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ホストインターフェースが固定&lt;/strong&gt; — 自分の処理パイプラインに繋ぎにくい&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マイクの素性&lt;/strong&gt; — SNR、AOP、位相マッチングが選定基準と合わない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;といった理由で、結局カスタム設計が必要になりました。&lt;/p&gt;
&lt;p&gt;要件をまとめると、&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;項目&lt;/th&gt;
          &lt;th&gt;要件&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;有効周波数下限&lt;/td&gt;
          &lt;td&gt;1kHz以下（母音の F0 を含む）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;空間エイリアシング上限&lt;/td&gt;
          &lt;td&gt;4kHz以上（子音帯域をカバー）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DoA推定精度&lt;/td&gt;
          &lt;td&gt;5°以下（話者分離に必要）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;チャンネル数&lt;/td&gt;
          &lt;td&gt;6〜8ch&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;総重量&lt;/td&gt;
          &lt;td&gt;マイク+基板で5g以下&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;消費電力&lt;/td&gt;
          &lt;td&gt;50mW以下（USBバスパワー動作）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ホストI/F&lt;/td&gt;
          &lt;td&gt;USB Audio Class 2.0（ドライバレス）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;これを満たす &lt;strong&gt;専用のマルチチャンネルUSBマイク&lt;/strong&gt; を、ハードウェアからファームウェアまで作っているのがこのプロジェクトです。&lt;/p&gt;
&lt;h2 id=&#34;ハードウェア構成&#34;&gt;ハードウェア構成
&lt;/h2&gt;&lt;p&gt;USB マイク部分のスタックは次のようになっています。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;役割&lt;/th&gt;
          &lt;th&gt;部品&lt;/th&gt;
          &lt;th&gt;備考&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;マイク（音響センサ）&lt;/td&gt;
          &lt;td&gt;Infineon &lt;strong&gt;IM72D128VV01&lt;/strong&gt; ×6&lt;/td&gt;
          &lt;td&gt;PDM出力、SNR 71.5dB(A)、AOP 128dB SPL&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;CODEC&lt;/td&gt;
          &lt;td&gt;Texas Instruments &lt;strong&gt;TLV320ADC5140&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;PDM 6ch 入力 → I2S TDM 8ch 出力&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ブリッジSoC&lt;/td&gt;
          &lt;td&gt;LuckFox &lt;strong&gt;Pico Ultra&lt;/strong&gt; (Rockchip RV1106G3)&lt;/td&gt;
          &lt;td&gt;Cortex-A7 + Linux、USB OTG&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;ホストI/F&lt;/td&gt;
          &lt;td&gt;USB-C / &lt;strong&gt;f_uac2 ガジェット&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;UAC2.0 Class、ドライバレスで認識&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;PDMマイク → ADC5140 で TDM にまとめ → RV1106 で受けて → USB Audio Class 2.0 でホストに流す、という構成です。&lt;/p&gt;
&lt;p&gt;ホスト側（NanoPC-T6, RK3588）は USB マイクとして見えるだけなので、特殊ドライバは不要です。
&lt;strong&gt;普通の Linux PC でも &lt;code&gt;arecord -D plughw:CARD=...&lt;/code&gt; で 8ch を取れる&lt;/strong&gt; ようになります。&lt;/p&gt;
&lt;h2 id=&#34;開発フェーズ&#34;&gt;開発フェーズ
&lt;/h2&gt;&lt;p&gt;このプロジェクトは段階的に進めています。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Phase&lt;/th&gt;
          &lt;th&gt;状態&lt;/th&gt;
          &lt;th&gt;内容&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Phase 1&lt;/td&gt;
          &lt;td&gt;完了&lt;/td&gt;
          &lt;td&gt;アルゴリズム検証（Windows）— ノイズリダクションと音源方向推定の PoC&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Phase 2&lt;/td&gt;
          &lt;td&gt;完了&lt;/td&gt;
          &lt;td&gt;エッジ検証（RK3588）— CPU/NPU 性能実測、顔追跡実装&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Phase 3.1&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;完了&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;LuckFox HAT 検証機 — UAC2パイプライン、C daemon、MVDR、LED、ASR&lt;/strong&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Phase 3.2&lt;/td&gt;
          &lt;td&gt;着手前&lt;/td&gt;
          &lt;td&gt;RV1106 カスタム基板 — 専用 PCB、骨伝導 VAD、TSE 話者分離&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;現状（2026-05時点）は &lt;strong&gt;Phase 3.1 完了&lt;/strong&gt; で、市販開発ボード（LuckFox Pico Ultra）の上に MEMS マイク基板を HAT として載せた検証機が動いている段階です。
ここまでで USB Audio Class 2.0 経由で 8ch 96kHz の音声が取れていて、ビームフォーミング・ニューラルノイズ除去・顔追跡・ASR まで一通り回っています。&lt;/p&gt;
&lt;h2 id=&#34;連載で書く予定の内容&#34;&gt;連載で書く予定の内容
&lt;/h2&gt;&lt;p&gt;このシリーズは USB マイク部分にフォーカスして、設計過程を順番に書いていきます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;#2: MEMS マイク選定とアレイ設計&lt;/strong&gt; — IM72D128 の選定理由、メガネフレームに沿った 6mic 配置、Directivity Index と SII（音声了解度指数）でのシミュレーション&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#3: TLV320ADC5140 まわり&lt;/strong&gt; — PDM 入力設定、I2S TDM 8ch 出力、Biquad HPF、ASI Master 動作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#4: RV1106 で USB Audio Class 2.0 を動かす&lt;/strong&gt; — &lt;code&gt;f_uac2&lt;/code&gt; ガジェット、カーネルパッチ、Device Tree Overlay、ブート初期化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;#5: 検証&lt;/strong&gt; — UAC2 安定性、ALSA タイミング、消費電流の実測&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;各回は独立して読めるように、必要な背景知識から書く予定です。&lt;/p&gt;
&lt;h2 id=&#34;ここまでで書きたかったこと&#34;&gt;ここまでで書きたかったこと
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;「特定の話者の声だけ強調する」ウェアラブルデバイスを作っている&lt;/li&gt;
&lt;li&gt;そのために &lt;strong&gt;多chカスタム USB マイク&lt;/strong&gt; が必要で、市販品では条件が合わなかった&lt;/li&gt;
&lt;li&gt;構成は &lt;strong&gt;MEMS x6 → ADC5140 → RV1106 → USB Audio Class 2.0&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;次回以降、それぞれを掘り下げていく&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ハードウェアからファームウェア、信号処理、機械学習まで横断する幅の広いネタですが、各回でなるべく &lt;strong&gt;設計判断の根拠&lt;/strong&gt; が伝わるように書ければと思っています。&lt;/p&gt;
&lt;p&gt;組み込みオーディオまわりに興味がある方の参考になれば嬉しいです。&lt;/p&gt;
&lt;h2 id=&#34;参考リンク&#34;&gt;参考リンク
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.seeedstudio.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;reSpeaker XVF3800 USB 4-Mic Array&lt;/a&gt; — 比較対象にした市販マイクアレイ&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.infineon.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Infineon IM72D128VV01&lt;/a&gt; — 採用 MEMS マイク&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.ti.com/product/TLV320ADC5140&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;TI TLV320ADC5140 Datasheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.luckfox.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;LuckFox Pico Ultra (RV1106)&lt;/a&gt; — ブリッジ用 SBC&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.usb.org/document-library/usb-audio-devices-rev-30-and-adopters-agreement&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;USB Audio Class 2.0 Specification&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
        </item>
        
    </channel>
</rss>
