>100 Views
July 15, 26
スライド概要
【大阪-ハイブリッド開催】XRミーティング 2026/07/15 #Xグラス #XRMTG( https://osaka-driven-dev.connpass.com/event/397692/ )登壇資料。
Microsoft Foundry ToolsのVoice Live APIの音声会話の応答情報を使ってUnityちゃんの口パクを発話と同期する話。
Foudry ToolsのVoice Live APIは「Viseme」という「人が特定の音を発音するときの視覚的な口の形や顔の表情のパターン」を応答音声のタイミングに合わせて返すことができます。これを利用するとオリジナルのアバターに音声に合わせた口パクをさせることができるので、実際にうまくいくか調査した話。
ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
Microsoft Foundry - Tools Voice Live で口パクさせてみた 2026/07 XR ミーティング @takabrz1 Takahiro Miyaura
宮浦 恭弘 (Miyaura Takahiro) Microsoft MVP for Mixed Reality 2018 Microsoft MVP for M365 2025 - 2026 XR は趣味です.AI 系も最近始めました。 - 202 5 大阪駆動開発コミュニティに生息 HoloLens 日本販売してからxR 系技術に取組む 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura https://zenn.dev/miyaura 最近興味があって取り組んでいるもの ○ AndroidXR ○ 新しいガジェット( MiRZA,Galaxy XR,etc …) ○ Microsoft Foundry, 生成AI @takabrz1 ※よかったらこれを機にお知り合いになってください
今日も何度か話しているFoundry Toolsの 音声系の話 2026/07/15 © 2026 Takahiro Miyaura 3
Microsoft Foundryの話 2026/07/15 © 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 に委任 文章(プロンプト)を送って 何らかの処理をしてもらう Foundry Agent Service Agent 呼出 応答 ユーザ 応答 モデル呼出 2026/07/15 © 2026 Takahiro Miyaura Foundry Models Phi4,… 6
Foundry Tools – Voice Live AIモデルやエージェントをリアルタイム音声会話で利用 日常対話はモデル、複雑タスクはAgent に委任 Agent 呼出 Microsoft Foundry でエージェントを定義 音声 ユーザ Voice Live Foundry Agent Service Agent 呼出 SDK(API) 応答 リアルタイムAI モデル 基本対話を担当 応答 音声応答 モデル呼出 モデル呼出時 プロンプト、ツール、MCPの 設定も渡せる 2026/07/15 © 2026 Takahiro Miyaura Foundry Models Phi4,… 7
Foundry Tools – Voice Live APIとは Foundry のモデルやエージェントを利用したリアルタイム音声API ◯ 最近は.NET, Python SDK でも提供 ◯ Preview の最新を使いたい場合はAPI を利用 GA|2026 - 04 - 10 で正式提供 連携 Preview |2026 - 06 - 01 - preview 新機能 ○ ・・・ ○ Hosted agent invocation events (ホスト型エージェント呼出) ○ WebSocket アバター(同一WSに映像配信) ○ Streaming text input (テキスト増分入力) ○ WebRTC 音声接続 ○ parallel_tool_calls ○ ・・・ エージェント呼出が正式対応、 OpenTelemetry によるトークンなどの監視が可能に Hosted Agents 、Websocket 通信でアバターが利用可能に 活用の幅が広がる機能を先行して提供 ○ Foundry Agent ○ MCP サーバ統合 ○ Proactive messages (先読み発話) ○ Auto - truncation (履歴自動切詰め) ○ OpenTelemetry トレース(新規GA) 2026/07/15 © 2026 Takahiro Miyaura 8
viseme で Unityちゃんを口パクさせる Voice Live API 2026/07/15 の viseme_id © 2026 Takahiro Miyaura を母音 blendshape に割当てる 9
結論:Unityちゃんの口パクは実現可能 Voice Live API は viseme 出力を正式サポート (API 版 2026 - 01 - 01 - preview ) ○ ただし Voice Live が返すのは viseme_id ○ blend shapes / SVG は返らない → 母音 blendshape へ 自前でマッピング が必要 ○ 2026/07/15 viseme_id (0〜21 の整数)だけ 自体はロケール制限なし(日本語 TTS でも返ってくる) © 2026 Takahiro Miyaura 10
デモ — Unityちゃんが実際に口パク 会話に合わせて口がリアルタイムに動く様子をデモ 2026/07/15 © 2026 Takahiro Miyaura 11
viseme とは — 音を「口の形」で表す単位 viseme (ビゼーム)= 音素を「顔と口の形」で表した視覚的な単位 話すときの唇・あご・舌の位置(口形状)を表す 22 種類 多対1 3 つの出力 Azure が定義する viseme の数。各 viseme が特定の音 素グループの口形状を表す 音素と viseme は1対1でな い。s と z のように口の形が同 じ音は同じ viseme viseme ID (整数)/ SVG (2D・en - US)/ blend shapes (3D・55 値/ フレーム) テキスト / SSML → 音素列に分解 → viseme 生成 → viseme ID 出典:Microsoft Learn 2026/07/15 © 2026 Takahiro Miyaura + audio offset – Get facial position with viseme 12
アバター側の Lipsync — 母音 blendshape で口を動かす Unity ちゃんの顔メッシュ(SkinnedMeshRenderer )は MTH_A / I / U / E / O の母 音 blendshape を持つ。各 weight (0〜100 )を時系列で動かすと口形状が変わる。 あ い う え お MTH_A MTH_I MTH_U MTH_E MTH_O 音の並びに合わせて weight 2026/07/15 を 0 → 100 に切り替える = 口パク。隣接する口形状を Lerp 間するとなめらかに動く。 © 2026 Takahiro Miyaura で補 13
Foundry Tools の会話処理フロー — Voice Live (WebSocket) ユーザー音声(マイク入力) Voice Live API | WebSocket ・全二重リアルタイム 応答メッセージ response.animation_viseme.delta 応答メッセージ response.audio.delta AudioSource 2026/07/15 で PCM 音声を再生 viseme_id + audio_offset_ms blendshape へ適用 © 2026 Takahiro Miyaura を 14
viseme を有効化
session.update の animation.outputs
{
"session"
:{
"voice"
:{
"name" : "ja - JP - NanamiNeural"
,
"type" : "azure - standard"
},
"animation"
:{
"outputs"
: [ "viseme_id"
]}
}
}
は現状 viseme_id
のみ対応
○
animation.outputs
○
viseme_id
はロケール制限なし(日本語TTS でも返る)。blend shapes
SVG は en - US のみ
2026/07/15
© 2026 Takahiro Miyaura
は en - US / zh
- CN、
15
応答情報の詳細 response.animation_viseme.delta { "type" : "response.animation_viseme.delta" "audio_offset_ms" "viseme_id" , : 455 , : 20 } audio_offset_ms 音声先頭からの経過ミリ秒。再生位置と同期させ るタイミング情報 viseme_id 0〜21 の口形状ID 。母音 blendshape マッピングする対象 ストリーム完了時に response.animation_viseme.done 2026/07/15 © 2026 Takahiro Miyaura へ が届く 16
viseme を使ういくつかの方法 Voice Live viseme SpeechSynthesizer (リアルタイム型) (バッチ型) ○ 出力:viseme_id ○ 体験:低遅延・全二重エージェント ○ Unity :WebSocket ○ 口パク:自前マッピングが必要 ○ 有効化:session.update animation.outputs SpeechSynthesizer イベントで viseme_id 2026/07/15 のみ を自前実装 の ○ 出力:viseme_id / SVG / blend shapes (52 係数) ○ 体験:TTS 都度・非対話 ○ Unity :Speech SDK for Unity ○ 口パク:blendshape ○ 有効化:SSML の mstts:viseme が使える 直取りで楽 とは:Azure Speech SDK の従来型 TTS 。テキストを音声に変換し、VisemeReceived ・SVG ・blend shapes を直接取得できる(対話用ではなく都度合成) © 2026 Takahiro Miyaura 17
viseme の割り当て — 22種を「母音6種」に寄せる Azure の viseme は 0〜21 の22 種。日本語の口形状はほぼ「あ・い・う・え・お+閉じ」で捉えられる ので、22 種を母音6グループに寄せて Unity ちゃんの MTH_A / I / U / E / O へ割り当てる。 2026/07/15 母音 Unity ちゃん あ MTH_A 1, 2, 9, 11, 12, 17 い MTH_I 6, 15, 16 i, ɪ, s, z, ʃ, tʃ う MTH_U 7, 13, 18 u, w, ɹ, f, v え MTH_E 4, 5, 14, 19, 20 お MTH_O 3, 8, 10 閉じ すべて 0 0, 21 viseme_id (22 種の割り当て) © 2026 Takahiro Miyaura 代表音素 æ, ɑ, aʊ, aɪ, h, ð ɛ, ʊ, ɝ, l, d/t/n, k/g ɔ, o, ɔɪ 無音, p, b, m 18
Unity 実装フロー — 音声と viseme を同期して口を動かす
void
Update () {
double
ms = (
var
v=
PeekVisemeAt
var
(shape, target) = map[v.visemeId];
foreach
( var
skinned.
AudioSettings
s in
.dspTime
- startDsp) *
1000.0 ;
// 現在時刻の viseme
(ms);
// 22→ 母音マップ
mouthShapes)
SetBlendShapeWeight
(idx[s],
Mathf . Lerp (cur[s], s == shape ? target :
Time .deltaTime *
0f ,
12f ));
}
1 audio_offset_ms
ングを同期
2026/07/15
で音声再生位置とタイミ
2 viseme
防止
© 2026 Takahiro Miyaura
間を Mathf.Lerp
で補間しカクつき
19
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ