Skip to content

TTS Client

ファイル: main_logic/tts_client.py(約2300行)

TTS クライアントは、統一されたキューベースのインターフェースで複数のプロバイダーにわたるテキスト音声合成を処理します。

ファクトリ関数

python
from main_logic.tts_client import get_tts_worker

worker = get_tts_worker(config)

アクティブなプロバイダーと音声設定に応じた TTS ワーカーを作成します。

サポートされるプロバイダー

プロバイダーモジュール特徴
DashScope CosyVoiceクラウド高品質、音声クローニング、ストリーミング
DashScope TTS V2クラウド低レイテンシバリアント
GPT-SoVITSローカル完全オフライン、カスタマイズ可能
CustomHTTPOpenAI 互換の任意の TTS エンドポイント

キューアーキテクチャ

TTS クライアントはプロデューサー・コンシューマーパターンを使用します:

  1. リクエストキュー: セッションマネージャーによりテキスト文がエンキュー
  2. ワーカースレッド: テキストをデキューし、TTS API を呼び出し、オーディオチャンクを生成
  3. レスポンスキュー: リサンプリングと WebSocket 配信の準備が整ったオーディオチャンク

音声クローニングフロー

  1. ユーザーが /api/characters/voice_clone 経由で音声サンプルをアップロード
  2. 音声が DashScope の音声登録 API に送信される
  3. voice_id が返され、キャラクター設定に保存される
  4. 以降の TTS 呼び出しに voice_id が含まれ、パーソナライズされた合成が行われる

中断処理

ユーザーが中断した場合:

  1. 両方のキューがフラッシュされる
  2. 進行中の TTS API 呼び出しがキャンセルされる
  3. ワーカーは即座に新しい入力を受け付ける準備が整う

MIT ライセンスの下で公開。