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

すべての移行ガイド

このガイドには、素の API の説明と SDK コードの両方が含まれています。SDK をインストールするには次のようにします。
すでに Cartesia SDK を使用している場合は、バージョン >=3.2.0 にアップグレードしてください
Ink 2 は現時点で英語のみをサポートしています。
今後数ヶ月のうちに他言語の追加を予定しています。

接続

OpenAI の WebSocket URL と認証ヘッダーを Cartesia の /stt/turns/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 に再接続してください。 すべての音声をコミットしてセッションを閉じるには、JSON 形式のテキストフレームを送信します。
Cartesia はバッファーされたすべての音声を文字起こしし、その後ソケットを閉じます。
現在 OpenAI で input_audio_buffer.commit を使用してセッションの途中で音声をコミットしている場合は、代わりに Cartesia の手動ファイナライズの使用を検討してください。詳細は移行ガイドのページを参照してください。

SDK を使用した音声の送信

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

終了

イベントのマッピング

OpenAI は input_audio_buffer.speech_started / speech_stopped / committed でターンを通知し、その後ターンごとにトランスクリプトのデルタと completed イベントを一気に送信します。 Cartesia は同じ情報をターンのライフサイクルにまとめます。turn.startturn.updateturn.eager_endturn.resumeturn.end です。完全なステートマシンについてはターン検出を参照してください。

確定したトランスクリプト

OpenAI の conversation.item.input_audio_transcription.completed イベント:
は、Cartesia の turn.end イベントになります:
turn.startturn.resume イベントはトランスクリプトを含みません。

サーバーメッセージの例

OpenAI はターンごとにバッチ処理します。Ink はターン中にストリーミングします。

参考資料

API リファレンス

Cartesia Realtime STT (Auto)

完全なコード例

Cartesia SDK の使用