作品一覧へ戻る

03 / PROJECT DETAIL

ことつな!

Twitchのチャット、配信イベント、翻訳、読み上げ、OBS表示を一つのデスクトップアプリにまとめ、配信中の会話へ海外コメントも自然に混ざれるようにしたBOTです。

技術スタック

  • Python 3.12
  • CustomTkinter
  • TwitchIO
  • CTranslate2
  • Sherpa-ONNX
  • VOICEVOX
  • OBS

01

解きたかったこと

配信者がコメントを追いながら翻訳サイトを操作する負担を減らし、日本語と英語の視聴者が同じ会話へ入りやすくすることが出発点です。翻訳だけでなく、読み上げ、イベント通知、OBS表示、辞書、コマンドまで配信中の一連の流れとして扱います。

02

構成

  • TwitchIOでチャットを受け取り、フィルターとカスタム辞書を通してNLLB-200・CTranslate2でローカル翻訳
  • VOICEVOXで読み上げ、未起動時はpyttsx3へフォールバック
  • ReazonSpeechとSherpa-ONNXでマイク音声をローカル認識し、翻訳へ接続
  • OBS向けHTML出力とローカルoverlay APIで、翻訳履歴やサードパーティエモートを配信画面へ反映
  • EventSub WebSocketでフォロー、サブスク、ギフト、Bitsを検知して画面・効果音へ通知

03

設計と工夫

  • 翻訳と音声認識をローカル優先にし、日英双方向の自動判定・手動モード・除外フィルターを切り替え可能にした
  • ネットワーク障害には指数バックオフで再試行し、GUIは差分更新、翻訳はバッチ処理して配信中の負荷を抑制
  • コメント履歴と参加者数へ上限を設け、必要ならメモリ閾値による自動再起動も選択可能
  • クラッシュレポートは明示的なオプトインで、チャンネル名・コメント本文・トークンを送らない境界を文書化

04

検証

  • pytestとpytest-asyncioで同期・非同期処理を検証し、GitHub Actionsで継続実行
  • 翻訳、Twitch接続、OBS連携、設定保存などを分割し、CIでは必要な依存関係を固定条件に合わせて導入
  • ログを日次ローテーションし7日で整理できるようにして、運用時の調査と肥大化防止を両立

05

制約と次の一手

  • 高品質な読み上げにはVOICEVOX Engine、音声翻訳にはマイクとローカル認識モデルが必要
  • Twitch接続には利用者自身のTwitchアプリ登録と認証が必要
  • わんコメ互換プラグインを使う場合は、Pythonアプリとは別にNode.jsが必要
作品一覧へ戻る