-- Views
September 09, 26
スライド概要
【大阪】KANSAI AI PUB(関西×人工知能×場)2026/09/09 #AIMTG( https://deep-learning-osaka.connpass.com/event/403630/ )登壇資料。
Stack ChanをインターフェースデバイスとしてMicrosoft Foundry上のエージェントをVoice Live APIを利用して対話する実験をした話。Foundry上のエージェントを呼び出すためEntraIDについてはDevice code flowを利用。
Githubサンプル
https://github.com/TakahiroMiyaura/stackchan-foundry-sample
Qiita記事
https://qiita.com/miyaura/items/65280103af6991ca944c
Microsoft MVP for Microsoft Foundry, M365 XRやAIについての開発技術の調査、開発などを行っています。 また、大阪駆動開発コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
Stack Chan を使って Microsoft Foundry のエージェントを喋らせる 2026/09 AI ミーティング @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 …) 受賞)
本日のお話 Stack Chan 単体でエージェントと会話させるまで ※ Stack Chan と Voice Live API ― まずはデモと全体構成 ※ エージェントに繋ぐ ― REST ※ Function Calling での作成と Entra ID 認証 でカメラを使う ― 撮影を要求されたら撮る ※ 実機で詰まった話 ― リージョンと帯域 ※ まとめ キーボードの無いデバイスから、Entra ID 2026/09 認証を通してエージェントと会話し、口まで動かす © 2026 Takahiro Miyaura 3
Stack chan とは M5Stack シリーズの製品の1つで 「顔」にした手のせサイズの卓上ロボット 設計・ソフトすべてがオープンソースで公開され、誰でも作れる ※ ハード:M5Stack Core S3 + サーボ2軸で首振り、3Dプリント筐体 ※ ソフト:M5Unified ・Avatar で表情と音声を制御、 Arduino / PlatformIO で開発 ※ 拡張性:LLM や音声 API と接続すれば、対話するエー ジェントの「身体」になる Stack 2026/09 chan (スタックチャン) © 2026 Takahiro Miyaura 4
Microsoft Foundry The AI app and agent factory Azure 上で提供されるAI エージェントの開発、運用を管理するプラットフォーム Models Agent Service IQ Tools Machine Learning Control Plane Cloud Edge Security, compliance, and governance 引用: Microsoft.Let your agentic apps talk with Azure Speech.Microsoft Ignite 2025.2025,11,p.3.https://ignite.microsoft.com/ en - US/sessions/BRK198, (参照 2026 - 01 - 21 ).
Foundry Tools – Voice Live AIモデルやエージェントをリアルタイム音声会話で利用 日常対話はモデル、複雑タスクはAgent に委任 Agent 呼出 Microsoft Foundry でエージェントを定義 音声 ユーザ Voice Live Foundry Agent Service Agent 呼出 SDK(API) 応答 リアルタイムAI モデル 基本対話を担当 応答 音声応答 モデル呼出 モデル呼出時 プロンプト、ツール、MCPの 設定も渡せる 2026/09 © 2026 Takahiro Miyaura Foundry Models Phi4,… 6
まず、動いているところを タップで会話モードに入り、話しかけると喋る(口も動く) Foundry のトレース画面 ※ 話しかけるとエージェントが応答 ※ 応答音声に合わせて口が動く ※ カメラで撮影もできる! 2026/09 © 2026 Takahiro Miyaura 7
今回の全体構成 Stack Chan CoreS3 / ESP32 - S3 ・顔 : m5stack - avatar ・マイク / スピーカー ・カメラ : esp32 - camera ・タッチで会話開始 音声 PCM16 16kHz + 画像 input_image 応答音声 + viseme_id audio_offset_ms 口パクは Voice Live が返す viseme_id カメラは look_at_camera を function 2026/09 Microsoft Foundry Voice Live API 音声認識・生成AI ・合成を 1 本の WS に統合 Foundry Agent Service instructions と tools ・look_at_camera ・web_search を開口率に写像して実現(実装の詳細は過去記事で解説) ツールとして定義 ― 呼ぶのはエージェント、撮るのはデバイス © 2026 Takahiro Miyaura 8
エージェントに繋ぐ REST での作成 / Entra ID 2026/09 認証 / カメラ連携 © 2026 Takahiro Miyaura 9
接続 URL と Entra ID 認証 キーボードの無い端末で、どうやってサインインするか 接続 URL ※ wss://{host}/voice live/realtime agent - project device code flow に agent - name と - name を付ける ※ トークンは Authorization す ヘッダで渡 - name はプロジェクト 名。リソース名を入れると agent_not_found ※ agent - project 2026/09 ※ 未認証で起動したらコードを顔(吹き出 し)に表示 ※ PC やスマホの microsoft.com/devicelogin 承認してもらう で は NVS に保存。2 回目以降は起動時に無言で更新 ※ refresh token © 2026 Takahiro Miyaura 11
「今なにが見える?」と聞かれたら撮る 1 2 3 4 5 ユーザー 「今なにが見える? 」と聞く エージェント look_at_camera を呼ぶ(function_call ) デバイス カメラで撮影する(loop() 側で実行) エージェント側の定義 ※ look_at_camera ※ web_search を定義 も同居 ※ 「見たふり禁止」を明記 デバイス input_image で画像を会話に添付する ※ 定義は REST からのみ エージェント 見えたものを声で答える 呼ぶのはエージェント、撮るのはデバイス ― ツールの実行はクライアント側の責任 2026/09 © 2026 Takahiro Miyaura 12
実機で詰まった話 疎通はするのに、会話がまともにできない 2026/09 © 2026 Takahiro Miyaura 14
原因は Sweden Central が遠かった 音声が途切れる・認識がおかしい・突然切断の原因 リアルタイム音声に必要 43 kB/s 片方向・16kHz PCM16 ※ ESP32 なる ESP32 の実効スループット 23 kB/s 5.7KB の TCP 送信バッファは 5.7KB ÷ 0.25s 程度で固定。RTT 250ms 必要量の約半分 届かない コードでは直せない では空くのを待って頭打ちに ※ マイクの RMS は正常なのに送信レートが上がらない ― 計測ログで音声側かネット側かを切り分けた ※ 東日本にリソースを作り直したらそのまま解決。PC やスマホはバッファが大きいので起きない ※ WiFi.setSleep(false) を忘れると同じ症状。省電力でスループットが落ちる(1 行で済む) 2026/09 © 2026 Takahiro Miyaura 15
ハマりどころ一覧 症状 原因と対策 音声が途切れる / 認識がおかしい / 突然切断 リージョンが遠い。近いリージョンに移す start_ssl_client: 2026/09 - 1 で即失敗 が下層に伝わらない。ルート CA の設定が必須 setInsecure() Missing required parameter: 'image_url' input_image url でも) のフィールド名は image_url agent_not_found agent - project ない) - name にはプロジェクト名を渡す(リソース名では 挨拶の途中で勝手にカメラを使う ツール無しでセッションを開始し、挨拶後に session.update 渡す © 2026 Takahiro Miyaura (リファレンスが で 16
まとめ 小さなデバイスでも、エージェントとちゃんと会話できる ※ エージェントモードは Entra ID 必須。device code flow でコードを顔に表示 ※ instructions もツールもエージェント側。function の定義は REST から ※ Function Calling は「呼ぶのはエージェント、撮るのはデバイス」 ※ 口パクは viseme_id を開口率に写像するだけ ― 詳細は過去記事で ※ 遠いリージョンだと帯域が頭打ち ― コードではなくリージョンを疑う 興味深かったこと 詰まるのは大抵ネットワーク側だった 2026/09 © 2026 Takahiro Miyaura 17
Qiita記事でも解説 Stack Chan を使って Foundry のエージェントを喋らせる https://qiita.com/miyaura/items/65280103af6991ca944c サンプルコードも公開しています github.com/TakahiroMiyaura/stackchan-foundry-sample ※ Arduino プロジェクト一式(M5Unified / ArduinoWebsockets ※ 記事に手順とハマりどころを詳しく書いています 2026/09 © 2026 Takahiro Miyaura ) 18
参考リンク 記事 / 検証コード ※ 検証コード(本日のサンプル一式) github.com/TakahiroMiyaura/stackchan-foundry-sample を使って Foundry ※ Stack Chan のエージェントを喋らせる(本日の内容) qiita.com/miyaura/items/65280103af6991ca944c を AI Agent ※ Voice Live API で使う実装解説 ― イベントの流れ qiita.com/miyaura/items/ff86931ea956d5f669f0 公式ドキュメント ※ Voice Live API の使用方法 / 音声エージェントの構築(Agent 統合) learn.microsoft.com … speech-service/voice-live-how-to ※ Viseme ID と音素の対応 learn.microsoft.com … how-to-speech-synthesis-viseme ※ Foundry エージェントの function calling learn.microsoft.com … agents/how-to/tools/function-calling 2026/09 © 2026 Takahiro Miyaura 19
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ