Voicevoxを利用した小規模向けのシンプルなDiscord読み上げボット
- Git
- Node.js
- Pnpm
- Go
- Voicevox Engine
- Discord APIのトークン
- Kagome front
- FFmpeg
- メモリ上に乗ったキャッシュ用ディレクトリ
- Linuxなら/tmpで良い気がする
- Discordのトークンを取ってくる
- Discord Developer Portalにいく
New Application
からアプリケーションを作るAPPLICATION ID
をコピーするhttps://discord.com/oauth2/authorize?client_id=APPLICATIONID&scope=bot&permissions=2184268864
のAPPLICATIONID
をコピーしたやつに置き換えてメモっとく(招待用のURL)Bot
→Add Bot
でBotになるBuild-A-Bot
のReset Token
を押してトークンを生成する、生成されたらメモっとく(Botトークン)- その下の
MESSAGE CONTENT INTENT
を有効にする
- Voicevox Engineを入れる
- Voicevoxの公式から自分の環境に合ったやつをダウンロードしてくる(Engineのリポジトリが最新じゃないのでフル版のEngine部分だけ使う)
run
って書いてるやつ実行する(環境によって違うけど概ねrunだけのやつが正解)、--port
でポート指定しておくと楽
- Kagome frontを入れる
git clone https://github.com/notoiro/kagome_front.git; cd kagome_front
go build main.go
でエラーとして出てくるコマンド叩いて依存関係をどうにかする- ビルドできたら
./main
- 環境を整える
- 好きな方法でNode.jsを入れる(npm, nodeコマンドが使えればいい)
- 好きな方法でGitを入れる(gitコマンドが使えればいい)
- 好きな方法でFFmpegを入れる(Linuxならパッケージマネージャーから入れるといい)
- そろそろ動かしたい
git clone https://github.com/notoiro/voicevox-tts-discord.git; cd voicevox-tts-discord
cp sample.json config.json
- config.jsonを編集する
VOICEVOX_ENGINE
は2970を自分の指定したポートに合わせるTMP_DIR
は音声のキャッシュディレクトリ、頻繁に書き換わるのでメモリ上のほうが良いかもTOKEN
は上でメモったBotトークンPREFIX
はそれで始まる文章は読まないやつSERVER_DIR
はサーバーごとの設定ファイルが保存されるディレクトリ、そのまま使うならservers
ってフォルダを作ることREMOTE_REPLACE_HOST
はreplace httpを利用する場合のサーバーアドレスOPUS_CONVERT
はOpusへの変換機能の設定。enable
以外の設定はわかってる人向け。DICT_DIR
はKagomeのトークン単位のグローバル辞書を保存するディレクトリ、そのまま使うならdictionaries
ってフォルダを作ること
pnpm install
npm run production
- 上でメモった招待用のURLで招待する
- SystemdのServiceのサンプルがあるのでお好みで
/help
Kagome frontで利用されている形態素解析辞書、Neologd辞書はネット辞書であるというその性質上、間違った読み、自動化のミスによる異常な読み、極端に特定の界隈に偏った略語、一般的ではあるが問題のある略語などを含みます。
このボットでは対策として置換時に辞書上の表現と完全一致でマッチさせ、英字の場合は更に3文字以上の場合のみマッチにする対策を取っていますが、それでもおかしい読みがある場合の対策にKagomeの分かち書き単位で置換する辞書を用意しています。
dictionaries/fix_neologd.json
はボット運用時に判明した怪しい読みを比較的普通の読みに置換する目的でリポジトリに含まれています。
dictionaries/lite_neologd.json
は面白くないやつだけ直す目的で利用できます。
このファイルはCC0 1.0 または NYSL 0.9982で利用できます。