Usage Guide
Character Chat の基本フロー
- アプリを起動し、Gemini API key を入力します。
- 同梱の
Kiyoka.vrmをそのまま使うか、手元の.vrmを読み込みます。 - テキストを送信するか、マイク入力を使います。
- 音声が流れるあいだに partial transcript を読みます。
- きれいな lip sync を優先したい場合は、再生が終わってから次の入力を送ります。
Podcast Mode
Yukito と Kiyoka に 1 つの話題を交互に話させたい場合は、次の流れを使います。
Settingsを開き、Conversation modeをPodcast modeに切り替えます。- 2 体の podcast viewer が ready になるまで待ちます。
- 必要なら
Podcast settingsを開き、最大ループ数や host 別の prebuilt voice を調整します。 - composer に 1 つの話題を入力します。placeholder は
Type a podcast topicに切り替わります。 - GeminiVRM が上限ターン付きの交互会話を開始し、設定した回数に達すると自動で停止します。
補足:
- podcast mode は同時発話ではなく、ターン制の掛け合いです
- 後続ターンでは、可能な場合に前の話者の音声を Gemini Live へ relay します
- prepared relay が失敗した場合は、transcript 継続や古い model へ逃がさず、 その Gemini Live エラーで停止します
調整できる設定
- conversation mode (
Character chat/Podcast mode) - live model
- 単独チャット用 voice preset または custom voice name
- system prompt
- podcast のターン上限 (
2..12) - podcast 専用の Yukito / Kiyoka voice routing
- idle motion preset
- chat history reset
- ローカル VRM file input
Streamingから開く任意の YouTube relay 設定
Motion と Viewer Runtime
Random Idleは同梱の Mixamo idle clip をローテーションします- 音声再生中は talking motion へ自動で切り替わります
- メイン viewer の camera framing はセッション間で保持されます
任意の YouTube Live Relay
YouTube の配信コメントを既存の Gemini chat パイプラインへ流したい場合は、次のフローを使います。
Settings->Streaming->YouTube relayを開きます。- Google でログインし、broadcast list を更新します。
- relay の入力元にしたい active / upcoming broadcast を選びます。
- relay listener を有効化し、必要なら auto-reply も有効化します。
- relay 画面を開いたまま、このアプリの画面を YouTube Live Control Room または OBS で配信します。
補足:
- Gemini に渡るのは relay 開始後に届いた新着コメントのみです
- 配信者本人のコメントは reply loop 防止のため無視されます
- 保存した Google client ID と短命の access token は sign-out または期限切れまで local storage から復元されます
- relay は inbound-only で、GeminiVRM から YouTube chat へ書き戻しは行いません
前提条件、設定手順、失敗時の確認は YouTube Relay Guide を参照してください。
Docs Shortcut
アプリ右上には Docs shortcut があります。
- ローカルの
dev:allではローカル docs server を開きます - GitHub Pages 版では
/<repo>/docs/を開きます
テスト時に見るポイント
- transcript が full turn 完了前に更新されること
- chunk や Gemini Live request エラーなく音声が始まること
- 口パクが音声再生と同期していること
- podcast mode が 2 体の viewer を待ってから開始し、設定したターン数で止まること
- voice、motion、conversation mode を切り替えても次の実行が壊れないこと