このBotには2つのオプション依存があります
- メモリと少しの遅延を代償に、巨大なネット辞書を利用してより自然な読みを提供するKagome front
- 少しの遅延を代償に、英語をカタカナ語に変換してくれる辞書などを利用できるReplace Http
これらの構築には若干の手間がかかるのでこれらを導入するかを予め決めておくことをおすすめします
- 動作確認済のLinuxはUbuntuまたはArch
- GUIは不要
- CPUはCUDAなしならIntel 8世代のi3程度あるといい(マルチエンジンならi5以上推奨)
- メモリはフル機能なら
物理4GB+スワップ6GB
ぐらいを目安に、それ以外なら以下を参考に- OS本体に500MB~1GB
- Bot本体に100~200MB
- エンジンが1個辺り1.5〜5GB程度
- (オプション)Kagome frontに2.5~3GB
- (オプション)Replace Httpに100~500MB
- ストレージはボイスエンジン抜きで10GBぐらいいると思う
- Arm系CPUは未検証なのでx86_64推奨
- CUDA使うならGPUもあるといい
- RAM上のキャッシュディレクトリもあるといい(Linuxなら
/tmp
で十分)
以下の物を入れる。説明はArchだけど適宜自分のLinuxと読み替えてインストールすること。
- Git
- ffmpeg
- Node.js
- pnpm
Git, ffmpegはバージョンあんまり気にしなくて良いのでパッケージマネージャで。
sudo pacman -S git ffmpeg
Node.jsはあんまり古いと動かないのでnで入れる。(Archならパッケージマネージャからでもいい。)
paru -S node-n # AURヘルパーならなんでも
sudo n latest
Node.js入れたらpnpmを入れる
sudo npm i -g pnpm
Discord Developer PortalにアクセスしてNew Application
を押す。
名前は適当に。チェックボックスは入れる。
APPLICETION ID
をコピーしてメモ帳にでも貼り付けておく。
ついでにアイコンとか名前とかいい感じに設定する。
左のBot
を押してBotのタブを開く。
Reset Token
を押してトークンを生成する。生成されたトークンをコピーしてメモ帳にでも貼り付けとく。
下にスクロールしてMESSAGE CONTENT INTENT
オンにする。
お好みで公開Botにしたくない場合はPUBLIC BOT
をオフにする
各エンジンごとに微妙に差異があります。
VOICEVOX系でAPIに互換性があればこのリストにないエンジンでも利用できます。
このリストにはエンジン部分のみ起動できてLinux上でもちゃんと聞ける品質で生成できるエンジンのみ乗っています。
なお1つ選んでやってもいいし全部やってもいいです。
3.1.a VOICEVOXの場合
VOICEVOXは活発に開発されている音声合成ソフトウェアです。
声いっぱいあるし、容量も軽いのでエンジンに迷ったらこれ!
Click to Expand.
VOICEVOXの公式から環境に合ったものをダウンロードする。 GPUがあるならGPU版、CPUだけならCPU版。
この後の構築の関係でtar.gz
バージョンを推奨。
使うのはVOICEVOX
フォルダ内のvv-engine
フォルダの中身だけなのでそれだけ取り出せばOK。
動くかチェック(Ctrl+Cで終了)
./run
3.1.b SHAREVOXの場合
SHAREVOXはVOICEVOX派生の音声合成ソフトウェアです。
体感だけどCPUだとVOICEVOXより合成が速い気がする。
Click to Expand.
Githubリポジトリから環境に合ったものをダウンロードする。
GPUがあるならnvidia
がついてるものを、CPUだけならcpu
って付いてるものを。
7z.001
が拡張子のファイルを選んでください。
展開したら`run``に実行権限をつけて動くかチェック(Ctrl+Cで終了)
chmod +x run
./run
3.1.c COEIROINKの場合
COEIROINKは少し特殊ながら面白い音声合成ソフトウェアです。
デフォルトの声だけでなく、MYCOEIROINKによって他のユーザーが作成した声を追加したり、自分で音声ライブラリになることだってできる!音声ライブラリのサイズがめっちゃでかい!VOICEVOXと似てるようで全然違う個性とロマンの塊みたいなソフトです。v2になってからLinuxで動かすことが難しくなっていた中わざわざWine使って実装したv2 API対応が公式Linuxビルドによって生きることになって私は嬉しいです。
Click to Expand.
公式から環境にあったものをダウンロードする。
展開する。おそらくはengine
とspeaker_info
があればいいのだけど、ちゃんとルートのフォルダがあるので全部展開したほうがわかりやすいと思う。
ダウンロードページの下の方にある音声ダウンロード、またはMYCOEから好きな音声ライブラリをダウンロードしてくる。
公式のガイドの通りに導入する。
動くかチェック(Ctrl+Cで終了)
cd engine
./engine
古い情報
COEIROINKにはネイティブで動くv1とWine経由で動くv2があります。
構築こそ大変手間がかかりますが、それでもなおMYCOEによるボイス拡張は魅力です。 そのため自分が叩いたコマンドラインや参考資料などを載せますが、それでも自力での構築が必須であり、あなたが怠惰な初心者の場合は非推奨のボイスエンジンになります。
- Githubからクローンしてくる
- Linuxネイティブで動きます。
- CUDAも動きます。
c-1.6.0+v-0.12.3
及びc-1.6.0+v-0.12.3+gpu
が動作します。- 依存関係が地獄。
- pyenvにてバージョン3.8.10に固定
- VOICEVOXのオプションが利用できます。
- 声は公式からダウンロードする。
requirements.txt
を以下のように書き換え
diff --git a/requirements.txt b/requirements.txt
index 0fa096c..0d59f35 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -40,7 +40,7 @@ pycparser==2.20
# via cffi
pydantic==1.8.2
# via fastapi
-pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@a85521a0a0f298f08d9e9b24987b3c77eb4aaff5
+pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@master
# via -r requirements.in
python-multipart==0.0.5
# via -r requirements.in
コマンドラインは以下の通り
python -m venv ./.venv
pip install torchaudio
pip install pydantic==1.9.1
pip install espnet resampy typeguard==2.13.3
pip install -r requirements.txt
pip install typing-extensions==4.5.0
pip install numpy==1.23.0
実行
python run.py
参考資料
- https://zenn.dev/hojicha/articles/a5663b0b3c524a
- https://zenn.dev/sansuke05/articles/ad971fe2607f81
- https://qiita.com/0kq/items/3194f5f3a3fbc541150b
- 公式からダウンロードしてくる
engine
フォルダのengine.exe
をWine経由で起動すれば動く。- CPU版は普通に動く。GPU版は頑張ればまともに動きそうな雰囲気はあるもののあんまりまともには動かない。
- オプションが不明のためポート指定やコア数指定はできません。
Click to Expand.
巨大なネット辞書であるNeologd辞書を利用してより自然な読みを提供します。
元々は必須の依存で、固有名詞や漢字、更には細かな日本語の表現などの読み品質を圧倒的に改善する、このBot強みでもありますが、今はもうなくても動きます。
sudo pacman -S go
git clone [email protected]:notoiro/kagome_front.git
cd kagome_front
go build main.go
動くかチェック(Ctrl+Cで終了)
./main
Click to Expand.
英語の読み辞書など巨大な辞書向けにNim製の置換ツールを利用できます。 なくても動きます。
paru -S nim
git clone [email protected]:notoiro/replace_http.git
cd replace_http
nimble build
dicts
という名前のフォルダを作る
mkdir dicts
その中に辞書を配置すればロードされます。
動くかチェック(Ctrl+Cで終了)
./ReplaceHttp
git clone [email protected]:notoiro/kana.git
cd kana
cp sample.json config.json
nano config.json # vimでもnvimでもkwriteでもいい
config.json
を以下を参考に編集する。主に調整すべき物にはTOKEN
, SERVER_DIR
, KAGOME_HOST
, REMOTE_REPLACE_HOST
, VOICE_ENGINES
。
項目名 | 意味 |
---|---|
TMP_DIR |
音声のキャッシュディレクトリ。/tmp などのRAM上を推奨。 |
TOKEN |
2.1で生成したDiscord Botのトークン |
PREFIX |
その文字で始まる文章を読まなくする文字 |
SERVER_DIR |
ユーザーデータの保存先。こっちはディスク上推奨。 |
KAGOME_HOST |
Kagome frontを利用する場合のホスト。使わないならnone にする。 |
REMOTE_REPLACE_HOST |
ReplaceHttpを利用する場合のホスト。使わないならnone にする。 |
OPUS_CONVERT |
音声のOpusへの変換設定。enable で有効/無効、bitlate とthreads はそれぞれビットレートと変換に利用するスレッド数。 |
DICT_DIR |
トークン単位の辞書の保存先。 |
IS_PONKOTSU |
ポンコツ設定をデフォルトで有効にするか |
TMP_PREFIX |
キャッシュディレクトリに保存されるファイルのファイル名につける識別子。複数動かす場合に便利 |
VOICE_ENGINES
は音声エンジンの設定。用意したエンジンの数だけ以下の内容のオプジェクトを入れれば良い。
項目名 | 内容 |
---|---|
name |
エンジン名。これは内部で利用されるshortidに影響するため、互換性上標準的な名前をつけることが推奨される。(e.g. VOICEVOX , SHAREVOX , COEIROINK など) |
type |
エンジンタイプ。エンジンのAPIがVOICEVOX互換である場合はVOICEVOX 、COEIROINK v2の場合はCOEIROINK_V2 。 |
server |
エンジンのホスト。ここで指定されたポート通りにエンジンを起動する必要がある。 |
credit_url |
クレジットを表示したときに表示するエンジンの公式ページのURL。 |
pnpm install
複数窓のターミナルが必要なのでGUIがない場合はscreenとかbyobuを使って起動してください。
VOICEVOX系なら--port ポート番号
でポート指定、--cpu_num_threads コア数
でコア数指定、--use_gpu
でGPU使用等のオプションが利用できます。
COEIROINKなら50032固定です。
Bot側の設定とか見ながらいい感じに起動します。
./run --port 2970 --cpu_num_threads 2 # VOICEVOX
./engine # COEIROINK
./main # --port 2971
./ReplaceHttp # 2972
npm run production
https://discord.com/oauth2/authorize?client_id=APPLICATIONID&scope=bot&permissions=2184268864
のAPPLICATIONID
を2.1でコピーしたIDに置き換えてからブラウザで開く。
services
配下のサービスファイルを自分の環境に合わせて編集する。
サービス用のフォルダを用意
mkdir -p ~/.config/systemd/user
編集したやつを~/.config/systemd/user
にコピーする。
systemdに認識させる
systemctl --user daemon-reload
有効にして起動する
systemctl --user enable kana.service
systemctl --user start kana.service