どんな記事も
ポッドキャストに

リンクか記事の本文を貼り付けます。LLMがそれを2人のホストの会話にします。Cartesia Sonic 3.6がすべてのセリフを読み上げ、ページは読み上げ中のセリフを強調表示する文字起こし付きでエピソードを再生します。
ヒートポンプを貸し出す図書館についての短い記事から作った回「Sonic Briefing: Libraries Lending Heat Pumps」の完成画面。1:53のうち0:09の位置にあるプレーヤーとDownloadボタンがあり、その下の台本ではSamの今のせりふが緑色で強調されている

スクリーンショット. ローカルで動かしたテンプレート。

モデル
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ファイルとしてダウンロードできます。

自分で動かす

  1. インストールする

    Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。下の表を見て.env.localを埋めます。キーがなくてもページは開き、設定すべき変数を表示します。

    npx degit cartesia-ai/cookbook/examples/article-to-podcast article-to-podcast
    cd article-to-podcast
    # add CARTESIA_API_KEY, LLM_MODEL and its key
    cp .env.example .env.local
    npm install
    npm run dev
    

    環境変数
    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
  2. 1回分を作る

    開発サーバーが表示するローカルのURLを開き、記事のリンクを貼り付けます。JavaScriptで本文を読み込むページなら、代わりにPaste textに切り替えます。最初は短く試せるよう、長さは短いものを選びます。次にMake podcastを押します。

コーディングエージェントで作る

どこから始めて、最初に何を読むべきかをコーディングエージェントに伝えるプロンプトです。

プロンプト

Claude CodeCursorCodex

Build an article to podcast generator with Cartesia. Start from https://github.com/cartesia-ai/cookbook/tree/main/examples/article-to-podcast 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://www.cartesia.ai/agent-quickstart.md to get one.

仕組み

取得プライベートアドレスを拒否して取得し、本文だけを抜き出す
台本LLMがタイトルと台本の全セリフを書く
Sonic 3.61行につき1リクエスト、4行ずつ同時に
WAV短い間を入れてセリフをつなぎ、各セリフの開始時刻も付ける
プレーヤー読み上げ中のせりふを強調表示する

この設計にした理由

せりふごとに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でモデルにアクセスし、数分で音声エージェントを本番環境に導入できます。

Cartesiaを試す