メインコンテンツへスキップ
Cartesia の Realtime Speech-to-Text (Manual) API は、Deepgram の Live Audio (Nova) API と類似しています。 両 API とも WebSocket 経由で音声をストリーミングし、トランスクリプトを利用可能になり次第発行するため、既存の Nova インテグレーションの移植は、主にフィールド名の変更と接続パラメータの更新です。 Ink にユーザーターンを自動検出させたい場合は、代わりに Realtime Speech-to-Text (Auto)Deepgram Flux からの移行ガイド を参照してください。 このガイドは WebSocket の直接利用を扱います。SDK 固有の例は近日公開予定です。

接続

Deepgram の WebSocket URL と認証ヘッダーを Cartesia のものに置き換えます。
- wss://api.deepgram.com/v1/listen?model=nova-3&encoding=linear16&sample_rate=16000
+ wss://api.cartesia.ai/stt/websocket?model=ink-2&encoding=pcm_s16le&sample_rate=16000
- Authorization: Token <DEEPGRAM_API_KEY>
+ X-API-Key: <CARTESIA_API_KEY>
ブラウザでは、WebSocket はリクエストヘッダーをサポートしません。代わりに、API バージョンを cartesia_version クエリパラメータで渡し、API キーの代わりに短命の アクセストークンaccess_token クエリパラメータで使用してください。

クエリパラメータ

Deepgram NovaCartesia Ink備考
model=nova-3(必須)model=ink-2(必須)全オプションは モデル を参照してください。
encoding=linear16(必須)encoding=pcm_s16le(必須)linear16pcm_s16lelinear32pcm_s32lemulawpcm_mulawalawpcm_alaw
sample_rate(必須)sample_rate(必須)変更なし。
languagelanguageink-2 は現在 en のみサポート。他の言語 には ink-whisper を使用してください。
cartesia_version=2026-03-01詳細は API の規約 を参照してください。
multichannelchannelsWebSocket 接続ごとにモノラルの音声ストリームを送信してください。
diarize近日公開!
keytermkeywords近日公開!
endpointingutterance_end_msinterim_resultsvad_eventspunctuatesmart_formatnumeralsdictationredactreplacesearchdetect_entitiesprofanity_filter同等機能なし。

音声の送信

両 API とも、バイナリ WebSocket フレームとして生の音声を受け取ります。音声パイプラインの変更はなく、宣言した encodingsample_rate にバイトが一致することを確認するだけです。 Cartesia の制御コマンドは JSON ではなく、プレーンなテキストフレームです。 モデルにバッファされた音声をフラッシュし、トランスクリプトを発行させるには:
- { "type": "Finalize" }
+ finalize
セッションをクリーンにクローズするには:
- { "type": "CloseStream" }
+ close
Cartesia には Deepgram の KeepAlive メッセージに相当するものはありません。接続には 3 分のアイドルタイムアウトがあり、音声チャンクを送信するたびにリセットされます。維持するには(無音でも)音声をストリーミングし続けてください。

イベントマッピング

Deepgram は 4 種類のサーバーメッセージタイプを発行します。Cartesia はトランスクリプトのチャンクに加えて、finalize および close コマンドの確認応答を発行します。
Deepgram Nova (type)Cartesia (type)備考
Resultstranscriptメインのトランスクリプトイベント。下にあるペイロードの差分を参照してください。
Metadata同等機能なし。
UtteranceEnd同等機能なし。必要であればクライアント側 VAD を実行するか、Realtime STT を使用してください。
SpeechStarted同等機能なし。必要であればクライアント側 VAD を実行するか、Realtime STT を使用してください。
flush_donefinalize の確認応答。
doneclose の確認応答。WebSocket がクローズする直前に送信されます。
errorWebSocket 上のエラーイベント。
Deepgram の Results メッセージ:
{
  "type": "Results",
  "channel_index": [0, 1],
  "duration": 1.7,
  "start": 0.0,
  "is_final": true,
  "speech_final": true,
  "channel": {
    "alternatives": [
      {
        "transcript": "Hi I need to cancel my subscription please.",
        "confidence": 0.98,
        "words": [...]
      }
    ]
  },
  "metadata": {...}
}
これは Ink の transcript イベントになります:
{
  "type": "transcript",
  "is_final": true,
  "request_id": "2ff8af53-4d38-479d-8287-58940f01c701",
  "text": "Hi I need to cancel my subscription please.",
  "duration": 1.7,
  "language": "en",
  "words": [...]
}
Cartesia の text は、セッション全体の累積トランスクリプトではなく、前回の is_final: true チャンク以降のデルタです。完全なトランスクリプトを組み立てるには、is_finaltrue のすべてのチャンクから text を連結してください。 トランスクリプトを正しく組み立てるため、text から空白を取り除いたり、チャンク間に空白を追加したりしないでください。

同等機能のないフィールド

Cartesia は以下を発行しません:
  • channel.alternatives — Cartesia はトップレベルで最良のトランスクリプトを 1 つ返します
  • channel_indexfrom_finalize
  • speech_finalis_final と無音ベースのファイナライズを併用してください
  • confidence(単語ごとおよび発話ごと)
  • entitiesmetadatamodel_info
  • punctuated_wordspeaker(単語ごと) — diarization は近日公開予定です