Skip to content

Repository files navigation

VRCT-TTS

VRCT-TTS: 多言語対応音声合成アプリケーション

VRCTとVOICEVOXエンジンを連携させ、リアルタイム翻訳された音声メッセージを高品質な音声で再生するデスクトップアプリケーションです。VOICEVOX(日本語)とgTTS(多言語)の両方のTTSエンジンに対応し、翻訳前と翻訳後の音声を個別に制御できます。

🎯 主な機能

🌍 多言語対応

  • バイリンガルUI: 英語・日本語の完全対応(設定即時切り替え)
  • 翻訳前・翻訳後音声: 原文と翻訳文を別々のTTSエンジンで再生
  • gTTS多言語サポート: 60以上の言語に対応

🎵 高度な音声制御

  • デュアル出力対応: メイン・サブの2つのオーディオデバイスに同時出力
  • リアルタイム音量・速度調整: スライダーで即座に調整
  • ホスト別デバイス管理: オーディオドライバごとのデバイス分類

🔌 WebSocket連携

  • リアルタイム通信: VRCTからの翻訳メッセージをリアルタイム受信
  • トークン認証対応: VRCT側のWebSocketトークン認証(?token=...)に対応。トークン未設定なら従来どおり接続
  • 柔軟なTTSエンジン選択: 原文・翻訳文で異なるエンジンを使用可能
  • 自動言語検出: メッセージの言語を自動判定してTTSエンジンを選択

⚙️ 設定管理

  • 即時自動保存: 設定変更時に自動保存(手動保存不要)
  • 詳細設定: キャラクター、スタイル、デバイス、音量、速度を個別保存
  • 言語設定の永続化: UIの言語設定も保存

📋 必要条件

  • Python: 3.8以上
  • VOICEVOX Engine: 別途インストールが必要(日本語音声合成用)
  • OS: Windows(pyaudiowpatch使用)

🚀 インストール方法

1. リポジトリの取得

git clone https://github.com/misyaguziya/VRCT-TTS.git
cd VRCT-TTS

2. 依存関係のインストール

pip install -r requirements.txt

3. VOICEVOX Engineの準備

  1. VOICEVOX Engineをダウンロード
  2. エンジンを起動(デフォルト: http://127.0.0.1:50021

🎮 使用方法

基本の起動

python main.py

実行ファイルの使用(ビルド後)

dist\VRCT-TTS\VRCT-TTS.exe

🖥️ UIガイド

セットアップの流れ(接続 → 読み上げ対象 → 出力 → テスト)に沿った1カラムの縦レイアウトです。使用頻度の低い項目は折りたたみに収めてあります。配色・角丸は VRCT 本体に合わせています。

メイン画面の構成

┌──────────────────────────────────────────┐
│ VRCT-TTS                    [接続ステータス] │  ← ヘッダー
├──────────────────────────────────────────┤
│ 接続                                       │
│  ・WebSocket サーバー URL                  │
│  ・▸ トークン / 詳細設定  (折りたたみ)    │
│  ・[ WebSocket 接続 / 切断 ]  (全幅ボタン) │
├──────────────────────────────────────────┤
│ 読み上げ対象                               │
│  ・[✓] 翻訳前 (原文)      エンジン選択 ▾   │
│  ・[✓] 翻訳後 (訳文)      エンジン選択 ▾   │
├──────────────────────────────────────────┤
│ VOICEVOXの声   ※どちらかで VOICEVOX 使用時のみ表示 │
│  ・キャラクター選択      ・声のスタイル      │
├──────────────────────────────────────────┤
│ オーディオ出力                             │
│  ・出力デバイス(ホスト + デバイス)        │
│  ・+ 2台目の出力先を追加  (折りたたみ)    │
│  ・音量スライダー (0-100%)                 │
│  ・速度スライダー (0.5x-2.0x)              │
├──────────────────────────────────────────┤
│ ▸ テスト再生  (折りたたみ)                │
│  ・テキスト入力                            │
│  ・gTTS 言語選択(テスト用)               │
│  ・[ 再生 (VOICEVOX) ] [ 再生 (gTTS) ]     │
│  ・[ 再生停止とクリア ]                     │
├──────────────────────────────────────────┤
│ ステータス表示        [言語切替]  バージョン │  ← フッター
└──────────────────────────────────────────┘

主要機能の説明

🌐 接続(WebSocket連携)

  1. URL設定: VRCTのWebSocketサーバーURL(デフォルト: ws://127.0.0.1:2231
  2. トークン設定: VRCT側でWebSocketトークン認証が有効な場合、「▸ トークン / 詳細設定」を開き、VRCTの「WebSocket設定」でコピーしたトークンを貼り付けます(ws://host:port/?token=... 形式の完全なURLをURL欄に直接貼り付けてもOK)。トークンが未設定なら従来どおりトークンなしで接続します
  3. 接続管理: ワンクリックで接続・切断(ヘッダー右のステータス表示で状態を確認)
  4. メッセージ処理: JSON形式のメッセージを自動解析

🗣️ 読み上げ対象

  • 翻訳前 (原文) / 翻訳後 (訳文): それぞれ再生のオン/オフと TTS エンジン(VOICEVOX / gTTS)を1行で設定
  • どちらかで VOICEVOX を選ぶと「VOICEVOXの声」セクションが表示されます

🎭 VOICEVOXの声

  • キャラクター選択: 利用可能な全キャラクターから選択
  • スタイル選択: 選択したキャラクターの声質バリエーション
  • 原文・訳文で共通の1つの声が使われます

🔊 オーディオ出力

  • ホスト選択: オーディオドライバー別の出力先選択
  • デバイス選択: 具体的な出力デバイスの指定
  • 2台目の出力先: 「+ 2台目の出力先を追加」を開くと2つのデバイスへ同時出力(第2スピーカー有効化と連動)
  • 音量制御: 0-100%のリアルタイム調整
  • 速度制御: 0.5倍速-2.0倍速の再生速度調整(gTTSのみ)

🧪 テスト再生

  • 折りたたみ内のテキスト欄・言語選択と再生ボタンで、接続なしに音声を確認できます

🔧 設定ファイル

アプリケーションは config.json に以下の設定を自動保存します:

{
  "speaker_id": 1,
  "device_index": 0,
  "device_index_2": 1,
  "speaker_2_enabled": false,
  "host_name": "All",
  "host_name_2": "All",
  "volume": 0.8,
  "speed": 1.0,
  "ws_url": "ws://127.0.0.1:2231",
  "ws_token": "",
  "gtts_lang": "English",
  "source_tts_engine": "VOICEVOX",
  "dest_tts_engine": "gTTS",
  "play_source": false,
  "play_dest": true,
  "language": "English"
}

📁 プロジェクト構成

VRCT-TTS/
├── main.py                 # メインアプリケーション(GUI)
├── voicevox.py            # VOICEVOX Engine APIクライアント
├── voicevox_speaker.py    # VOICEVOX音声再生クラス
├── gTTS_speaker.py        # gTTS音声再生クラス
├── audio_player.py        # オーディオデバイス管理・再生
├── config.py              # 設定管理クラス
├── language.py            # 多言語UI文字列定義
├── vrct_languages.py      # VRCT対応言語マッピング
├── requirements.txt       # Python依存関係
├── build.bat              # ビルドスクリプト
├── VRCT-TTS.spec         # PyInstallerビルド設定
└── fonts/                 # UIフォント
    └── NotoSansJP-VariableFont_wght.ttf

🏗️ ビルド方法

スタンドアローン実行ファイルの作成

build.bat

または手動でのビルド:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
pyinstaller --onedir --clean --name VRCT-TTS --noconsole main.py --add-data "./fonts:fonts"

ビルド完了後、dist\VRCT-TTS\ フォルダに実行ファイルが生成されます。

🔗 VRCT連携の詳細

サポートするメッセージフォーマット

{
  "type": "SENT",
  "message": "Hello world",
  "src_languages": {"1": {"language": "English"}},
  "dst_languages": {"1": {"language": "Japanese"}},
  "translation": ["こんにちは世界"]
}

TTS再生フロー

  1. メッセージ受信: WebSocketからJSONメッセージを受信
  2. 言語判定: 原文・翻訳文の言語を識別
  3. エンジン選択: 設定に基づいてTTSエンジンを選択
  4. 音声合成: 選択されたエンジンで音声生成
  5. デバイス出力: 指定されたオーディオデバイスで再生

🌟 高度な機能

デュアルTTSエンジン

  • 原文用エンジン: VOICEVOX(日本語)またはgTTS(多言語)
  • 翻訳文用エンジン: gTTS(多言語)またはVOICEVOX(日本語)
  • 個別制御: 原文・翻訳文の再生を個別にオン/オフ

リアルタイム音響調整

  • 音量調整: 全エンジン共通の音量制御
  • 速度調整: gTTSの再生速度をリアルタイム変更
  • 即座反映: スライダー操作で設定即座に適用

インテリジェントなデバイス管理

  • ホスト分類: DirectSound、WASAPI、MMEなどドライバー別管理
  • 自動選択: デバイス未選択時の自動選択機能
  • 設定復元: 前回使用デバイスの自動復元

⚠️ 注意事項

  • VOICEVOX Engine: 必ず事前に起動しておく必要があります
  • 音声ファイル: 一時的な音声データはメモリ内で処理されます
  • ネットワーク: gTTSはインターネット接続が必要です
  • パフォーマンス: 長時間の連続使用時はメモリ使用量にご注意ください

📝 ライセンス

このプロジェクトはMITライセンスで提供されています。

使用ライブラリとその制約:

  • VOICEVOX: 各キャラクターの利用規約に従ってください
  • gTTS: Google Translate APIの利用規約に従ってください

🙏 謝辞

  • VOICEVOX: 高品質な日本語音声合成エンジンを提供
  • gTTS: Google Translate APIによる多言語音声合成
  • VRCT: VRChat翻訳ツールとの連携機能を提供

About

Text to Speech for VRCT

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages