8000 GitHub - kasumi-sou/discord-tts-bot: VOICEVOXを使用したDiscord読み上げBOT / Discord TTS BOT using VOICEVOX
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

kasumi-sou/discord-tts-bot

Repository files navigation

Discord-TTS-Bot

discordのテキストチャンネル上で発言されたメッセージをボイスチャンネルで読み上げるBOTです。

Node.js, Discord.js, Docker, VOICEVOX 等を使用します。

Features

  • VOICEVOX, AivisSpeech両エンジン対応
  • スラッシュコマンドにより指定のVCへ参加
  • 豊富なカスタマイズ要素
  • ユーザーごとに声を設定
    • 声の詳細なオプションも設定可
  • 辞書の登録/削除/表示/インポート/エクスポート
  • 指定されたキーワードでGoogle検索(追加の設定必須)
  • ずんだもんのように、語尾にのだ!を自動で付加するモード
  • 特定のメッセージが送信された際に自動で返信して会話を盛り上げます
  • 指定ユーザーのアバター画像を表示
  • BOTをホストしているサーバーの情報を表示
  • ステータスメッセージでコマンドを紹介
  • デバッグモード

Commands

ボイス関連

  • /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)

How to install

何個か方法があるのでお好きな方法でインストールしてください。

上から順におすすめ順になっています。

(注) インストールには約10GBの空き容量が必要です。推奨スペック(独断)については以下をご覧ください。

推奨スペック

CPUモード

  • CPU: インテル® Core™ i7 プロセッサー 8th Gen 以上 / AMD Ryzen™ 7 5700 以上
  • RAM: 16GB 以上

GPUモード

  • CPU: インテル® Core™ i7 プロセッサー 8th Gen 以上 / AMD Ryzen™ 7 5700 以上
  • RAM: 16GB 以上
  • GPU: NVIDIA GTX 1060 (6GB) 以上

(GPUはRTX3080Ti以上、RAMは32GBくらいあると幸せになれるかも...)

Docker Composeを使用

  1. config.json を作成

    {
      "token": "BOTのtoken",
      "clientId": "BOTのclientId"
    }
  2. Dockerをインストール

  3. 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
    
      ...
    
  4. 以下のコマンドを実行

    cd "compose.ymlを配置したディレクトリ"
    docker compose up

クローンして実行(windows)

  1. FFmpegをインストール

    (winget経由の場合)

    winget install Gyan.FFmpeg
    
  2. Node.jsをインストール(動作確認済: v22.13.1)

  3. ライブラリをインストール

    npm i
    
  4. config.json を作成

    {
      "token": "BOTのtoken",
      "clientId": "BOTのclientId"
    }
  5. Dockerをインストール

  6. 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でしか動作しません

  7. 実行

    node src
    

追加設定(任意)

AivisSpeechのインストール&有効化

これをすることにより、AivisSpeech読み上げに対応します。

  1. 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でしか動作しません

GoogleSearchAPIの設定

これをすることより /google コマンドが使用可能になります。

  1. GoogleCustomSearchAPIキーとエンジンIDを取得します

    やり方が分からない場合、ここの1章から3章を行ってください

  2. config.jsongoogleApiKeyengineId を追加し適宜設定

    {
      "token": "BOTのtoken",
      "clientId": "BOTのclientId",
      "googleApiKey": "GoogleCustomSearchAPIキー",
      "engineId": "エンジンID"
    }

デバッグモードの有効化

  1. config.jsondebugMode を追加し、true or false を設定

    {
      "token": "BOTのtoken",
      "clientId": "BOTのclientId",
      "googleApiKey": "GoogleCustomSearchAPIキー",
      "engineId": "エンジンID",
      "debugMode": true
    }

    How to Update

  2. 以下のコマンドを実行

    # ソース更新
    git fetch
    git reset --hard "リリースタグ名"
    npm i
    
    # スラッシュコマンド更新
    node deploy-commands.js
    # 起動
    node src

Note

Discord Developer PortalのBOTの設定ページ内で下記の画像のように設定してください。

でないと正常に動作しません。 image

Issue

なんかあればIssuesなりPull Requestなり送ってください。

(突貫工事で作ったためにまだまだ粗削りな部分が多いですが、今後修正&機能追加していく予定です)

Development Roadmap

  • google検索(本実装)
  • 正常に変換されないであろうものの処理
    • リプライでひらがなに変換済文字列を送信 (ボツ)
  • 語尾に「なのだ」をつけるモード(ずんだもん向け)
  • softalk対応 (見送り(予算の都合上))
    • 語尾に「だぜ」をつける(魔理沙向け) (前述に伴い見送り)
  • サーバーのごとの辞書登録
    • 辞書のエクスポート、インポート
  • ユーザーごとに声のピッチ、速度などを変更可能に
  • 声の確認機能
  • ステータス更新
  • startコマンドの実装
    • deployコマンド等も組み込み(中途半端)
  • インストールをもっと簡単に(Docker)
  • GUIに対応
  • より詳細な使用方法解説サイト
  • サポートサーバー(将来的)
  • タイムアウト時にBOTがダウンしないように
  • 勝手にエラーにより落ちる問題の解決
  • 再生中止コマンド
  • Aivis音声モデルインストールコマンド(管理者オンリー)
  • 利用可能な音声モデル(スタイル)一覧表示コマンド
  • aivis speech 未インストール/未起動時に /set_voice コマンド実行時にAivisSpeechのスタイルが候補に出てこないように
  • engineを起動していない場合 /set_voice コマンド実行時, 読み上げ時に エンジンが起動していません と送信
  • インポート形式の拡充
  • /sys_info のオプションをボタンで変更
  • 辞書機能に特定音声を流す機能を追加
  • システムメッセージにも辞書を反映するように

(太字は優先事項)

About

VOICEVOXを使用したDiscord読み上げBOT / Discord TTS BOT using VOICEVOX

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •  
0