アプリケーション開発ポータルサイト
ServerNote.NET
カテゴリー【UbuntuHardwarePython
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 22.04とCOEIROINK Engineを導入する
POSTED BY
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版であることが確認できる。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

【キーワード検索】