1 ポイント 投稿者 GN⁺ 2025-03-25 | 1件のコメント | WhatsAppで共有
  • Triforceは、Apple SiliconノートPCのマイクアレイをmacOS以外でも活用するための、Rustベースの適応型ビームフォーマー
  • 対応対象は M1/M2 MacBook Air・Pro 13"、M2 MacBook Air 15"、M1/M2 Pro・Max MacBook Pro 14"・16" に限定される
  • これらの機種の三角形または直線のマイクアレイは、ビームフォーミングなしでは感度が高すぎて全方位的なため、目的の信号を分離しにくい
  • 依存関係は、Cargo.lock に記載された crate 以外では LV2 のみが必要となるよう最小化を目指した構成
  • 現在の実装は Apple の実装を上回るとは期待しにくく、SIMD/NEON 非対応のため広帯域分解とステレオ出力には対応していない

Apple Siliconマイクアレイ向けビームフォーマー

  • Triforce は、Apple SiliconノートPCのマイクアレイ向けに Minimum Variance Distortionless Response 適応型ビームフォーマーを実装する
  • 対応デバイスは以下の通り
    • MacBook Pro 13" (M1/M2)
    • MacBook Air 13" (M1/M2)
    • MacBook Pro 14" (M1 Pro/Max, M2 Pro/Max)
    • MacBook Pro 16" (M1 Pro/Max, M2 Pro/Max)
    • MacBook Air 15" (M2)
  • 対象ノートPCのマイクアレイは三角形または直線の形で配置されている
  • このアレイはビームフォーミングなしで使うと感度が高すぎて全方位的に動作し、有用性が低いため、macOS以外で活用するにはビームフォーマーが必要
  • Cargo.lock に指定された crate 以外で追加に必要な依存関係は LV2

実装状況と既知の制限

  • DSP と広帯域適応型ビームフォーミングに関するアクセス可能な文献を見つけるのが難しく、現在の実装は学部1年レベルの工学数学と複数のWebページ・PDFから得た原理をもとにした試み
  • Apple の実装より性能が良いと期待するのは難しく、改善パッチは歓迎される
  • 既知の制限は以下の通り
    • nalgebra は明示的な SIMD 最適化を行わず、LLVM の自動ベクトル化に依存しているため、行列演算ルーチンの性能と効率が良くない
    • SIMD/NEON 対応なしではリアルタイムオーディオプラグインには遅すぎるため、広帯域分解は行わない
    • 出力はモノラルのみ対応で、疑似ステレオ出力のための追加行列処理は計算量が大きすぎる
  • crates.io の統計では、総ダウンロード数は 4,247回、公開済みバージョンは 7個

1件のコメント

 
GN⁺ 2025-03-25
Hacker News のコメント
  • 背景説明を含むブログ記事はこちら: https://asahilinux.org/2025/03/progress-report-6-14/#is-this...

  • 20年以上前に使っていた Toshiba Tablet PC コンバーチブルにはマイクのビームフォーミング配列があり、どこからの音を録音するか指定するソフトウェアも含まれていた
    講義の録音が主な用途で、ノートPCの後ろ側にいる教授の方向へビームを向け、その方向の音だけを録音するよう設定できた
    素晴らしいアイデアだったが、その後は見かけていない

    • ミニカムコーダー全盛期には、一部の Sony Handycam に「ズーム」マイクがあり、ビームフォーミングによってセンサーが見ている範囲とおおむね一致する範囲の音だけを集めるようにしていた
      これも優れたアイデアで、似た製品はいまでも出ている: https://electronics.sony.com/imaging/imaging-accessories/all...
    • 高級な ビデオ会議機器では広く使われている
      会議室のマイク配列が誰が話しているかを把握し、その人の音声を分離する
      大きな会議室でのビデオ会議では、昔から複数マイクのノイズが混ざらないよう、その時点で最も大きいマイクを選んで使っていたが、そこにビームフォーミングが入るとずっと良くなる
    • それがどう動作していたのか気になる
      マイクが本体ではなく画面の平面上にあったなら、「正面」と「真後ろ」を区別できなかったのではないかと思う
    • 何年も考えているだけで、計算資源が足りず試せていないアイデアがある: マイク配列と LIDAR を正解データとして使い、マイクデータの信号変換だけを条件にして、世界がどのような形をしているかを「想像」する拡散モデルを学習させること
      自動運転車が茂みの向こうの歩行者を「見たり」、接近する緊急車両をより早く検知したり、自転車が見える前に音で聞き取ったりするなど、いろいろ良い用途があるかもしれない
    • Samsung S10 以降は、ズームモードで動画を録画するときにこの機能がある
      いつもどう実装しているのか気になっていた
  • 結局完成させられなかった修士論文が似たテーマだった
    ほぼすべてのスマートフォンに少なくとも2つのマイクがあることを利用して、話者を 3次元で位置推定し、分離しようとしていた
    得た教訓はこうだ: デバイス間のサンプリングレートはわずかにずれており、おおむね毎秒±1サンプル程度で大きくはないが考慮する必要がある
    コンシューマー向けマイクのスペクトル特性はまちまちで、同じモデルの携帯電話を2台取り出しても、測定可能な差だけでなく聞いて分かる差まである
    音は、とりわけコンクリート壁を含め、あらゆる場所で反射する
    簡単にアクセスできるものの中では、車内が無響室に最も近い
    ガウス関数のフーリエ変換はガウス関数なので、音声のような高調波信号の周波数を推定する際、波長が窓長の半分より少し短い場合に非常に有用だ

    • 「車内が簡単にアクセスできるものの中で無響室に最も近い」という部分について、ある YouTuber は大きな何もない野原を見つけて無響室問題を解決していた記憶がある
      地面以外には反射するものがなく、実験対象の下にフォームを敷いていたかもしれない
      もちろん環境ノイズはなくせないが、自分の機材から出る反射を減らすにはかなりうまくいったそうだ
    • 服がぎっしり詰まった カーペット敷きのクローゼット のほうが車より良いのではないか
    • ガウス関数に関する部分は分かるが、その要点をもう少し詳しく説明してもらえるだろうか
  • Linux を Apple Silicon Mac で動かすには、一見些細に見える部分にもどれほど多くの作業が必要かを実感する
    ここで「些細」というのは最大限の敬意を込めた表現だ。内蔵マイクはヘッドセットを忘れてこない限り、ほとんど使わないからだ
    進捗報告(https://asahilinux.org/2025/03/progress-report-6-14/#is-this...)を引用すると、「それでも Apple だ。単純なものは何もない」

    • 内蔵マイクは実際に優秀で、AirPods Pro を装着していても音質がずっと良いので、しばしば内蔵マイクを使う
      別体のアームが付いたラップアラウンド型マイク付きヘッドホンならもっと良いかもしれないが、日常的なヘッドホンはマイクの位置のせいで限界がある
    • 私の経験とはまったく違う
      MBP マイク は優れたノイズ除去まであり、たいていのヘッドセットのブームマイクより好んで使えるものだった
      ガムを噛む音やコーヒーを飲む音のような不要な口元の音を拾いにくいという利点もある
      会議に参加している人の99%は、普通のヘッドホンと MBP マイクの組み合わせを使っているように感じる
      この構成の主な問題は、自分の声をヘッドホンで聞けないことだが、ノイズキャンセリングヘッドホンを使うと、ときどきかなり気になることがある
    • 製品として受け取ったパッケージ全体をそのまま使うなら単純ではある
      ただし Apple はしばらく前から、自分たちで整えた道からも外れつつある
      核心は、Apple が作るものすべてが 垂直統合 されている点だ
      AirDrop や Continuity のような機能を提供するには、スタック全体にまたがって実装する
      DIY ルート、つまり Asahi が実質的に目指している方式を選ぶなら、足りないソフトウェアのピースも自分たちで作らなければならない
      利点は、その作業の恩恵をエコシステム全体が受けられることだ。たとえば PipeWire の新しい DSP がそうだ
      PC ハードウェアは概していまひとつで、こうした追加コンポーネントを除けば Apple ハードウェアも同じだ
      しかし「パッケージ全体」はかなり高い基準を打ち立てており、自由なオープンソースエコシステムがその基準に到達する姿を見てみたい
    • 3マイク配列 は Intel ベースの Retina MacBook にもあるので、この作業はその旧型ハードウェアでの適切なオーディオ対応にも役立つ可能性がある
      初期の Retina MacBook Pro の一部は2マイク配列だけだが、大半は完全な3マイク配列を備えている
    • ほとんどのマイクがまだ Bluetooth 5.0 を使っているため、ヘッドセットを装着していても Mac のマイクを使う
      そうしないと非常に古い低ビットレートのコーデックモードに落ち、耳で聞く音声入力までひどくなる
      だから可能な限り、いつも Mac のマイクを使っている
  • 安価なノートPCハードウェアでも、もちろん MBP のような高級ハードウェアでも、ソフトウェアの DSP 手法で驚くほど良い結果が得られる
    Asahi のオーディオ作業のかなりの部分が、Mac だけでなく一般的なノートPCにもそのまま適用できる点が気に入っている
    すでに Asahi 向けに開発された Bankstown の低音高調波合成プラグインと畳み込みイコライザーを安価な HP ノートPCで使っているが、結果は驚くほど印象的だ
    これも Asahi 向けに開発された PipeWire プラグインチェーンの自動ロード機能を利用している
    この ビームフォーマーも Asahi エコシステムの外で使える場面がかなり多そうだ

  • SIMD 最適化に関しては、作者たちに faerを見てみてほしい
    基盤ライブラリである pulp は、線形代数の範囲を超える処理をしようとしたため、個人的には体験があまり良くなかったが、目的が主に線形代数演算の高速化ならよく合いそうだ
    Rust SIMD に関するブログ記事と関連ポッドキャストを準備中で、そこでこの内容を扱う予定だ
    [1]: https://docs.rs/faer/latest/faer/

  • GitHub リポジトリ: https://github.com/chadmed/triforce

  • 「次の Apple Silicon ノートPCに搭載されているマイク配列」として MacBook Pro 13" M1/M2、MacBook Air 13" M1/M2、MacBook Pro 14" M1 Pro/Max・M2 Pro/Max、MacBook Pro 16" M1 Pro/Max・M2 Pro/Max、MacBook Air 15" M2 を挙げているが、M2/M3 には似たマイク配列がないという意味なのか、それとも未テストという意味なのか気になる
    これが Linux でしかサポートされないのかも気になる
    macOS でも可能なのか、Apple がマイクごとの専用ストリームを提供しているのかはよく分からない

    • これは Asahi Linux 向けに作られたものだ
      macOS は内部で非常によく似たビームフォーミング計算を行い、ユーザーには単一の統合マイクとしてだけ見せている
    • 一覧には M2 デバイスが含まれている
      M3 は Asahi Linux がまだサポートしていないため、一覧にないことは M3 にこのようなマイクがあるかどうかとは別の問題だ
      macOS にはシステムの深い部分でこれを処理する独自ソフトウェアがあり、アプリケーションには通常のマイクとしてだけ露出する
    • Asahi Linux はまだ M3 と M4 プロセッサをサポートしていない
  • 最新の Asahi Linux 進捗報告に、より一般的な議論がある
    「残念ながら PDM マイクは非常に全指向性で、非常に感度が高い。何らかの形のビームフォーミングなしでは耐えられない」
    https://asahilinux.org/2025/03/progress-report-6-14/
    また、スピーカー出力のために以前行っていた作業の一部が、マイク入力にも再利用されたことが分かった
    「スピーカー対応のために PipeWire と WirePlumber に敷いておいた基盤のおかげで、Triforce を含む DSP チェーンをマイクに接続するのは本当に簡単だった。設定ファイルを更新して、残りは WirePlumber に任せるだけでよかった!」

  • 「スピーカーと同じく、Apple はここでも凝りすぎている」という文について、このパッケージの作者が意見を述べてくれたら本当に興味深い
    特に スピーカー実装についてどう考えているのか気になる
    何が過度に複雑なのか。ハードウェアなのか、ソフトウェアなのか?
    MBP ユーザーで趣味でオーディオを扱う立場としては、特に大きい MBP モデルのスピーカー実装は本当に印象的だった
    ただし私は趣味レベルで、ツイーターとデュアル・フォースキャンセリング・ウーファー構成以外は知らない
    小さなスピーカーからまともな性能と低音の伸びを引き出すために、「良い」Bluetooth スピーカー設計者が使う適応型イコライザーのような工夫を、Apple も使っているように見える

    • Asahi Linux でまともな スピーカーサポートを実現するのは大仕事だった
      問題の一つは、過熱を防ぐために電力使用を制限するには精巧な DSP が必要だという点だ
      それがないと、安全限界内で出せる音量は非常に限られる
      もっと知りたいなら、おそらくここが最も良い概要だ: https://github.com/AsahiLinux/asahi-audio
    • 「スピーカーと同じく Apple が凝りすぎている」というのは、Apple のノートPCスピーカーが競合製品よりはるかに先を行っているという意味に見える
      これは何世代にもわたって事実だった
      2014年モデルの MBP を使っていたときも、移動中に映画を見ると友人たちが音に驚いていた
      M4 MBP も同様で、スピーカー音質は実際には必要以上と言えるほどのレベルだ
    • 価値判断なしに推測すると、そのようなソフトウェアなしでは正しく動作しないという点を指しているのだと思う
    • このパッケージは、ノートPCで Linux ディストリビューションを使いながら、ネイティブ macOS と同じ機能を利用したい人のためのもののようだ
    • 私も混乱している
      最近は、少なくともプレミアムハードウェアでは、スピーカーの「空間オーディオ」とビームフォーミングマイクが標準のように感じられ始めている
      こもっていて、うるさく、窮屈で、バランスの悪いオーディオは、もはや通用しない