メインコンテンツへスキップ
Cartesia WebSocket APIを使用すると、テキスト入力と音声出力を同時にストリーミングできます。これは、LLMから逐次テキストが生成される場合のボイスエージェントなどのリアルタイムユースケースに最適です。 テキストをチャンクに分けてCartesiaにストリーミングし、音声チャンクをリアルタイムで受け取ります。これは、LLMからのように逐次テキストが生成される場合に理想的です。

前提条件

  • Cartesia APIキー。こちらで作成し、.bashrc または .zshrc に追加してください:
    ブラウザからCartesia APIにアクセスする際は、APIキーを安全に保つため、認証には短期間有効なアクセストークンを使用してください。クライアントアプリケーションを認証する を参照してください。
  • ffplay(FFmpegの一部)。音声出力を再生するために使用されます: オペレーティングシステム用のFFmpeg実行可能パッケージを FFmpegダウンロードページ からダウンロードしてください。
  • 言語ランタイムとパッケージマネージャー:

テキストをストリーミングして音声を再生する

1

クライアントライブラリをインストールする

詳細は Cartesia Pythonクライアントライブラリ を参照してください。
2

WebSocket経由でテキストをストリーミングする

realtime-tts.py
3

クイックスタートを実行する

これにより、テキスト入力がCartesiaにストリーミングされ、ffplay を使用してストリーミング音声出力が再生されます。(デバイスの音量がオンになっていることを確認してください!)

仕組み

WebSocket接続は複数の コンテキスト を管理でき、各コンテキストは全二重の連続したストリームです。テキストチャンクをプッシュし、生成された音声チャンクをリアルタイムで受け取ります。 これは、LLMからリアルタイムでテキストを生成する場合にうまく機能します: CartesiaのTTSシステムはコンテキスト履歴を保持し、新しいチャンクを順次そこに追加していきます。これにより、生成された音声がトーンと韻律で連続性と一貫性を保ち、完全なトランスクリプトが準備できるのを待つ必要がないため、レイテンシを最小限に抑えます。 要約すると、WebSocket接続を確立した後、コードは以下のことを行います:
  1. context()コンテキストを作成 します。
  2. push() で逐次 テキストをプッシュ します。各呼び出しは continue: true でチャンクを送信し、さらにテキストが続くことをモデルに伝えます。詳細は continuations を参照してください。
  3. no_more_inputs()完了を通知 します。これは continue: false を送信して、これ以上テキストが来ないことをモデルに伝えます。
  4. 生成された 音声チャンクを受信 します。
これは、リアルタイムLLM WebSocket APIに似たストリーミングパターンを使用しています: テキストフラグメントが到着するたびに送信し、生成された出力(この場合は音声チャンク)を逐次受信します。

次のステップ

プレイグラウンドでボイスを選ぶ

音声を選択するか、自分の音声を複製して、音声IDをこのクイックスタートにコピーします。

WebSocketリクエストパラメータを調整する

voicemodel_id、または output_format を変更し、再実行して出力品質と挙動を比較します。

Continuationsを使用して入力をストリーミングする

チャンクをまたいだ自然な流れを保ちつつ逐次テキストを送信し、長文やLLM駆動の音声をよりスムーズに生成します。