Ubuntu22.04でCOEIROINK(GPU)のエンジンを動かしてリリンちゃんと話す
COEIROINKにリリンちゃんが追加されました。これは試すしかありません。Ubuntuで。しかし、2023/3/28現在、UbuntuはCOEIROINKによりサポートされていません。
調べると、UbuntuでCOEIROINKのエンジンを動かす試みをされた先駆記事がありましたが、依存関係が変わったせいか私の環境では再現されませんでした。
その後、修正して私の手元で動かすことができたので、その手順を共有します。
※今後COEIROINKがLinuxに対応した場合は、そちらに従ってください。また、Google Colabでも動いたので、他環境で依存関係の解決に困っている方にも参考になるかもしれません。
先駆記事様
環境
- OS: Ubuntu 22.04
- GPU: RTX3060 12GB
- CUDA: 12.1
今回はPythonのバージョン・パッケージ管理・仮想環境に、それぞれasdf
(pythonプラグイン)・pip
・venv
を使用します。これらに基づいて進みますが、同等の環境が構築されているならそちらでも動くと思います。
なお、今回起動するバージョン(ブランチ)はc-1.6.0+v-0.12.3+gpu
となります。2023/3/28現在、 COEIROINK1.7系のブランチが存在し、こちらでも試しましたが、依存関係の解決を行いきれませんでした。できた方は共有していただけると嬉しいです。
環境構築
COEIROINKの音声合成エンジンのリポジトリをクローン
git clone https://github.com/shirowanisan/voicevox_engine.git
cd voicevox_engine
git switch c-1.6.0+v-0.12.3+gpu
言語環境の設定
asdf install python 3.8.10
asdf local python 3.8.10
パッケージインストール
クローンした状態では不足している分のパッケージも併せて追加します。
python -m venv venv
source ./venv/bin/activate
pip install typing-extensions==4.5.0
pip install -r requirements.txt
pip install espnet resampy typeguard==2.13.3
話者データのダウンロード
mkdir speaker_info
wget -O lilin_chan.zip https://www.dropbox.com/s/wl14g0vwr23kjk6/cb11bdbd-78fc-4f16-b528-a400bae1782d.zip?dl=1
unzip lilin_chan.zip -d speaker_info
起動
python run.py --host 0.0.0.0 --use_gpu
ここで、localhost:50031/docs
にSwagger UIが表示されていれば、起動は成功です。
(COEIROINKのAPIはポートが50031
になることに注意します。)
試す
音声クエリ生成・音声合成
リリンちゃんのspeaker idは、のーまるが90
、ささやきが91
です。
echo -n "うぶんつからこんにちは、リリンちゃんだよ。" > text.txt
curl -s \
-X POST \
"localhost:50031/audio_query?speaker=90"\
--get --data-urlencode text@text.txt \
> query.json
curl -s \
-H "Content-Type: application/json" \
-X POST \
-d @query.json \
"localhost:50031/synthesis?speaker=90" \
> audio.wav
aplay audio.wav
じぇみじぇみしてきたら成功です。仮想環境から抜け出す場合は、deactivate
します。
おわりに
今回のセットアップを行うスクリプトをまとめたリポジトリを作成したので、適宜参照してください。
これでリリンちゃんと話したい放題です。
今月30日にはVOICEVOXにも春歌ナナちゃんが追加されるようで、わくわくしています。携わっている方々には本当に感謝です。
COEIROINK:リリンちゃん
無料AIトークソフトCOEIROINK: https://coeiroink.com
Lusty*Kiss Production: https://production.lusty-kiss.com
Discussion