録音から作る
議事録

ブラウザーで会議を録音するか、録音ファイルをアップロードします。Cartesiaのink-whisperモデルが音声を文字にします。そのあとLLMが、タイトル、要約、決定事項、担当者付きのアクションアイテムを書きます。
Pricing syncという15秒の会議の議事録。3文の要約、2つの決定事項、PriyaとMarcusが担当者の未完了のアクションアイテム3つがあり、横にNotesタブ、Transcriptタブ、Copy as Markdownボタンがある

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

モデル
ink-whisper
言語
メニューに17言語
ライセンス
Apache-2.0
技術スタック
Next.js 16React 19AI SDKIndexedDBshadcn/ui
Cartesia の製品
Ink

できること

会議はブラウザーに保存されるので、データベースもログインも不要です。どの会議もMarkdownとしてコピーできます。別のページには、すべての会議の未完了のアクションアイテムがまとまります。

自分で動かす

  1. インストールする

    Node 22.22以降で下のコマンドを実行します。pnpmでも動きます。下の表を見て.env.localを埋めます。足りないキーがあれば、ページがどれかを表示します。

    npx degit cartesia-ai/cookbook/examples/meeting-notes meeting-notes
    cd meeting-notes
    # add CARTESIA_API_KEY, LLM_MODEL and the matching LLM 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では不要
    APP_PASSWORD
    ローカルでは任意。Vercelでは必須。公開するならnoneを設定
    TRUST_PROXY
    任意。自前のリバースプロキシの背後に置く場合は1
  2. 会議を録音する

    開発サーバーが表示するローカルのURLを開き、Start recordingを押します。数秒話します。次にStop and write notesを押します。音声ファイルを使う場合は、録音欄の上にあるアップロードのタブに切り替えます。

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

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

プロンプト

Claude CodeCursorCodex

Build a meeting notes app with Cartesia speech to text. Start from https://github.com/cartesia-ai/cookbook/tree/main/examples/meeting-notes and follow its AGENTS.md for the commands, files and rules. The server route transcribes the recording with client.stt.transcribe from @cartesia/cartesia-js and model ink-whisper (ink-2 is streaming only and does not work on the batch endpoint). The AI SDK writes the summary, decisions and action items with generateText and a zod schema. The browser posts audio to the route and never sees CARTESIA_API_KEY. If I don't have a Cartesia API key yet, follow https://www.cartesia.ai/agent-quickstart.md to get one.

仕組み

レコーダーブラウザーが24 kbpsで録音する。ファイルのアップロードも可
ink-whisperCartesiaが録音全体を1回のリクエストで文字にする
議事録LLMが要約、決定事項、アクションアイテムを書く
IndexedDB書き起こしと議事録を保存。音声は保存しない

この設計にした理由

書き起こしを先に保存する

ink-whisperが文字起こしを返した時点でページはそれを保存し、そのあとでノートを依頼します。要約に失敗しても会議には文字起こしが残り、LLMにもう一度依頼するRetryボタンが表示されます。

録音済みのファイルにはファイル用のモデルを使う

Cartesiaの音声認識モデルは2つあります。Ink 2はストリーミング中の音声をその場で文字にするモデルで、録音済みのファイルは受け付けません。ink-whisperは録音全体を1回のリクエストで受け取るので、このアプリはそちらに送ります。

アップロードは4 MBまで

Vercelは4.5 MBを超えるリクエスト本文を拒否します。そのためアプリはアップロードを4 MBまでに制限し、録音は3.6 MBか20分で止まります。別のホストでは、lib/limits.tsで上限を引き上げられます。

カスタマイズする

別の言語を書き起こす

録音の前にSpoken languageメニューで言語を選びます。メニューに言語を足すには、lib/limits.tsの一覧に追加します。モデル自体はほかにも多くのISO 639-1コードに対応しています。

議事録の内容を変える

項目を増やしたり減らしたりするには、lib/schema.tsのスキーマを編集します。LLMへの指示を変えるには、lib/prompt.tsを編集します。

議事録をサーバーに保存する

lib/store.tsにある5つの非同期関数を、データベースを呼ぶ処理に置き換え、フックはそのまま残します。

よくある質問

会議の音声はどこに送られますか?

ブラウザーは音声をアプリ自身のサーバーに送り、サーバーがそれをCartesiaに渡して文字起こしし、その後に破棄します。ノートを作るために文字起こしはあなたのLLMプロバイダーに送られますが、Cartesiaのキーがサーバーの外に出ることはありません。録音する前に全員の同意を得てください。

会議の最中にリアルタイムで書き起こしを見られますか?

このアプリではできません。録音を止めたときに全体をまとめて送ります。リアルタイムの字幕が必要なら、マイクの音声をCartesia Ink 2にストリーミングしてください。

どの言語に対応していますか?

メニューには英語やスペイン語から日本語、ウクライナ語まで17言語があります。LLMは会議の言語でノートを書きます。

会議1回の料金はいくらですか?

文字起こしは、無音を含む音声2秒ごとにCartesiaの1クレジットかかるので、30分の会議なら900クレジットです。ノートの作成には、あなたのプロバイダーのキーでLLMを1回呼び出す分が加わります。

誰が何を言ったかわかりますか?

いいえ。文字起こしには話し手の区別がないので、アクションアイテムに担当者が付くのは、会議中に誰かがその人の名前を口にしたときだけです。LLMには推測しないよう指示しています。

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

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

今すぐ始める

専門家に相談する。

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

営業に問い合わせる

開発を始める。

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

Cartesiaを試す