マネージドバッファリング
LLM トークンを Cartesia に直接ストリーミングし、API に音声生成を開始するタイミングを決めさせます。これは Cartesia のマネージドボイスエージェントプラットフォームで使われているのと同じアプローチです。max_buffer_delay_ms を 0 より大きい値(デフォルトは 3000ms)に設定し、テキストをトークン単位でストリーミングします。
max_buffer_delay_ms が経過するかのいずれか早い方まで、入ってくるテキストをバッファします。これにより、レイテンシーを最適化しつつ、文単位での集約と同等の結果が得られます。
マネージドバッファリングを使う場面:
- LLM 出力をトークン単位でストリーミングしている
- バッファリングロジックを構築せずに自然に聞こえる音声が欲しい
- 良いデフォルトで簡単な統合をしたい
カスタムバッファリング
バッファリングを自分で処理し、完全なフレーズや文を Cartesia に送信します。max_buffer_delay_ms を 0 に設定すると、API は受け取ったものから即座に音声を生成します。
- 完全な文 は最高のプロソディを生み出しますが、文が完成するのを待つためレイテンシーが増えます。
- 部分文 はレイテンシーを下げますが、チャンクの境界で自然さに欠ける音声になる可能性があります。
- 音声生成を開始するタイミングを正確に制御したい
- 独自の文検出やテキスト集約ロジックがある
- 特定のレイテンシー目標に最適化したい
中途半端な状態を避ける
よくある間違いは、クライアント側でテキストを文やフレーズに集約し、かつ デフォルトのmax_buffer_delay_ms 3000ms を使うことです。これは不要なレイテンシーを引き起こす可能性があります。完全な文を受信した後、API は音声を生成する前に追加入力を最大 3000ms 待つ可能性があるためです。
どちらか一方を選択してください:
- マネージドバッファリング:
max_buffer_delay_ms > 0でトークンをストリーミングし、Cartesia に集約を任せる。 - カスタムバッファリング: テキストを自分で集約し、
max_buffer_delay_ms = 0を設定する。
設定リファレンス
バッファされたテキストから音声を生成する前に、API が追加入力を待つ最大時間(ミリ秒)。
- 範囲: 0〜5000ms
- デフォルト: 3000ms
- カスタムバッファリング(サーバー側バッファリングなし)にする場合は
0に設定 - マネージドバッファリングにする場合は
> 0に設定
最良の結果を得るためのヒント
- 文を句読点で終わらせる。 終端の句読点(
.、?、!)がない場合、モデルはテキストを未完了として扱い、生成前にバッファ遅延の経過を待つ可能性があります。詳細は 継続を使った入力ストリーミング を参照してください。 - 入力完了を通知する。 ターンが完了したら、
continue: false(WebSocket)またはno_more_inputs()(SDK)を使って、モデルが追加テキストを待たないようにします。 - 現実的な入力パターンでテストする。 バッファリングの挙動はテキストの到着方法に依存します。事前に書かれたテキストではなく、実際の LLM 出力でテストしてください。