クックブック / スピーキングパートナー
一言ごとに添削が付く
スピーキング練習

スクリーンショット. ローカルで動かしたテンプレート。
- モデル
- ink-2, sonic-3.6
- 言語
- 英語、スペイン語、フランス語、ヒンディー語、日本語
- ライセンス
- Apache-2.0
- 技術スタック
- Next.js 16React 19AI SDKshadcn/uiagents-web
- Cartesia の製品
- Managed AgentsInk 2Sonic 3.6
できること
場面は、新しい隣人へのあいさつから家賃の交渉まで9つあり、それぞれに達成する目標があります。教え方のスタイルも選びます。Teacherは単語を提案し、あなた自身の言語で説明します。Immersiveは役になりきったままで、添削は最初は隠れています。場面を終えると、1(苦戦した)から3(流暢)までのスコアと3つのアドバイスがもらえます。場面と2つのスタイルは、Zack Akilによるオープンソースのデモ(Apache-2.0)から取り入れています。
自分で動かす
インストールする
Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。話すだけなら
CARTESIA_API_KEYで足ります。添削パネルにはLLM_MODELとそのプロバイダーのキーが必要で、設定するまでは何を追加すればよいかをパネルが表示します。環境変数 - CARTESIA_API_KEY
play.cartesia.ai/keys- LLM_MODEL
- 添削用。
provider/model。例:openai/gpt-5.4-mini - OPENAI_API_KEY
LLM_MODELがopenai/で始まる場合- ANTHROPIC_API_KEY
LLM_MODELがanthropic/で始まる場合- AI_GATEWAY_API_KEY
- それ以外のプロバイダーの場合。Vercelでは不要
- AGENT_MODEL_ID
- 任意。相手役のLLM。
GET /v1/agents/modelsから選ぶ - VOICE_ID_ES
- 任意。スペイン語の音声を固定する。
VOICE_ID_EN、_FR、_HI、_JAも同様 - APP_PASSWORD
- ローカルでは任意。Vercelでは必須。公開するならnoneを設定
- TRUST_PROXY
- 任意。自前のリバースプロキシの背後に置く場合は1
場面を選ぶ
npm run devが表示するURLを開き、2つの言語を選びます。教え方のスタイルと場面を選んでStart speakingを押し、最初の一言は自分から話します。ヘッドホンを使ってください。セッションは3分で終わります。
コーディングエージェントで作る
どこから始めて、最初に何を読むべきかをコーディングエージェントに伝えるプロンプトです。
Build a language speaking practice app on a Cartesia Managed Agent. Start from https:/ and follow its AGENTS.md for the commands, files and rules. The server creates one temporary agent per session with POST /v1/agents, writing the mission, role, mode and languages into its instructions, because a browser access token cannot send dynamic_variables. The browser gets a 60 second token with only the agent grant and talks to the agent through useCartesiaAgent from lib/agents-web. Corrections are a separate AI SDK call per line. Keep the five Ink 2 languages (en, es, fr, hi, ja). If I don't have a Cartesia API key yet, follow https:/ to get one.
仕組み
claude-haiku-4.5この設計にした理由
セッションごとに1つのエージェント
ブラウザは有効期限の短いトークンで接続しますが、このトークンでは場面を通話に渡せません。そこでサーバーは、セッションごとに場面、役、教え方を新しいエージェントのinstructionsに書き込みます。あなたが退出すると、エージェントは削除されます。
添削は通話と並行して動く
あなたが一言話すたびに、別のLLM呼び出しがその一言だけを確認します。直した文と、あなた自身の言語での短い説明が返ってきます。相手役は会話を続け、添削のために止まることはありません。
相手役が場面を終える
目標を達成すると、相手役は別れのあいさつをして、場面を終えるためのブラウザ側のツールを呼び出します。3つのアドバイスと、Immersiveではスコアも渡し、ページはまとめを表示してエージェントを削除します。途中で退出すると、スコアなしのまとめが表示されます。
カスタマイズする
場面を追加する
場面の一覧であるdata/missions.jsonにエントリーを追加します。ルートは場面のidを受け取るので、ブラウザが自由なテキストをプロンプトに送ることはありません。
教え方を変える
2つの教え方のプロンプトはlib/prompts.tsにあります。
音声を選ぶ
VOICE_ID_ESなどを設定します。設定しない場合、サーバーは音声ライブラリから、親しみやすい説明が付いた最初のネイティブ話者を選びます。
よくある質問
動かすのに費用はかかりますか?
テンプレート自体はApache-2.0の無料のオープンソースです。練習の通話はあなたのCartesiaアカウントを、文字での添削はあなたのLLMプロバイダーを使います。セッションは3分で終わります。
試すには何が必要ですか?
話すだけなら、CartesiaのAPIキーとNode 22.22以降があれば十分です。文字での添削には、OpenAI、Anthropic、Vercel AI GatewayのいずれかのLLMキーも必要です。
どの言語を練習できますか?
英語、スペイン語、フランス語、ヒンディー語、日本語を、どの組み合わせでも練習できます。これらはInk 2が聞き取れる言語なので、ほかの言語には別の音声認識が必要です。
インターネットに公開しても安全ですか?
デプロイする前にパスワードを設定してください。ページを開ける人なら誰でも、あなたのアカウントでセッションを始められるからです。Cartesiaはエージェントの通話ごとに音声と文字起こしも記録するので、利用者に伝え、不要な通話は削除してください。
自分の一言が話し終えてから表示されるのはなぜですか?
エージェントはあなたが話し終えた時点で言葉を送るので、あなたの一言とその添削が同時に表示されます。相手役の言葉は、話している間に表示されます。
このテンプレートの詳しい手順ガイドはありますか?
はい。レシピでコードを順に解説し、READMEでセットアップ、環境変数、デプロイを説明しています。Cartesia側の仕組みはクライアントツールのドキュメントにあります。
クックブックのほかの例
今すぐ始める
専門家に相談する。
音声体験の開発にCartesiaをどう活用できるか、私たちのチームにご相談ください。
開発を始める。
APIでモデルにアクセスし、数分で音声エージェントを本番環境に導入できます。

