Skip to content

notoiro/voicevox-tts-discord

Repository files navigation

Voicevox TTS Discord

Voicevoxを利用した小規模向けのシンプルなDiscord読み上げボット

必要なもの

  1. Git
  2. Node.js
  3. Pnpm
  4. Go
  5. Voicevox Engine
  6. Discord APIのトークン
  7. Kagome front
  8. FFmpeg

あるといい

  1. メモリ上に乗ったキャッシュ用ディレクトリ
    • Linuxなら/tmpで良い気がする

動かし方

  1. Discordのトークンを取ってくる
    1. Discord Developer Portalにいく
    2. New Applicationからアプリケーションを作る
    3. APPLICATION IDをコピーする
    4. https://discord.com/oauth2/authorize?client_id=APPLICATIONID&scope=bot&permissions=2184268864APPLICATIONIDをコピーしたやつに置き換えてメモっとく(招待用のURL)
    5. BotAdd BotでBotになる
    6. Build-A-BotReset Tokenを押してトークンを生成する、生成されたらメモっとく(Botトークン)
    7. その下のMESSAGE CONTENT INTENTを有効にする
  2. Voicevox Engineを入れる
    1. Voicevoxの公式から自分の環境に合ったやつをダウンロードしてくる(Engineのリポジトリが最新じゃないのでフル版のEngine部分だけ使う)
    2. runって書いてるやつ実行する(環境によって違うけど概ねrunだけのやつが正解)、--portでポート指定しておくと楽
  3. Kagome frontを入れる
    1. git clone https://github.com/notoiro/kagome_front.git; cd kagome_front
    2. go build main.goでエラーとして出てくるコマンド叩いて依存関係をどうにかする
    3. ビルドできたら./main
  4. 環境を整える
    1. 好きな方法でNode.jsを入れる(npm, nodeコマンドが使えればいい)
    2. 好きな方法でGitを入れる(gitコマンドが使えればいい)
    3. 好きな方法でFFmpegを入れる(Linuxならパッケージマネージャーから入れるといい)
  5. そろそろ動かしたい
    1. git clone https://github.com/notoiro/voicevox-tts-discord.git; cd voicevox-tts-discord
    2. cp sample.json config.json
    3. config.jsonを編集する
      • VOICEVOX_ENGINEは2970を自分の指定したポートに合わせる
      • TMP_DIRは音声のキャッシュディレクトリ、頻繁に書き換わるのでメモリ上のほうが良いかも
      • TOKENは上でメモったBotトークン
      • PREFIXはそれで始まる文章は読まないやつ
      • SERVER_DIRはサーバーごとの設定ファイルが保存されるディレクトリ、そのまま使うならserversってフォルダを作ること
      • REMOTE_REPLACE_HOSTreplace httpを利用する場合のサーバーアドレス
      • OPUS_CONVERTはOpusへの変換機能の設定。enable以外の設定はわかってる人向け。
      • DICT_DIRはKagomeのトークン単位のグローバル辞書を保存するディレクトリ、そのまま使うならdictionariesってフォルダを作ること
    4. pnpm install
    5. npm run production
    6. 上でメモった招待用のURLで招待する
    7. SystemdのServiceのサンプルがあるのでお好みで

使い方

/help

dictionaries以下のファイルについて

Kagome frontで利用されている形態素解析辞書、Neologd辞書はネット辞書であるというその性質上、間違った読み、自動化のミスによる異常な読み、極端に特定の界隈に偏った略語、一般的ではあるが問題のある略語などを含みます。

このボットでは対策として置換時に辞書上の表現と完全一致でマッチさせ、英字の場合は更に3文字以上の場合のみマッチにする対策を取っていますが、それでもおかしい読みがある場合の対策にKagomeの分かち書き単位で置換する辞書を用意しています。

dictionaries/fix_neologd.jsonはボット運用時に判明した怪しい読みを比較的普通の読みに置換する目的でリポジトリに含まれています。

dictionaries/lite_neologd.jsonは面白くないやつだけ直す目的で利用できます。

このファイルはCC0 1.0 または NYSL 0.9982で利用できます。