Skip to main content
このガイドでは、commit_strategy=manual で使用している ElevenLabs Realtime Speech to Text からの移行について説明します。

すべての移行ガイド

このガイドには、素の API の説明と SDK コードの両方が含まれています。SDK をインストールするには次のようにします。
すでに Cartesia SDK を使用している場合は、バージョン >=3.2.0 にアップグレードしてください

接続

ElevenLabs の WebSocket URL と認証ヘッダーを Cartesia の /stt/websocket に置き換えます。
ブラウザでは、WebSocket はリクエストヘッダーをサポートしていません。代わりに、API バージョンを cartesia_version クエリパラメーターとして渡し、API キーの代わりに access_token クエリパラメーターで短命のアクセストークンを使用してください。 Cartesia SDK で手動ファイナライズ用の WebSocket に接続します。

クエリパラメーター

ElevenLabs はサンプル形式とレートを 1 つの audio_format トークンにまとめています。Cartesia はこれらを encodingsample_rate に分けています。Cartesia は pcm_s32lepcm_f16lepcm_f32lepcm_alaw も受け付けます。
Cartesia のすべてのエンコーディングは、すべてのサンプルレートに対応しています。

音声の送信

ElevenLabs は各音声チャンクを JSON 形式のテキストフレームでラップし、音声バイトを base64 エンコードします。
Cartesia は音声チャンクをバイナリフレームとして受け取ります。生の音声バイトを直接送信してください。
  • 以前のテキストを渡す必要はありません
  • サンプルレートは接続時に sample_rate クエリパラメーターによって決定されます
Cartesia の制御コマンドは JSON ではなく、プレーンなテキストフレームです。 バッファ済みの音声をコミットし、セッションを終了せずにトランスクリプトを出力するには、finalize フレームを送信します。
音声ストリームの適切なタイミングで finalize コマンドを送信することが重要です。ユーザーがいつ話し終えるかわからない場合は、自動ファイナライズの使用を検討してください。
残りのすべての音声をコミットしてセッションを閉じるには、close フレームを送信します。
Cartesia はバッファ済みのすべての音声を文字起こしした後、ソケットを閉じます。

SDK での音声の送信

送信前に base64 エンコードされた音声をデコードする

コミットとクローズ

イベントのマッピング

Scribe は中間の partial_transcript イベントを送信し、コミットすると committed_transcript を送信します。
Cartesia は transcript デルタに加えて、finalize および close コマンドの確認応答を送信します。

確定トランスクリプト

Scribe の committed_transcript は、直前のコミット以降のセグメントの完全なテキストを保持します。
これは、それぞれがデルタを保持する 1 つ以上の Cartesia transcript イベントになります。
  • Ink 2 はまだ durationwords を返しません
  • Ink 2 と Whisper は現在、確定トランスクリプト(is_final: true)のみを送信します
続いて Cartesia の flush_done イベントが送信されます。
flush_done および done イベントの is_final プロパティは無視してください
Cartesia の確定トランスクリプトはデルタです。空白を除去したり追加したりせずに連結してください。

サーバーメッセージの例

Scribe は完全なトランスクリプトを送信します。Ink はデルタを送信し、単語の途中で区切ることがあります。

リファレンス

API リファレンス

Cartesia Realtime STT (Manual)

完全なコード例

Cartesia SDK を使用