> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cartesia.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LiveAvatar + Cartesia Line

> デプロイ済みの Cartesia Line エージェントに LiveAvatar（HeyGen 提供）Cartesia Agent Connector でストリーミングアバターを付与する

<Check>最終検証日：2026年8月5日</Check>

## 概要

このインテグレーションを利用すると、デプロイ済みの [Cartesia Line エージェント](/line/sdk/agents) の前段にストリーミング型 [LiveAvatar](https://docs.liveavatar.com) アバターを配置できます。プロンプト、ツール、音声、ターンテイキングは Line エージェントが担当し、LiveAvatar の [Cartesia Agent Connector](https://docs.liveavatar.com/docs/lite-mode/connectors/cartesia-agent) がブリッジを実行し、エージェントの音声からリップシンク済みの映像をレンダリングします。

セッション作成時に `agent_id` と保存済みの Cartesia API キーを渡すだけで、自前の音声パイプラインは不要です。

## 前提条件

* `agent_id` を持つデプロイ済みの Cartesia Line エージェント（[Line クイックスタート](/line/start-building/quickstart)。エージェント一覧は [play.cartesia.ai/agents](https://play.cartesia.ai/agents)）
* [Cartesia keys](https://play.cartesia.ai/keys) で取得した Cartesia API キー（`sk_car_...`）
* [app.liveavatar.com/developers](https://app.liveavatar.com/developers) で取得した LiveAvatar API キー
* Node.js 22 以上および pnpm 9 以上

## クイックスタート

[LiveAvatar Web SDK](https://github.com/heygen-com/liveavatar-web-sdk) のリポジトリには、LITE Mode 用のセッションルートを含む Next.js のデモアプリが付属しています。このルートに Cartesia エージェントの設定を追加して実行します。

<Steps>
  <Step title="Cartesia API キーを LiveAvatar に保存する" titleSize="h3">
    LiveAvatar はキーを参照として保持します。したがってセッションリクエストではキー本体ではなく `secret_id` を渡します。

    リクエストで使用する環境変数を設定します。

    ```bash theme={null}
    export LIVEAVATAR_API_KEY="your-liveavatar-api-key"
    export CARTESIA_API_KEY="your-cartesia-api-key"
    ```

    ```bash theme={null}
    curl -X POST https://api.liveavatar.com/v1/secrets \
      -H "X-API-KEY: $LIVEAVATAR_API_KEY" \
      -H "content-type: application/json" \
      -d '{
        "secret_type": "CARTESIA_API_KEY",
        "secret_value": "'"$CARTESIA_API_KEY"'",
        "secret_name": "Cartesia Agent Key"
      }'
    ```

    レスポンスとして `id` が返ります。次のステップで `secret_id` として使用します。
  </Step>

  <Step title="SDK リポジトリをクローンしてインストールする" titleSize="h3">
    ```bash theme={null}
    git clone https://github.com/heygen-com/liveavatar-web-sdk.git
    cd liveavatar-web-sdk
    pnpm install
    ```
  </Step>

  <Step title="LiveAvatar API キーを設定する" titleSize="h3">
    `apps/demo/app/api/secrets.ts` の `API_KEY` を設定します。デモには動作する `AVATAR_ID` が同梱されているため、後で[自身のアバター](https://docs.liveavatar.com/docs/core-concepts/avatars)の ID に差し替えてください。

    ```typescript theme={null}
    export const API_KEY = "your-liveavatar-api-key";
    export const API_URL = "https://api.liveavatar.com";
    export const AVATAR_ID = "dd73ea75-1218-4ef3-92ce-606d5f7fbc0a";

    // サンドボックスセッションはクレジットを消費しません: https://docs.liveavatar.com/docs/sandbox-mode
    export const IS_SANDBOX = true;
    ```
  </Step>

  <Step title="LITE セッションを Line エージェントに向ける" titleSize="h3">
    `apps/demo/app/api/start-lite-session/route.ts` のセッショントークンリクエストに `cartesia_agent_config` を追加します。

    ```typescript theme={null}
    import { API_KEY, API_URL, AVATAR_ID, IS_SANDBOX } from "../secrets";

    const CARTESIA_SECRET_ID = "your-liveavatar-secret-id";
    const CARTESIA_AGENT_ID = "your-cartesia-agent-id";

    export async function POST() {
      const res = await fetch(`${API_URL}/v1/sessions/token`, {
        method: "POST",
        headers: {
          "X-API-KEY": API_KEY,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          mode: "LITE",
          avatar_id: AVATAR_ID,
          is_sandbox: IS_SANDBOX,
          cartesia_agent_config: {
            secret_id: CARTESIA_SECRET_ID,
            agent_id: CARTESIA_AGENT_ID,
          },
        }),
      });

      if (!res.ok) {
        return new Response(
          JSON.stringify({ error: "Failed to retrieve session token" }),
          { status: res.status },
        );
      }

      const { data } = await res.json();
      return new Response(
        JSON.stringify({
          session_token: data.session_token,
          session_id: data.session_id,
        }),
        { status: 200, headers: { "Content-Type": "application/json" } },
      );
    }
    ```

    `secret_id` と `agent_id` はどちらも必須です。LiveAvatar は LiveKit のルームをプロビジョニングし、Line エージェントと通信するワーカーをディスパッチします。
  </Step>

  <Step title="デモを実行する" titleSize="h3">
    ```bash theme={null}
    pnpm build
    pnpm demo
    ```

    [http://localhost:3001](http://localhost:3001) を開き、**Lite Mode** をクリックしてミュートを解除して話しかけてください。Line エージェントが応答し、その音声にアバターがリップシンクします。
  </Step>
</Steps>

## セッションイベント

Cartesia コネクター経由のセッションは、LITE Mode の WebSocket イベントではなく、LiveAvatar の [FULL Mode イベントシステム](https://docs.liveavatar.com/docs/full-mode/events) を LiveKit のデータチャネル上で使用します。`LiveAvatarSession` はこれらを型付きのイベントとして発火します。

以下のコードは ES モジュール内（たとえばデモアプリの `"use client"` モジュール）で実行するか、本体を非同期関数でラップしてください。このスニペットはトップレベル `await` を使用しています。

```typescript theme={null}
import {
  AgentEventsEnum,
  LiveAvatarSession,
} from "@heygen/liveavatar-web-sdk";

// sessionToken は start-lite-session ルートのレスポンスから取得します
const session = new LiveAvatarSession(sessionToken, { voiceChat: true });

session.on(AgentEventsEnum.USER_TRANSCRIPTION, ({ text }) => {
  console.log("user:", text);
});

session.on(AgentEventsEnum.AVATAR_TRANSCRIPTION, ({ text }) => {
  console.log("agent:", text);
});

// Line エージェントが通話を終了すると stop_reason "AGENT_HANG_UP" で発火します。
session.on(AgentEventsEnum.SESSION_STOPPED, ({ stop_reason }) => {
  console.log("session stopped:", stop_reason);
});

await session.start();
```

## 設定

[create session token](https://docs.liveavatar.com/api-reference/sessions/create-session-token) リクエストの `cartesia_agent_config` フィールド：

| パラメータ       | 型        | デフォルト | 説明                                          |
| ----------- | -------- | ----- | ------------------------------------------- |
| `secret_id` | `string` | —     | `CARTESIA_API_KEY` を保持する LiveAvatar のシークレット |
| `agent_id`  | `string` | —     | 接続先の Cartesia Line エージェント                   |

Line エージェントが自身の音声、プロンプト、言語を保持するため、LiveAvatar 側からのセッション単位の上書きはありません。

設定をサーバー側に保持したい場合は、`cartesia_agent` タイプの [voice agent](https://docs.liveavatar.com/docs/core-concepts/voice-agents) として一度保存し、`id` で参照する方法もあります。ペイロードの詳細は [コネクターのドキュメント](https://docs.liveavatar.com/docs/lite-mode/connectors/cartesia-agent) を参照してください。

## リソース

* [LiveAvatar Cartesia Agent Connector](https://docs.liveavatar.com/docs/lite-mode/connectors/cartesia-agent)
* [LiveAvatar LITE Mode overview](https://docs.liveavatar.com/docs/lite-mode/overview)
* [LiveAvatar secrets and integrations](https://docs.liveavatar.com/docs/core-concepts/secrets)
* [LiveAvatar Web SDK](https://github.com/heygen-com/liveavatar-web-sdk)
* [Cartesia Line クイックスタート](/line/start-building/quickstart)
* [Cartesia Line エージェント](/line/sdk/agents)
