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 | ローカル | 完全オフライン、カスタマイズ可能 |
| Custom | HTTP | OpenAI 互換の任意の TTS エンドポイント |
キューアーキテクチャ
TTS クライアントはプロデューサー・コンシューマーパターンを使用します:
- リクエストキュー: セッションマネージャーによりテキスト文がエンキュー
- ワーカースレッド: テキストをデキューし、TTS API を呼び出し、オーディオチャンクを生成
- レスポンスキュー: リサンプリングと WebSocket 配信の準備が整ったオーディオチャンク
音声クローニングフロー
- ユーザーが
/api/characters/voice_clone経由で音声サンプルをアップロード - 音声が DashScope の音声登録 API に送信される
voice_idが返され、キャラクター設定に保存される- 以降の TTS 呼び出しに
voice_idが含まれ、パーソナライズされた合成が行われる
中断処理
ユーザーが中断した場合:
- 両方のキューがフラッシュされる
- 進行中の TTS API 呼び出しがキャンセルされる
- ワーカーは即座に新しい入力を受け付ける準備が整う
