Skip to main content
このガイドでは、turn_detection: null を指定して使用している OpenAI Realtime Transcription からの移行について説明します。

すべての移行ガイド

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

接続

OpenAI の WebSocket URL と認証ヘッダーを Cartesia の /stt/websocket に置き換え、使用するモデルと入力音声フォーマットをクエリパラメーターとして指定します。
ブラウザでは、WebSocket はリクエストヘッダーをサポートしていません。代わりに、API バージョンを cartesia_version クエリパラメーターとして渡し、API キーの代わりに access_token クエリパラメーターで有効期限の短いアクセストークンを使用してください。 Cartesia SDK で手動ファイナライズ WebSocket に接続します。

セッション設定

OpenAI は session.update ペイロードでセッションを設定します。Cartesia は同等の設定をクエリパラメーターとして受け取ります。
OpenAI は入力形式を audio.input.format で設定します。Cartesia は encodingsample_rate をクエリパラメーターとして受け取ります。OpenAI の PCM 形式は 16 ビット、24 kHz、モノラルです。Cartesia はその sample_rate をそのまま受け付けるため、リサンプリングせずに同じ音声をストリーミングできます。Cartesia は pcm_s32lepcm_f16lepcm_f32le も受け付けます。

音声の送信

OpenAI は各音声チャンクを JSON 形式のテキストフレームでラップし、音声バイトを base64 エンコードします。
Cartesia は音声チャンクをバイナリフレームとして受け取ります。生の音声バイトを直接送信してください。
OpenAI の session.update メッセージに相当するものはありません。パラメーターを変更するには WebSocket を新たに再接続してください。 Cartesia の制御コマンドは JSON ではなく、素のテキストフレームです。 バッファされた音声をコミットしてトランスクリプトを出力するには、input_audio_buffer.commit の代わりに finalize フレームを送信します。
音声ストリームの適切なタイミングで finalize コマンドを送信することが重要です。ユーザーがいつ話し終えるかわからない場合は、自動ファイナライズの使用を検討してください。
残りの音声をすべて文字起こししてセッションを閉じるには、close フレームを送信します。

SDK での音声の送信

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

ファイナライズとクローズ

イベントのマッピング

OpenAI は conversation.item.input_audio_transcription.delta イベントと、コミットされたターンごとに completed イベントをストリーミングします。
Cartesia は transcript デルタに加え、finalize および close コマンドに対する確認応答を発行します。

完了したトランスクリプト

OpenAI の conversation.item.input_audio_transcription.completed イベントはターン全体を含みます。
これは 1 つ以上の Cartesia transcript イベントになり、それぞれがデルタを含みます。
  • Ink 2 はまだ durationwords を返しません
  • Ink 2 と Whisper は現在、確定トランスクリプト(is_final: true)のみを発行します
Cartesia の確定トランスクリプトはデルタです。空白を除去したり追加したりせずに連結してください。

サーバーメッセージの例

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

参考資料

API リファレンス

Cartesia Realtime STT (Manual)

完全なコード例

Cartesia SDK を使用