1週間を読み返してくれる
音声日記

タップして日記を録音します。Cartesiaのink-whisperモデルがそれを文字にし、LLMがタイトル、気分、一行の振り返りを付けます。好きなときに、Sonic 3.6が直近7日間の短いまとめを、選んだ声で読み上げます。
Weekly recap画面のスマートフォンのスクリーンショット。This weekのパネルにエントリーが1件とHopefulの気分バッジがあり、音声の選択はTessa、Write my recapボタンがあり、最新のまとめが0:32のうち0:04まで再生されている

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

モデル
ink-whisper, sonic-3.6
言語
英語
ライセンス
Apache-2.0
技術スタック
ExpoReact NativeExpo Router API routesAI SDKAsyncStorage
Cartesia の製品
InkSonic 3.6

できること

1つのアプリがiOS、Android、Webで動きます。エントリーは端末に保存されるので、データベースもログインもありません。録音は文字起こしのためにCartesiaへ、文字起こしはあなたのLLMプロバイダーへ送られます。アプリは録音ボタンの下でそのことを伝え、サーバーは音声を保存しません。

自分で動かす

  1. インストールする

    Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。下の表を見て.env.localを埋めます。

    npx degit cartesia-ai/cookbook/examples/voice-journal voice-journal
    cd voice-journal
    # add CARTESIA_API_KEY, LLM_MODEL and the matching provider 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
    それ以外のプロバイダーの場合
    TRUST_PROXY
    任意。自前のリバースプロキシの背後に置く場合は1
  2. エントリーを録音する

    npm run devを実行し、wを押してWebアプリを開きます。スマートフォンで使う場合は、プロジェクトを試せるExpoの無料アプリExpo GoでQRコードを読み取ります。Start recordingでエントリーを録音します。そのあとRecapを開いてWrite my recapをタップします。

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

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

プロンプト

Claude CodeCursorCodex

Build a voice journal app in Expo with Cartesia. Start from https://github.com/cartesia-ai/cookbook/tree/main/examples/voice-journal and follow its AGENTS.md for the commands, files and rules. Expo Router API routes hold the keys: /api/transcribe sends each recording to ink-whisper with client.stt.transcribe from @cartesia/cartesia-js, the AI SDK writes the title, mood, reflection and weekly recap, and /api/speak turns the recap into an MP3 with sonic-3.6 through client.tts.generate. Never give a key an EXPO_PUBLIC_ prefix. If I don't have a Cartesia API key yet, follow https://www.cartesia.ai/agent-quickstart.md to get one.

仕組み

録音expo-audio。スマートフォンではm4a、WebではWebM
ink-whisperサーバーが録音をCartesiaに送る
LLMタイトル、気分、振り返り。その後に直近7日間のまとめ
Sonic 3.6まとめをMP3で返す
端末エントリーとまとめは端末に残る

この設計にした理由

録音済みのファイルにストリームは不要

日記のエントリーは録音し終えたものなので、ink-whisperに1回アップロードする方がライブストリームより簡単です。ストリーミングには話している間の生の音声が必要ですが、ExpoのレコーダーはWebではそれを出せません。

まとめは聞くために書く

まとめは直近7日間のエントリーを古い順に読み、聞くための文章として120〜200語で書かれます。Sonic 3.6はそれをMP3で返し、どのプラットフォームでも再生できます。

カスタマイズする

初期設定の音声を変える

デフォルトの声はlib/limits.tsで設定しています。Cartesiaの音声ライブラリから別の声を選び、app/recap.tsxでその紹介文を書き換えます。

別の言語を書き起こす

文字起こしの言語はapp/api/transcribe+api.tsで変えます。次に、app/api/speak+api.tsで読み上げの言語を変え、その言語を話す声を選びます。

気分の種類を変える

気分の一覧はlib/schema.tsにあります。振り返りとまとめのプロンプトはlib/server/prompts.tsにあります。

よくある質問

モバイルアプリでAPIキーは安全ですか?

サーバーに置いておけば安全です。キーを読むのはアプリのサーバールートだけで、スマートフォンに配るアプリには入りません。キーにEXPO_PUBLIC_という接頭辞を付けないでください。Expoはその値をアプリに埋め込み、誰でも読めるようになります。

実際のiPhoneやAndroidで動きますか?

開発中はExpo Goで動きます。ストア向けのビルドでは、サーバールートをデプロイし、アプリからそこを参照させます。Web版はChromeでテストしました。スマートフォン版はビルドできますが、実機では動かしていません。

このまま公開できますか?

できません。サーバールートは誰でも呼べるので、デプロイする前にログインを追加し、各ルートで確認してください。組み込みのレート制限は、軽い悪用を遅らせる程度です。

これはセラピーのアプリですか?

違います。プロンプトは、診断や医療的な助言をしないようモデルに指示しています。エントリーに自傷の話があれば、モデルは信頼できる人や地域の相談窓口を案内します。

まとめに自分の声を使えますか?

このテンプレートではできません。音声クローンはあえて入れていないので、アプリはCartesiaのライブラリの音声だけを使います。

このテンプレートの詳しい手順ガイドはありますか?

はい。レシピでコードを順に解説し、READMEでセットアップ、環境変数、デプロイを説明しています。Cartesia側の仕組みはバッチ書き起こしのAPIリファレンスにあります。

今すぐ始める

専門家に相談する。

音声体験の開発にCartesiaをどう活用できるか、私たちのチームにご相談ください。

営業に問い合わせる

開発を始める。

APIでモデルにアクセスし、数分で音声エージェントを本番環境に導入できます。

Cartesiaを試す