メインコンテンツへスキップ
他のエンドポイントに関するヒントは、トップレベルの トラブルシューティング ページを参照してください。

トランスクリプトエラー

transcript イベントは、音声全体のトランスクリプトではなく、最後の確定トランスクリプト以降のデルタ を運びます。is_finaltrue のすべてのイベントの text を追記してください:
is_final が true のすべての transcript イベントを必ず含めてください。
text をトリミングしないでください
text を空白を挟んで結合しないでください
セッションの音声をすべて送信し終えたら、"close" を送信して、バッファリングされている音声をフラッシュし、残りの transcript イベントを発行するようモデルに伝えます。すべての音声が処理されると、サーバーは { "type": "done" } を送信し、その後でソケットをクローズします。サーバーは文字起こしの精度を高めるために音声を一定量バッファします。close コマンドを送信しなかったり、メッセージの読み取りを早期に停止したりすると、バッファされた音声は処理されません。最後の 1 秒の音声を気にしないのであれば、これは問題ありません。
WebSocket 接続を確立する際に、クエリパラメーターとして ?language=xx (xx を ISO 639-1 言語コードに置き換え) を必ず含めてください。このエンドポイントはまだ言語検出をサポートしていません。対応言語については Models を参照してください。
モデルは、接続時に宣言した encodingsample_rate を使ってバイト列をデコードします。これらのパラメーターが正しくなくても、Cartesia のサーバーは エラーを返さない場合がありますパラメーターを検証するには、音声データを保存し、ffplay で再生してみてください:
再生がおかしく聞こえる場合 (かなり明らかにわかるはずです)、encodingsample_rate がデータと一致していません。音声がきれいに再生されるように修正し、その同じ値を API に送ってください。適切なパラメータを見つけるには 音声入力 を参照してください。
finalize は、ユーザーの発話が終わった後にのみ送信するようにしてください。発話の途中でファイナライズすると、文字起こしエラーが発生します。

高レイテンシー

文字起こしは finalize コマンドによってトリガーされます。ユーザーが発話を終えたことを示したとき、または VAD がユーザーの発話終了を検出したときに送信して「ターンをファイナライズ」してください:
finalize を送信しない場合、モデルは無音ベースの自動ファイナライズにフォールバックします。これは設計上、より低速です。ユーザーの発話が終わったことを確認するため、無音が続くのを待つ必要があるからです。finalize は必要なだけ何度でも送信してください。セッションを恒久的にクローズする close と混同しないでください。finalize は、音声ストリームの妥当なタイミングでのみ送信する必要があります。発話の途中でファイナライズすると、文字起こしエラーが発生します。
ユーザーが発話を開始・終了するタイミングが分からない場合は、 リアルタイム STT (Auto) を試してみてください。 モデルがターンの境界を検出し、ユーザーの発話が終わったらすぐに最終トランスクリプトを発行します。“manual” から “auto” に切り替えると、すぐに最終トランスクリプトのレイテンシが改善されます。 “manual” エンドポイントは、クライアントが finalize を送信することを想定し、ユーザーの発話による最後のトランスクリプトチャンクを保留するためです。“auto” エンドポイントは、クライアントから音声以外を送ることを想定していません。最終トランスクリプトの準備ができ次第、turn.end イベントで送信します。
Cartesia の API は連続した音声ストリームを想定しています。 音声の送信を停止すると、サーバーはユーザーが無音であると見なすのではなく、追加の音声チャンクが到着するのを待ちます。これは通常、ネットワークの遅延に対応するために望ましい挙動ですが、クライアントが音声入力をミュートしている間、無音 (すべてゼロ) を送信し続ける必要があることも意味します。

サーバーエラー

Cartesia のリアルタイム WebSocket エンドポイントは、音声がほぼ発話と同じ速度で到着することを想定しています。 ソケットに一度に大量の音声をプッシュすると、サーバー側のバッファをオーバーロードする可能性があり、内部サーバーエラーとして現れる場合があります。小さなチャンク (各 50〜200 ミリ秒) でストリーミングし、リアルタイムに合わせて、ウォールクロック 1 秒あたり平均 1 秒の音声を送るようにペースを調整してください。JavaScript の例 もご覧ください。完全なファイルを一度に文字起こししたい場合は、ファイル全体を 1 回のリクエストで受け付ける Batch STT の利用を検討してください。