>100 Views
October 21, 26
スライド概要
【大阪-ハイブリッド開催】XRミーティング 2026/10/21 #Xグラス #XRMTG ( https://osaka-driven-dev.connpass.com/event/407182/ ) 登壇資料。先月Preview版でFoundry Local For Androidが公開されました!
Android向けにローカルLLMを利用できるので、XRデバイス、XRグラスにオフラインで生成AIを会話してみた実験の話。
技術的な詳細はQiita記事:「Foundry Local for AndroidでXRデバイス5機種にオンデバイス音声アシスタントを載せてみた(Galaxy XR / Quest 3 / MiRZA / Even G2 / Rokid)」( https://qiita.com/miyaura/items/021fdfaddda92b6581bf )
Microsoft MVP for Microsoft Foundry, M365 XRやAIについての開発技術の調査、開発などを行っています。 また、大阪駆動開発コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
Foundry Local For AndroidがPreview公開されたので 手持ちのXRデバイスでローカルLLMやってみた 2026/10 XR ミーティング @takabrz1 Takahiro Miyaura
宮浦 恭弘 (Miyaura Takahiro) Microsoft MVP for M365,Microsoft Foundry 大阪駆動開発コミュニティに生息 HoloLens 日本販売してからxR 系技術に取組む( 過去Mixed Reality 領域でMicrosoft MVP 新しい技術や、XR関連の技術を調べたり、体験して日々技術を満喫 技術Tips : https://qiita.com/miyaura https://zenn.dev/miyaura 最近興味があって取り組んでいるもの ○ AndroidXR ○ 新しいガジェット(Even G2,MiRZA,Galaxy ○ Microsoft Foundry などのAI 技術 @takabrz1 ※よかったらこれを機にお知り合いになってください XR,etc …) 受賞)
本日のお話 XR デバイスでクラウドなしの音声アシスタントやってみる! ※ Foundry Local for Android とは ― 2 つのデプロイモード ※ SDK の基本 ― 初期化、チャット、文字起こし ※ 5機種で動かしてみた ― 構成と実測 ※ 実装・実行時のポイント ※ まとめ Galaxy XR / Meta Quest 3 / MiRZA / Even G2 / 2026/10 © 2026 Takahiro Miyaura Rokid Glasses の5機種すべてで動作 3
MicrosoftのローカルLLMは2本立て Windows 専用 Windows / macOS / Linux / Android Windows ML Foundry Local ※ Windows に組み込まれたMLの実行基盤 ※ EP をOS / Windows Update から取得 ※ NPU・GPU・CPUを使い分けて推論 ※ GGUF(llama.cpp )も実験対応 ※ アプリに組み込むランタイムとSDK ※ モデルはFoundry Catalog から取得 ※ Windows 版は内部でWindows ML を使う ※ Android 版が今日の話 Android にはWindows ML に当たる仕組みがない → v0.1.6 2026/10 © 2026 Takahiro Miyaura はCPUのみで推論 4
Foundry Local Microsoft が提供するローカルLLMの実行基盤 今日の話 PC サーバー モバイル Foundry Local (PC 版) Foundry Local on Azure Local Foundry Local for Android Windows / macOS / Linux のアプリに組み込む 自社のKubernetes 向けに推論 Azure 不要 Azure Arc モデルはMicrosoft Foundry のFoundry Catalog で複数ユーザー Android アプリに組み込むSDK 。 v0.1.6 Preview 、CPUで推論 で管理 Azure 不要 から取得 初回にダウンロードしてキャッシュ。推論は端末だけで完結し、プロンプトも結果も外に出ない ネットワーク遅延をなくしたい 閉域・オンプレでAI を使いたい 機密データを外に送れない 出典:What is Foundry Local? / What is Foundry Local on Azure Local? (Microsoft Learn 、参照2026 - 10 )
推論はアプリ内のCore APIとONNX Runtimeで完結 出典:Foundry Local architecture overview 2026/10 (Microsoft Learn © 2026 Takahiro Miyaura ) 6
Foundry Local for AndroidがPreviewで公開 アプリ(Kotlin ) 生成AI を端末上で動かすランタイムとSDK GitHub でv0.1.6 Preview Foundry Local SDK を公開(2026 - 10 時点) (AAR) Azure 不要:アカウントもAPI キーも要らない 端末のCPUで推論 プロンプトも結果も外に出ない Microsoft Learn には未掲載。 GitHub が一次情報 2026/10 Foundry との接点:モデルをFoundry Catalog から取得 推論:ダウンロード後は完全オフライン。ONNX Runtime で動く © 2026 Takahiro Miyaura 7
2つのモードはAPI共通、推論する場所が違う Embedded (アプリに同梱) IPC (Foundry ※ 推論エンジンをAPKに同梱 ※ 推論をAppに任せる ※ Google Play 不要:Quest 3 OK に任せる) ※ モデルはApp側 ※ APK約88MB(debug ) ※ APK約30MB ※ AAR:…- embedded - sdk ※ AAR:…- ipc - sdk XR デバイスでどちらを使えるかはGoogle Play 2026/10 Local App の有無で決まる。ほとんどのアプリはIPC が推奨 © 2026 Takahiro Miyaura 8
Android 13以上で動き、モデルはCPU用のみ 項目 内容 API レベル 最小33 (Android 13 配布 GitHub Releases API Kotlin カタログ 47 モデル、すべてCPU向け(NPU / GPU 版なし) 文字起こし Whisper (tiny 〜large - v3 - turbo )、Nemotron など チャット Qwen2.5 / Qwen3 v0.1.6 2026/10 )/ ターゲット36 のAAR(Embedded / IPC ) 、コルーチンベース(両モード共通) 、Phi - 4- mini 、gemma- 4など 時点。Preview のためAPI や挙動はリリースごとに変わる可能性あり © 2026 Takahiro Miyaura 9
SDKの基本 初期化 / モデル準備 / チャット / 文字起こし 2026/10 © 2026 Takahiro Miyaura 10
SDKの使い方は5ステップ 1 2 3 4 5 AARを組み込む libs/ に置きminSdk 33 、INTERNET 権限 Manager を作る 注意点 FoundryLocalManager.create() モデルを準備 カタログ → download → load ※ SDK は会話履歴を持たない チャット ※ ストリーミングは でストリーミング createChatClient 英語・スペイン語のみ 文字起こし createAudioClient にWAVを渡す Embedded / IPC 2026/10 ※ モデル名はリリースで変わる どちらでもコードは同じ。AARを差し替えるだけ © 2026 Takahiro Miyaura 11
日本語のライブ文字起こしのフロー マイクの音を発話ごとに切り出し、1発話ずつ渡す マイク 16kHz PCM VAD 発話を切り出す Whisper 文字起こし フィルタ 幻聴を捨てる Qwen2.5 1.5B で返事 ピンク枠がFoundry Local 2026/10 表示 パネル / グラス の推論。他はアプリ側で実装 切り出しと推論を分ける 話し始めを欠かさない Whisper の幻聴を捨てる 1つのスレッド上だと推論中にマイ クが止まり、遅延が大きくなってい くのでスレッド分離などを考慮 VADが発話を検出したら、その 300ms 前からPCMをためて1発 話にする 無音や雑音にも「( 拍手) 」など を返す。Rokid では手を叩くと 「( パンッ) 」。かっこだけの出力は 捨てる © 2026 Takahiro Miyaura 14
5機種で動かしてみた Galaxy XR / Quest 3 / MiRZA / Even G2 / Rokid 2026/10 © 2026 Takahiro Miyaura 15
推論はヘッドセット本体か、つないだスマホで マイクと表示先だけ機種ごとに実装 ヘッドセット本体で推論 ※ Galaxy XR スマホで推論、グラスは入出力 :Embedded / IPC ※ Meta Quest 3 ※ MiRZA :Unity アプリ(USB ) :Embedded のみ ※ Jetpack Compose の2Dアプリ ※ 両機種に同じAPK を入れる ※ Even G2 :WebView + 中継(BLE ) ※ Rokid :スマホ + 表示アプリ ※ スマホなのでIPC も使える 文字起こし・VAD・チャットの共通コアは1つ。5機種すべてで動作 2026/10 © 2026 Takahiro Miyaura 16
文字起こしは1〜2秒、グラス単体は約7秒 1発話の文字起こし時間(話し終わりから表示まで) Galaxy XR 返事(スマホで推論) 0.5 〜1.5 秒 1.4 秒 Qwen2.5 1.5B Meta Quest 3 1.7 秒 返事(ヘッドセット) MiRZA 1.0 秒 1〜6秒 Even G2 2.0 秒 Galaxy XR / Quest 3 Rokid 1.8 秒 Whisper small Rokid 単体 7.1 秒 の場合 3.7 〜5.2 秒 Galaxy XR 。本体はbase に Whisper :ヘッドセットはbase 、スマホはsmall 、Rokid 単体はtiny 2026/10 © 2026 Takahiro Miyaura 17
Galaxy XRはEmbedded・IPCの両方で動いた Jetpack Compose の2Dパネルアプリ 構成 推論:本体(XR2+ Gen 2 / 16GB ) モード:Embedded / IPC 入出力:本体マイク → 空間の2Dウィンドウ わかったこと ※ 6発話すべて取りこぼしなく文字起こし ※ 文字起こし約1.4 秒、返事1〜6秒 ※ Embedded とIPC で速度は同じ ※ 英語のNemotron は音声長の0.45 倍で処理 2026/10 © 2026 Takahiro Miyaura 18
Quest 3はGoogle PlayなしでもEmbeddedで動いた Galaxy XR と同じAPK をサイドロード 構成 推論:本体(XR2 Gen 2 / 8GB ) モード:Embedded のみ(IPC 不可) 入出力:本体マイク → 空間の2Dウィンドウ わかったこと ※ GMSなしでも初期化から推論まで動く ※ 文字起こし1.6 〜1.8 秒、返事1.6 〜3.4 秒 ※ 外すとスリープしてDL が止まる ※ 開発中はadb で近接センサーを無効化 2026/10 © 2026 Takahiro Miyaura 19
MiRZAはUnityからKotlinのSDKを呼ぶ AQUOS R9 で推論、グラスには返事を表示 構成 推論:スマホ(AQUOS R9 ) モード:Embedded 入出力:グラスのマイク(USB )→ グラス わかったこと ※ unity - bridge でUnity と相互に呼ぶ ※ 文字起こし0.8 〜1.1 秒、返事0.5 〜0.8 秒 ※ グラスのマイクはTYPE_IP として見える ※ ブリッジは他のUnity アプリにも流用できそう 2026/10 © 2026 Takahiro Miyaura 20
Even G2はWebViewから中継アプリへつなぐ ws://127.0.0.1 で同じスマホ内へ 構成 推論:スマホ(ROG Phone 9 Pro ) モード:Embedded / IPC 入出力:グラスのマイク(BLE )→ グラス わかったこと ※ Android 版にREST はなく、中継を自作 ※ whitelist にループバックを書けば通信できる ※ 画面が小さいのでmaxTokens = 80 に ※ 同じスマホに置くためAndroid 限定 2026/10 © 2026 Takahiro Miyaura 21
Rokidはスマホで推論し、グラスへUDPで送る グラスをBluetooth ヘッドセットとして録音 構成 推論:スマホ(ROG Phone 9 Pro ) モード:Embedded / IPC 入出力:マイク(SCO )→ 表示アプリ わかったこと ※ グラス本体はAndroid 12 ・RAM 2GB で対象外 ※ SCO は音が小さくVADの下限を40 に ※ 電話向けの音質で聞き間違いは多め ※ CXR SDK は使わずAudioManager で切替 2026/10 © 2026 Takahiro Miyaura 22
実験:Rokidグラス単体でも会話が動いた minSdk を外した、サポート外の方法 構成 推論:グラス本体(Android 12 ・2GB) モデル:whisper - tiny + qwen2.5 - 0.5b 時間:8秒の音声に7.1 秒、返事5.0 秒 わかったこと ※ overrideLibrary でminSdk 33 を回避 ※ 2モデル読み込み後の空きメモリは約220MB ※ VOICE_RECOGNITION は無音、MIC なら録れる ※ 将来の版で動く保証はなく製品には使わない 2026/10 © 2026 Takahiro Miyaura 23
つまずいたのはVAD、IPCの共有、初回通信 5機種で動かして見えたこと マイクの音量が機種ごとに違う 同時に使うとアプリごとに隔離 VAD IPC しきい値は機種ごとに調整 モデルを別々にダウンロード 初回だけはネット接続が必要 カタログ 未接続だと初期化に失敗 ※ 無音時の音量1 :Galaxy XR 15 〜30 、Rokid 0 〜1、Even G2 約170 ※ IPC は順番に使えばモデル1組で済む(約2.4GB ) ※ Embedded のキャッシュは端末間でコピーできる ※ エミュレーターでDL したモデルもarm64 実機で読める 1. 16bit PCM 2026/10 (最大32767 )の振幅のRMS値。単位なし。普通の声はGalaxy XR © 2026 Takahiro Miyaura で200 〜300 24
まとめ XR デバイスでもローカルLLMは使える ※ Android 版Foundry Local で、XR デバイス5機種すべてがクラウドなしで動いた ※ Embedded はGoogle Play のないQuest 3 でも動き、IPC とは速度が同じ ※ v0.1.6 はCPUのみ。ヘッドセットはWhisper base と1.5B が上限 ※ グラス型はスマホで推論すれば1〜2秒で文字起こし ※ 日本語のライブ文字起こしとVAD調整は自分で組む ひとこと NPUが使えれば、ヘッドセット単体でもっと大きなモデルを動かせるはず 2026/10 © 2026 Takahiro Miyaura 25
Qiita記事でも解説 Foundry Local for Android でXRデバイス5機種に オンデバイス音声アシスタントを載せてみた (Galaxy XR / Quest 3 / MiRZA / Even G2 / Rokid ) https://qiita.com/miyaura/items/021fdfaddda92b6581bf サンプルはGitHub で公開しています github.com/TakahiroMiyaura/FoundryLocalXR ※ AARは含まないのでlibs /fetch - sdk .ps1 で取得 ※ VAD・IPC の挙動・デバイス別コードは記事に詳細 記事はこちら 2026/10 © 2026 Takahiro Miyaura 26
参考リンク 記事 / サンプル ※ 本日の記事 qiita.com/miyaura/items/021fdfaddda92b6581bf ※ サンプル(FoundryLocalXR ) github.com/TakahiroMiyaura/FoundryLocalXR ※ Foundry Local for Android (SDK ・Releases ) github.com/microsoft/FoundryLocalAndroid 公式ドキュメント ※ Integration Guide / API Reference FoundryLocalAndroid/docs ※ IPC and Embedded Deployment Modes docs/IPC_AND_EMBEDDED_MODES.md ※ Foundry Local architecture overview learn.microsoft.com … foundry-local-architecture 2026/10 © 2026 Takahiro Miyaura 27
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ