discordのテキストチャンネル上で発言されたメッセージをボイスチャンネルで読み上げるBOTです。
Node.js, Discord.js, Docker, VOICEVOX 等を使用します。
- VOICEVOX, AivisSpeech両エンジン対応
- スラッシュコマンドにより指定のVCへ参加
- 豊富なカスタマイズ要素
- ユーザーごとに声を設定
- 声の詳細なオプションも設定可
- 辞書の登録/削除/表示/インポート/エクスポート
- 指定されたキーワードでGoogle検索(追加の設定必須)
- ずんだもんのように、語尾に
のだ!
を自動で付加するモード - 特定のメッセージが送信された際に自動で返信して会話を盛り上げます
- 指定ユーザーのアバター画像を表示
- BOTをホストしているサーバーの情報を表示
- ステータスメッセージでコマンドを紹介
- デバッグモード
/join
: ボイスチャンネルに参加/leave
: ボイスチャンネルから退出/set_voice
: ユーザーごとに声を設定/set_intonation
: 全体の抑揚を設定します/set_pitch
: 全体の声高を設定します/set_speed
: 全体の話速を設定します/set_volume
: 全体の音量を設定します/voice
: 現在設定中のキャラクターと話し方を取得します/ずんだもんモード
: ずんだもんモードを有効/無効にします- 送信したメッセージの最後に
のだ
を自動で付加し、読み上げます
- 送信したメッセージの最後に
/set_dictionary
: 読み上げ辞書を設定します/remove_dictionary
: 読み上げ辞書を削除します/import_dictionary
: 読み上げ辞書を登録します/export_dictionary
: 登録済の読み上げ辞書を出力します/dictionary
: 登録済の読み上 8000 げ辞書を表示します
/help
: ヘルプを表示/command
: 利用可能なコマンド一覧を表示/avatar
: 指定したユーザーのアバター画像を表示/google
: Google検索(追加の設定必須(後述))/license
: 本BOTの利用規約及びライセンスを表示/google
: Google検索をします(本実装)(事前にGoogleSearchAPIの設定が必要)/sys_info
: BOTをホストしているサーバーの情報を表示(CPU
,memory
,GPU
のオプション有)(Docker環境下では一部オプションが正常動作しません)
- 不定期にエラーなしに勝手に切断される問題 (#8)
- 不定期(高頻度)にずっと話し中状態になり音声が再生されなくなる問題 (#9)
何個か方法があるのでお好きな方法でインストールしてください。
上から順におすすめ順になっています。
(注) インストールには約10GBの空き容量が必要です。推奨スペック(独断)については以下をご覧ください。
推奨スペック
- CPU: インテル® Core™ i7 プロセッサー 8th Gen 以上 / AMD Ryzen™ 7 5700 以上
- RAM: 16GB 以上
- CPU: インテル® Core™ i7 プロセッサー 8th Gen 以上 / AMD Ryzen™ 7 5700 以上
- RAM: 16GB 以上
- GPU: NVIDIA GTX 1060 (6GB) 以上
(GPUはRTX3080Ti以上、RAMは32GBくらいあると幸せになれるかも...)
-
config.json
を作成{ "token": "BOTのtoken", "clientId": "BOTのclientId" }
-
Dockerをインストール
-
compose.yml
を編集 (NVIDIA製ではないGPUを搭載している場合は、CPUを選択してください)... - type: bind # config.jsonのパスを指定してください(デフォルト: "./config.json") source: ./config.json target: /app/config.json - type: bind # 変更したければご自由に source: ./.data ... voicevox: # GPU(Nvidia)を使用する場合は次の行のコメントアウトを外し、次々行をコメントアウトしてください # image: voicevox/voicevox_engine:nvidia-latest image: voicevox/voicevox_engine:cpu-latest ... aivis: # GPU(Nvidia)を使用する場合は次の行のコメントアウトを外し、次々行をコメントアウトしてください # image: ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest image: ghcr.io/aivis-project/aivisspeech-engine:cpu-latest ... #aivisのキャッシュファイルを保存するフォルダを指定してください(デフォルト:cache) source: ./cache target: /home/user/.local/share/AivisSpeech-Engine-Dev ...
-
以下のコマンドを実行
cd "compose.ymlを配置したディレクトリ" docker compose up
-
FFmpegをインストール
(winget経由の場合)
winget install Gyan.FFmpeg
-
Node.jsをインストール(動作確認済: v22.13.1)
-
ライブラリをインストール
npm i
-
config.json
を作成{ "token": "BOTのtoken", "clientId": "BOTのclientId" }
-
Dockerをインストール
-
VOICEVOXのインストール,サーバ起動
Docker上でサーバーを起動する場合は以下の通りです。(Docker以外でも可)
CPU
docker pull voicevox/voicevox_engine:cpu-latest docker run --rm -it -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:cpu-latest
GPU(CUDA)
docker pull voicevox/voicevox_engine:nvidia-latest docker run --rm --gpus all -p '127.0.0.1:50021:50021' voicevox/voicevox_engine:nvidia-latest
※ GPU(CUDA)はNvidia製GPUでしか動作しません
-
実行
node src
これをすることにより、AivisSpeech読み上げに対応します。
-
AivisSpeech インストール,サーバ起動
Docker上でサーバーを起動する場合は以下の通りです。(Docker以外でも可)(詳細)
CPU
docker pull ghcr.io/aivis-project/aivisspeech-engine:cpu-latest docker run --rm -p '10101:10101' \ -v ~/.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev \ ghcr.io/aivis-project/aivisspeech-engine:cpu-latest
GPU(CUDA)
docker pull ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest docker run --rm --gpus all -p '10101:10101' \ -v ~/.local/share/AivisSpeech-Engine:/home/user/.local/share/AivisSpeech-Engine-Dev \ ghcr.io/aivis-project/aivisspeech-engine:nvidia-latest
※ GPU(CUDA)はNvidia製GPUでしか動作しません
これをすることより /google
コマンドが使用可能になります。
-
GoogleCustomSearchAPIキーとエンジンIDを取得します
やり方が分からない場合、ここの1章から3章を行ってください
-
config.json
にgoogleApiKey
とengineId
を追加し適宜設定{ "token": "BOTのtoken", "clientId": "BOTのclientId", "googleApiKey": "GoogleCustomSearchAPIキー", "engineId": "エンジンID" }
-
config.json
にdebugMode
を追加し、true
orfalse
を設定{ "token": "BOTのtoken", "clientId": "BOTのclientId", "googleApiKey": "GoogleCustomSearchAPIキー", "engineId": "エンジンID", "debugMode": true }
-
以下のコマンドを実行
# ソース更新 git fetch git reset --hard "リリースタグ名" npm i # スラッシュコマンド更新 node deploy-commands.js # 起動 node src
Discord Developer PortalのBOTの設定ページ内で下記の画像のように設定してください。
なんかあればIssuesなりPull Requestなり送ってください。
(突貫工事で作ったためにまだまだ粗削りな部分が多いですが、今後修正&機能追加していく予定です)
- google検索(本実装)
- 正常に変換されないであろうものの処理
-
リプライでひらがなに変換済文字列を送信(ボツ)
-
- 語尾に「なのだ」をつけるモード(ずんだもん向け)
-
softalk対応(見送り(予算の都合上))-
語尾に「だぜ」をつける(魔理沙向け)(前述に伴い見送り)
-
- サーバーのごとの辞書登録
- 辞書のエクスポート、インポート
- ユーザーごとに声のピッチ、速度などを変更可能に
- 声の確認機能
- ステータス更新
- startコマンドの実装
- deployコマンド等も組み込み(中途半端)
- インストールをもっと簡単に(Docker)
- GUIに対応
- より詳細な使用方法解説サイト
- サポートサーバー(将来的)
- タイムアウト時にBOTがダウンしないように
- 勝手にエラーにより落ちる問題の解決
- 再生中止コマンド
- Aivis音声モデルインストールコマンド(管理者オンリー)
- 利用可能な音声モデル(スタイル)一覧表示コマンド
- aivis speech 未インストール/未起動時に
/set_voice
コマンド実行時にAivisSpeechのスタイルが候補に出てこないように - engineを起動していない場合
/set_voice
コマンド実行時, 読み上げ時にエンジンが起動していません
と送信 - インポート形式の拡充
-
/sys_info
のオプションをボタンで変更 - 辞書機能に特定音声を流す機能を追加
- システムメッセージにも辞書を反映するように
(太字は優先事項)