2024-04-18
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 20.04.2 LTSを導入する【1】
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 20.04.2 LTSを導入する【2】
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 22.04とVOICEVOX Engineを導入する
前回VOICEVOX Engineが動きましたが、その派生エンジンであるCOEIROINKもこのTSUKUMO-GPU-Ubuntuで動かしたいです。なんといってもMYCOEIROINKという、オリジナル音声を作成できるのが大きいです(それは後述)。
先達のかたたちが、以下のようにCOEIROINK導入成功例をあげてくださっています、
Ubuntu22.04でCOEIROINK(GPU)のエンジンを動かしてリリンちゃんと話す GCE Ubuntu20.04でCOEIROINK(CPU)のエンジンを動かしてリリンちゃんと話す
しかし当方の環境では、どちらのやりかただけでもpip installもしくはrunでモジュール実行のエラーが解決せず、色々組み合わせてようやく動いたので、以下メモします。
Python3.8の仮想環境を使用できるようにする
こちらの記事などでPython3.8環境下のvenvが動くようにしておきます。
必要システムパッケージのインストール
sudo apt install cmake unzip libsndfile1
リポジトリのクローンとGPU版のセット
git clone https://github.com/shirowanisan/voicevox_engine.git cd voicevox_engine/ git switch c-1.6.0+v-0.12.3+gpu
requirements.txtの修正(※重要)
pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk@a85521a0a0f298f08d9e9b24987b3c77eb4aaff5
を、
pyopenjtalk @ git+https://github.com/VOICEVOX/pyopenjtalk
と、@以降の16進文字列を削除する。こうしないと、Mecabがらみの?エラーでインストールできなかったです。
Python3.8仮想環境の有効化
python3.8 -m venv venv source ./venv/bin/activate
モジュールのインストール
一発ではうまくいかないため、依存関係を解決しながらインストールしていきます。
pip install --upgrade pip setuptools wheel pip install typing-extensions==4.5.0 pip install -r requirements.txt pip install espnet resampy typeguard==2.13.3 pip install torchaudio
依存関係エラー解決その1
pip install pydantic==1.9.1
依存関係エラー解決その2(実行スクリプトrunでnumpyバージョンエラーが出るのを解決)
pip install numpy --upgrade pip install numba --upgrade pip install scipy --upgrade pip install espnet --upgrade
最終的なモジュールは、当方では以下のようになりました。
pip list Package Version ------------------------ ------------- aiofiles 0.7.0 annotated-types 0.6.0 antlr4-python3-runtime 4.9.3 anyio 3.3.4 appdirs 1.4.4 asgiref 3.4.1 asteroid-filterbanks 0.4.0 audioread 3.0.1 certifi 2024.2.2 cffi 1.15.0 charset-normalizer 3.3.2 ci_sdr 0.0.2 click 8.0.3 colorama 0.4.4 ConfigArgParse 1.7 ctc_segmentation 1.7.4 Cython 0.29.24 decorator 5.1.1 Distance 0.1.3 editdistance 0.8.1 einops 0.7.0 espnet 202402 espnet-tts-frontend 0.0.3 fast_bss_eval 0.1.3 fastapi 0.70.0 filelock 3.13.4 fsspec 2024.3.1 g2p-en 2.1.0 h11 0.12.0 h5py 3.11.0 humanfriendly 10.0 hydra-core 1.3.2 idna 3.3 importlib-metadata 4.13.0 importlib_resources 6.4.0 inflect 7.0.0 jaconv 0.3.4 jamo 0.4.1 Jinja2 3.1.3 joblib 1.4.0 kaldiio 2.18.0 librosa 0.9.2 llvmlite 0.41.1 MarkupSafe 2.1.5 mpmath 1.3.0 networkx 3.1 nltk 3.8.1 numba 0.58.1 numpy 1.23.5 nvidia-cublas-cu12 12.1.3.1 nvidia-cuda-cupti-cu12 12.1.105 nvidia-cuda-nvrtc-cu12 12.1.105 nvidia-cuda-runtime-cu12 12.1.105 nvidia-cudnn-cu12 8.9.2.26 nvidia-cufft-cu12 11.0.2.54 nvidia-curand-cu12 10.3.2.106 nvidia-cusolver-cu12 11.4.5.107 nvidia-cusparse-cu12 12.1.0.106 nvidia-nccl-cu12 2.19.3 nvidia-nvjitlink-cu12 12.4.127 nvidia-nvtx-cu12 12.1.105 omegaconf 2.3.0 opt-einsum 3.3.0 packaging 24.0 pip 24.0 platformdirs 4.2.0 pooch 1.8.1 protobuf 5.26.1 pycparser 2.20 pydantic 1.9.1 pydantic_core 2.18.1 pyopenjtalk 0.3.2+b35fc89 pypinyin 0.44.0 python-multipart 0.0.5 pyworld 0.3.4 PyYAML 6.0 regex 2024.4.16 requests 2.31.0 resampy 0.4.3 scikit-learn 1.3.2 scipy 1.10.1 sentencepiece 0.1.97 setuptools 69.5.1 six 1.16.0 sniffio 1.2.0 SoundFile 0.10.3.post1 starlette 0.16.0 sympy 1.12 threadpoolctl 3.4.0 torch 2.2.2 torch-complex 0.4.3 torchaudio 2.2.2 tqdm 4.62.3 triton 2.2.0 typeguard 2.13.3 typing_extensions 4.11.0 Unidecode 1.3.8 urllib3 2.2.1 uvicorn 0.15.0 wheel 0.43.0 zipp 3.18.1
speaker_info作成&リリンちゃん音声ダウンロード
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
いよいよ実行
python3 run.py --host 0.0.0.0 --use_gpu --load_all_models
ものすごく苦労したので、動いたときは感動しました。。
nvidia-smiでGPUを使用していることを確認
nvidia-smi Thu Apr 18 09:59:23 2024 +---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.54.03 Driver Version: 535.54.03 CUDA Version: 12.2 | |-----------------------------------------+----------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+======================+======================| | 0 NVIDIA GeForce RTX 3090 On | 00000000:17:00.0 Off | N/A | | 47% 30C P8 21W / 350W | 1024MiB / 24576MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ | 1 NVIDIA GeForce RTX 3090 On | 00000000:65:00.0 Off | N/A | | 46% 26C P8 26W / 350W | 5MiB / 24576MiB | 0% Default | | | | N/A | +-----------------------------------------+----------------------+----------------------+ +---------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=======================================================================================| | 0 N/A N/A 41301 C python3 1016MiB | +---------------------------------------------------------------------------------------+
ブラウザからAPIの動作テスト
あとはブラウザからAPIの確認が可能で、このマシンのIPが172.21.16.39だとすると、
http://172.21.16.39:50031/docs
とブラウザを開くとテストページが出るので、まず/speakersをためす。Try it out→core_versionに0.0.0を指定しExecute。レスポンスに
[ { "name": "リリンちゃん", "speaker_uuid": "cb11bdbd-78fc-4f16-b528-a400bae1782d", "styles": [ { "name": "のーまる", "id": 90 }, { "name": "ささやき", "id": 91 } ], "version": "1.0.3" } ]
と出れば、さきほどダウンロードしたリリンちゃんが無事認識されている。さらに/supported_devicesでTry it out→core_versionに0.0.0を指定しExecute。レスポンスに
{ "cpu": false, "cuda": true }
と出れば、GPU版であることが確認できる。
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Python】Spacyを使用して文章から出発地と目的地を抜き出す
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
Windows版Google Driveが使用中と言われアンインストールできない場合
VirtualBoxの仮想マシンをWindows起動時に自動起動し終了時に自動サスペンドする
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux】iconv/libiconvをソースコードからインストール
Ubuntu Server 21.10でイーサリアムブロックチェーン【その5】