クックブック / 記事からポッドキャスト
どんな記事も
ポッドキャストに

スクリーンショット. ローカルで動かしたテンプレート。
- モデル
- sonic-3.6
- 言語
- 英語、スペイン語、フランス語、ドイツ語ほか4言語
- ライセンス
- Apache-2.0
- 技術スタック
- Next.js 16React 19AI SDKMozilla Readabilityshadcn/ui
- Cartesia の製品
- Sonic 3.6
できること
始める前に、エピソードの長さ(短い、中くらい、長い)と、英語、スペイン語、フランス語、ドイツ語、ポルトガル語、日本語、ヒンディー語、韓国語の8言語から1つを選びます。LLMはその言語で台本を書き、Sonicも同じ言語で読み上げます。ホストの名前は変えるまでSamとAlexです。完成したエピソードは、プレーヤーからWAVファイルとしてダウンロードできます。
自分で動かす
インストールする
Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。下の表を見て
.env.localを埋めます。キーがなくてもページは開き、設定すべき変数を表示します。環境変数 - 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では不要
- CARTESIA_VOICE_HOST_A
- 任意。1人目のホストの音声ID。2人目は
CARTESIA_VOICE_HOST_B - APP_PASSWORD
- ローカルでは任意。Vercelでは必須。noneにするとアプリが公開される
- TRUST_PROXY
- 任意。自前のリバースプロキシの後ろで動かすときは1
1回分を作る
開発サーバーが表示するローカルのURLを開き、記事のリンクを貼り付けます。JavaScriptで本文を読み込むページなら、代わりにPaste textに切り替えます。最初は短く試せるよう、長さは短いものを選びます。次にMake podcastを押します。
コーディングエージェントで作る
どこから始めて、最初に何を読むべきかをコーディングエージェントに伝えるプロンプトです。
Build an article to podcast generator with Cartesia. Start from https:/ and follow its AGENTS.md for the commands, files and rules. The AI SDK writes the two-host script with generateText and Output.object. Speech goes through @cartesia/cartesia-js: one client.tts.generate call per line with model_id sonic-3.6 and raw pcm_s16le at 24 kHz, then the server joins the lines into one WAV. Do not use the AI SDK speech API for Sonic. If I don't have a Cartesia API key yet, follow https:/ to get one.
仕組み
この設計にした理由
せりふごとにSonicを1回呼ぶ
ホストごとに別の音声が必要なので、セリフは1行ずつ別のリクエストにします。加工していない音声ならセリフごとの長さも正確にわかるので、文字起こしの強調表示がずれません。アプリは、話し手が替わるところに350ミリ秒、それ以外に180ミリ秒の無音を入れます。その代わり、口調はセリフをまたいで引き継がれません。
台本はどのLLMでも書ける
台本はAI SDKで作るので、どのLLMプロバイダーでも動きます。音声はCartesiaのJavaScript SDKである@cartesia/cartesia-jsを通り、リクエストのたびにAPIバージョンを固定して送ります。
取得したページは信頼しない
lib/safe-fetch.tsの取得処理は、プライベートアドレスや内部アドレスを拒否し、ポートは80と443だけを許可します。リダイレクト回数、ページのサイズ(2 MB)、時間にも上限を設けます。プロンプトは記事を話題にする素材として示し、その中の指示には決して従わないようLLMに伝えます。
カスタマイズする
別の音声を使う
play.cartesia.ai/voicesで2つの音声を選びます。1人目のホストの音声IDはCARTESIA_VOICE_HOST_Aに入れます。2人目のIDはCARTESIA_VOICE_HOST_Bに入れます。初期の音声は英語なので、選んだ言語に合う音声にしてください。
番組を変える
番組名、キャッチフレーズ、ホストの役割、エピソードの構成は、lib/config.tsの初期値です。LLMへの指示はlib/prompt.tsにあります。
別のLLMプロバイダーを使う
LLM_MODELに、そのプロバイダーのAI Gateway ID(例:google/gemini-2.5-flash)を設定します。あわせてAI_GATEWAY_API_KEYを追加します。プロバイダーを直接呼ぶ場合は、そのAI SDKパッケージをインストールします。そのうえで、lib/llm.tsにそのプレフィックス用の分岐を追加します。
よくある質問
CartesiaのAPIキーがブラウザーに漏れることはありますか?
いいえ。ブラウザーは台本をアプリ自身のサーバーに送り、サーバーがSonicを呼び出します。キーがサーバーの外に出ることはありません。
1回分を作るのにどのくらいかかりますか?
使うLLMと選んだ長さによって変わります。短いエピソードはLLMの呼び出し1回で済みます。初期設定の中くらいと長いエピソードはLLMを続けて何回か呼び、Sonicは4行ずつ読み上げます。
1回分の料金はいくらですか?
Sonicは台本1文字あたり約1クレジットです。アプリは30,000文字を超える台本を受け付けないので、1エピソードは最大で約30,000クレジットとLLMのトークン代です。
インターネットに公開できますか?
エピソードを作るたびにLLMのトークンとCartesiaのクレジットを使うので、まずAPP_PASSWORDでパスワードを設定してください。変換するのは自分の記事か、翻案の許可を得た記事だけにし、公開する音声にはAI生成であることを明記してください。
Pythonでも作れますか?
はい。Sonicの呼び出しは、CartesiaのPythonパッケージでも同じように書けます。音声をファイルに生成するレシピから始めて、台本の行ごとにループしてください。
このテンプレートの詳しい手順ガイドはありますか?
はい。レシピでコードを順に解説しています。セットアップ、環境変数、デプロイはREADMEに、Cartesia側の仕様はTTS bytes APIリファレンスにまとめています。
クックブックのほかの例
今すぐ始める
専門家に相談する。
音声体験の開発にCartesiaをどう活用できるか、私たちのチームにご相談ください。
開発を始める。
APIでモデルにアクセスし、数分で音声エージェントを本番環境に導入できます。
