Finalize コマンドを送信せずに Deepgram Live Audio (Nova) を利用している場合の移行方法を説明します。
すべての移行ガイド
すでに Cartesia SDK を使用している場合は、バージョン
>=3.2.0 にアップグレードしてくださいInk 2 は現時点で英語のみをサポートしています。
今後数ヶ月のうちに他言語の追加を予定しています。
今後数ヶ月のうちに他言語の追加を予定しています。
接続
Deepgram の WebSocket URL と認証ヘッダーを、Cartesia の/stt/turns/websocket に置き換えます。
cartesia_version クエリパラメーターで渡し、API キーの代わりに短命のアクセストークンを access_token クエリパラメーターで使用します。
Cartesia SDK を使って自動ファイナライズ用の WebSocket に接続します。
クエリパラメーター
encoding
encoding
音声の送信
どちらの API も、同じ方法でバイナリ WebSocket フレームとして生の PCM 音声を受け付けます。Cartesia は次のエンコーディングをサポートしていません:Deepgram のflac、amr-nb、amr-wb、opus、ogg-opus、speex、g729
Finalize コマンドに相当するものはありません。Ink はターン境界を自動的に検出し、ユーザーが話し終えると turn.end を発行するため、フラッシュする必要はありません。
KeepAlive メッセージに相当するものはありません。接続には 3 分のアイドルタイムアウトがあり、音声チャンクを送信するたびにリセットされます。接続を維持するには、音声(無音かどうかを問わず)をストリーミングし続けてください。
イベントのマッピング
Deepgram は 4 種類のサーバーメッセージを発行し、トランスクリプト結果と個別の音声区間シグナルを混在させています。 Cartesia は同じ情報をターンのライフサイクルにまとめます:turn.start、turn.update、turn.eager_end、turn.resume、turn.end。完全なステートマシンについてはターン検出を参照してください。
Deepgram の Results メッセージ
Deepgram の Results には多くの情報が含まれています。同様の情報は Cartesia の turn.update および turn.end イベントから取得できます。
Deepgram は
UtteranceEnd と speech_final: true を別々に送信しますが、これらは「ユーザーが話し終えた」という同じ意味を持ちます。Cartesia はこれを単一の高精度シグナル turn.end に簡素化しています。Results メッセージ:
turn.update / turn.end イベントになります:
turn.start と turn.resume イベントはトランスクリプトを含みません。サーバーメッセージの例
Hello! Nova’s transcripts are joined with spaces. Ink’s are not.
参考資料
API リファレンス
Cartesia Realtime STT (Auto)
完全なコード例
Cartesia SDK を使用