クックブック / 音声チャット
割り込める
音声チャット

スクリーンショット. ローカルで動かしたテンプレート。
- モデル
- ink-2, sonic-3.6
- 言語
- 英語
- ライセンス
- Apache-2.0
- 技術スタック
- Next.js 16React 19shadcn/uiagents-web
- Cartesia の製品
- Managed AgentsInk 2Sonic 3.6
できること
エージェント全体はCartesiaが動かすので、サーバーの仕事は1つだけです。ブラウザーに有効期限の短いトークンを渡し、APIキーはページに渡りません。同じエージェントで電話も受けられます。その方法は受付係のFront deskテンプレートにあります。
自分で動かす
インストールする
Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。
npm run setup:agentは、POST /v1/agentsでエージェントを作成し、保存済みのエージェントがまだあれば何もしません。デプロイする場合は、Vercelのボタンがこのidを求めるので、先にローカルで実行してください。環境変数 - CARTESIA_API_KEY
play.cartesia.ai/keys- CARTESIA_AGENT_ID
npm run setup:agentが書き込む- AGENT_MODEL_ID
- 任意。エージェントのLLM。
GET /v1/agents/modelsから選ぶ - CARTESIA_VOICE_ID
- 任意。
play.cartesia.ai/voicesの音声 - APP_PASSWORD
- ローカルでは任意。Vercelでは必須。公開するならnoneを設定
- TRUST_PROXY
- 任意。自前のリバースプロキシの背後に置く場合は1
通話を始める
http://localhost:3000を開いてStart callを押します。ヘッドホンを使ってください。エコーキャンセルはオンですが、ノートパソコンのスピーカーの音はマイクに入り、エージェントが自分に割り込んでしまいます。
コーディングエージェントで作る
どこから始めて、最初に何を読むべきかをコーディングエージェントに伝えるプロンプトです。
Build a browser voice chat with a Cartesia Managed Agent. Start from https:/ and follow its AGENTS.md for the commands, files and rules. The server route mints a 60 second access token with only the agent grant through @cartesia/cartesia-js (client.accessToken.create), and the browser opens wss:/ with useCartesiaAgent from lib/agents-web. Create the agent once with npm run setup:agent, which calls POST /v1/agents. The agent runs Ink 2 and Sonic 3.6 for you, so do not add TTS or STT model fields to its config. If I don't have a Cartesia API key yet, follow https:/ to get one.
仕組み
claude-haiku-4.5。AGENT_MODEL_IDで変更この設計にした理由
割り込むと音声のキューが空になる
エージェントの話にかぶせて話すと、Cartesiaがaudio_output_clearイベントを送ります。アプリはキューにあった音声を捨て、エージェントの最後のメッセージを実際に話した言葉までに切り詰めます。
ブラウザが受け取るのはキーではなく60秒のトークン
サーバーは、エージェントとの通話にしか使えず60秒で切れるトークンを発行します。トークンのルートは、APIキーがないと503を返し、同じアドレスから1分に10個を超えると429を返します。
カスタマイズする
話す内容を変える
scripts/prompt.tsの指示とあいさつを編集し、npm run setup:agent -- --forceを実行します。
別の音声やLLMを使う
CARTESIA_VOICE_IDかAGENT_MODEL_IDを設定し、npm run setup:agent -- --forceを実行します。
別の言語で話す
scripts/setup-agent.tsのbuildBodyでlanguage.primaryを設定し、その言語でプロンプトを書き、その言語を話す音声を選びます。
よくある質問
CartesiaのAPIキーをブラウザーに渡さないには?
サーバーで有効期限の短いトークンを発行し、ブラウザーにはそれだけを渡します。トークンは60秒で切れ、エージェントとの通話にしか使えず、音声合成や音声認識には使えません。サーバーが発行するのは、1つのアドレスにつき1分に最大10個です。
自分の言葉が話し終わってから表示されるのはなぜですか?
エージェントはあなたの言葉を、話している最中ではなくターンが終わったときに返すので、それまであなたのメッセージには点が表示されます。エージェントの言葉は話すのに合わせて表示されます。レシピには自分のLLMを使う版もあり、そちらでは話している最中に言葉が表示されます。
通話の料金はいくらですか?
Managed Agentの通話は1分あたり0.06ドルとLLMのトークン料金がかかります。Cartesiaのクレジット残高からではなくドルで請求され、トークン単価はLLMごとに異なります。
通話は録音されますか?
はい。Cartesiaは既定で、エージェントのすべての通話の音声と書き起こしを録音します。ユーザーに伝え、不要な通話はCartesiaのAPIで削除してください。
このテンプレートの詳しい手順ガイドはありますか?
はい。レシピでコードを順に解説し、READMEでセットアップ、環境変数、デプロイを説明しています。Cartesia側の仕組みはManaged Agentsのドキュメントにあります。
今すぐ始める
専門家に相談する。
音声体験の開発にCartesiaをどう活用できるか、私たちのチームにご相談ください。
開発を始める。
APIでモデルにアクセスし、数分で音声エージェントを本番環境に導入できます。

