liveavatar-debug について
LiveAvatar Debugging Guideは、無音、音声の歪み、セッション開始失敗、イベント未受信などを症状別に扱う、LiveAvatar統合向けのトラブルシューティングスキルです。FULLとLITEのデバッグに使え、プロトコル、音声形式、認証の確認手順を示します。
主な機能
- 01症状別のトラブルシューティング手順
- 02FULLモードのコンテキストとイベント確認
- 03LITEの音声形式と接続状態の検証
- 04トークンとセッション開始の認証を区別
- 05セッションタイムアウトとサンドボックスの確認
活用シーン
- 01無音や発話に反応しないアバターの調査
- 02LITEモードの音声の歪みの修正
- 03401エラーやセッション開始失敗の診断
- 04WebSocketイベント未着の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ heygen-com/ liveavatar-agent-skills --skill liveavatar-debugインストール後、Claude Code で/liveavatar-debugを入力して読み込まれたか確認します。
詳細
LiveAvatar デバッグガイド
LiveAvatar 連携で発生する症状別のトラブルシューティングです。該当する症状を確認し、対処方法に従ってください。
アバターが無音/音声に反応しない
最も可能性が高い原因:FULL Mode で context_id が設定されていない。
context_id がない場合、アバターは制限モードに入り、動画をストリーミングするものの、ユーザー入力を無視します。エラーは発生しません。
対処方法: prompt フィールドを含むコンテキストを POST /v1/contexts で作成します。返された context_id をセッショントークンの avatar_persona に含めてください。
その他の原因:
- ブラウザーのマイク権限がブロックされている(iframe の
allow="microphone"を確認してください) - プッシュ・トゥ・トークが有効なのに、PTT イベントが送信されていない
- OS レベルでマイクがミュートされている
音声が乱れる、または歪む(LITE Mode)
最も可能性が高い原因:音声形式が正しくない。
必要な形式:PCM 16 ビット符号付き、24KHz、Base64。形式が間違っていてもエラーは返されません。
チェックリスト:
- サンプルレートが正確に 24,000 Hz である
- 生の PCM である(WAV/MP3/OGG のヘッダーがない)
- 16 ビット符号付きであり、8 ビットや 32 ビット浮動小数点ではない
- Base64 でエンコードされている
- チャンクが 1MB 未満である
簡単なテスト: 正常な 440Hz のテストトーンを送信します。正常に機能するのに TTS では機能しない場合は、TTS の出力をリサンプリングしてください。
401 エラー/セッションを開始できない
最も可能性が高い原因:認証ヘッダーが正しくない。
| エンドポイント | 正しい認証 |
|---|---|
POST /v1/sessions/token | X-API-KEY: <api_key> |
POST /v1/sessions/start | Authorization: Bearer <session_token> |
よくある間違い:/start で API キーを使用する、/token で Bearer トークンを使用する、API キーを Bearer 形式で指定する。
イベントを受信できない(FULL Mode)
- 正しいトピックを購読していますか?
agent-controlに送信し、agent-responseから受信します - LiveKit ルームに接続されていますか?接続状態を確認してください
- JSON を正しく解析していますか?イベントには
event_type、event_id、session_idが含まれます
WebSocket イベントが通知なく破棄される(LITE Mode)
最も可能性が高い原因:connected より前に送信している。
コマンドを送信する前に、{"type": "session.state_updated", "state": "connected"} を待ってください。
以下も確認してください:
- 正しいイベント名を使用していますか?LITE では
avatar.*(FULL のイベント名)ではなく、agent.*を使用します - WebSocket はまだ開いていますか?5 分間操作がないとタイムアウトします
セッションがタイムアウトする
5 分間操作がないと、セッションは終了します。
- FULL:
Bearer <session_token>を指定してPOST /v1/sessions/keep-aliveを呼び出します - LITE: WebSocket 経由で
{"type": "session.keep_alive", "event_id": "..."}を送信します
2〜3 分ごとに送信してください。
サンドボックスが起動しない
- セッショントークンで
is_sandbox: trueが設定されている - アバター ID が
dd73ea75-1218-4ef3-92ce-606d5f7fbc0a(セッション用)または65f9e3c9-d48b-4118-b73a-4ae2e3cbb8f0(埋め込み用)である - サンドボックスモードで別のアバターを使用していない
約 1 分で自動終了するのは想定された動作です。
画像アバターで失敗する/音声がない
画像アバターには自動生成される音声がありません。avatar_persona で voice_id を指定してください。GET /v1/voices で音声を確認できます。
カスタム LLM/TTS が機能しない
LLM のチェックリスト:
- シークレット:
secret_type: "LLM_API_KEY" - 設定:
model、secret_id、base_urlが正しい - セッショントークンに
llm_configuration_idがある - エンドポイントが OpenAI の
/chat/completionsプロトコルに対応している
TTS のチェックリスト:
- シークレット:
secret_type: "ELEVENLABS_API_KEY" -
POST /v1/voices/third_partyで音声をインポートしている - 返された LiveAvatar の voice_id(ElevenLabs の ID ではない)を使用している
CORS/ネットワークエラー
- API 呼び出しはブラウザーではなく、バックエンドから行ってください
- LiveKit と WebSocket のために、送信方向の
wss://を許可してください *.livekit.cloud、api.liveavatar.com、embed.liveavatar.comを許可してください
基本的な進め方
- 課金の問題を切り分けるため、まずサンドボックスモードを使用します
- セッションの状態を確認します:
GET /v1/sessions/{id} - トランスクリプトを確認します:
GET /v1/sessions/{id}/transcript - クレジットを確認します:
GET /v1/users/credits - FULL と LITE のイベントシステムを混在させていないことを確認します