Discord 読み上げ Bot
VOICEVOX・AivisSpeech・COEIROINK の3エンジンに対応した Discord VC 読み上げ Bot。ユーザごとの音声切り替えとサーバー辞書を備え、Docker Compose 一発で起動できる。
Discord のボイスチャットで、テキストチャンネルの発言を読み上げる Bot。
VC で遊んでいるとき、マイクを使えない(使わない)メンバーの発言が流れてしまうのが課題だった。
既製の読み上げ Bot もあるが、複数音声エンジンを同じ VC で同時に利用したいため開発した。
できること
- 参加中の VC に接続し、複数のテキストチャンネルを読み上げ対象にできる
- ユーザごとに読み上げ音声を切り替えられる — VOICEVOX / AivisSpeech / COEIROINK の3エンジンから話者を選べる
- サーバーごとの辞書で固有名詞や癖のある単語の読み方を調整できる
/sayで任意のテキストを任意の声でその場で読み上げ
実装のポイント
- 3つの音声合成エンジンをそれぞれコンテナとして立て、Bot からは共通のインターフェースで扱う構成。エンジンの追加・差し替えがしやすい
- 利用可能な話者一覧は一定間隔で自動リフレッシュし、エンジン側のモデル追加に追従する
- 話者毎の音量のノーマライズを行い、エンジンや話者による音量の違いを吸収する
- CPU 用と GPU 用の Docker Compose を用意し、環境に合わせて選べる
- 停止猶予を設定し、再起動やデプロイの際も VC からきれいに切断してから終了する
- webhook による起動・終了・エラー通知つきで、放置運用でも状態がわかる
身内のサーバーで日常的に稼働している、いちばん「道具」として使われているプロジェクト。