はじめに
これまで、各種の生成 AI は WSL2 Ubuntu 23.10 の上で環境を構築し使用してきました。常々、「ちゃんと構築するなら 22.04 LTSだよなぁ」と考えていました。
まとまった時間が取れましたので、WSL2 Ubuntu 22.04 LTS の上で各種の生成 AI の環境を作り直す事にしました。ゼロから環境構築する際の参考になれば幸いです。
以下の記事で CUDA 11.7 のアンインストールと CUDA 11.8 & 12.1 のインストールの方法、NVIDIA cuDNN8 をインストールする方法について説明しました。
今回は、上記の環境をベースに、VOICEVOX core Ver.0.15.0-preview.16 を使用する環境の構築について説明します。
前提となる環境
前提となる環境は、Windows11 WSL2 Ubuntu 22.04 LTS です。Python のバージョンは若干古く 3.10.12 になります。GPU は nVidia RTX3060 12GB で Driver は Ver.546.33 です。WSL2 の場合は、Windows 側にインストールした GPU ドライバーのバージョンとなり、WSL2 用のコマンド・ライブラリも同時にインストールされます。
これに CUDA 11-8 & 12.1 と cuDNN をインストールしています。cuDNN は CUDA 11-8 用です。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
$ python3 -V
Python 3.10.12
$ nvidia-smi
Sat Jan 6 20:35:57 2024
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.29.01 Driver Version: 546.33 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| 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 3060 On | 00000000:08:00.0 On | N/A |
| 30% 38C P8 13W / 170W | 666MiB / 12288MiB | 3% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------+
+---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
$ /usr/local/cuda-11.8/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0
$ /usr/local/cuda-12.1/bin/nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Mon_Apr__3_17:16:06_PDT_2023
Cuda compilation tools, release 12.1, V12.1.105
Build cuda_12.1.r12.1/compiler.32688072_0
$ dpkg -l | grep libcudnn8 | tr -s ' '
ii libcudnn8 8.9.7.29-1+cuda11.8 amd64 cuDNN runtime libraries
ii libcudnn8-dev 8.9.7.29-1+cuda11.8 amd64 cuDNN development libraries and headers
生成 AI は ~/GenerationAI 以下に directory を作成してインストールする事にします。
$ mkdir ~/GenerationAI && cd ~/GenerationAI
この環境をベースとして、各種の生成 AI をインストールします。
VOICEVOX で合成音声を生成する最も簡単な方法
始めに記載しておきますが、VOICEVOX で合成音声を生成する場合に最も簡単な方法は、下記リンク先の VOICEVOX のソフトウェアをインストールして使用する事です。Windows / Mac / Linux 用の GPU 対応版 / CPU 版 を選択してインストールすれば、合成音声が直ぐに生成できます。
これ以降の内容は、WSL2 上に VOICEVOX core の環境を構築したい方向けです。後々の自分の為にも、なるべく詳細に手順を記載します。
VOICEVOX core Ver.0.15.0-preview.16 のインストール
VOICEVOX core の 2024年1月時点での最新の Release バージョンは 1.14.5 ですが、工事中との事ですので、実際に合成音声を生成できた Ver.0.15.0-preview.16 をインストールします。
大まかな手順は以下の通りです。
- 必要な package のインストール
- 環境を構築する directory の作成
- VOICEVOX core のリポジトリを git clone
- インストール用ダウンローダ、合成音声モデル、Python パッケージの入手
- ダウンローダによるライブラリのインストール
- Python 仮想環境の構築
- 合成音声モデルの展開と Python パッケージのインストール
- 既存の環境にインストール済みのライブラリの退避
順を追って説明します。
必要な package のインストール
Ubuntu 22.04 LTS 側に必要な package は、git と python3、python3-venv、unzip です。
$ sudo apt install git python3 python3-venv unzip
環境を構築する directory の作成
合成音声生成のソフトウェアは、Voicevox directory 以下に環境を作ります。
$ cd ~/Generation_AI
$ mkdir Voicevox && cd Voicevox
VOICEVOX core のリポジトリを git clone
合成音声を生成する Python script はダウンローダでは読み込まれませんので、github リポジトリを clone しておきます。
$ git clone https://github.com/VOICEVOX/voicevox_core -b 0.15.0-preview.16
Ver.0.15.0-preview.16 を指定して clone します。
インストール用ダウンローダ、合成音声モデル、Python パッケージの入手
ライブラリ等をインストールするダウンローダ、合成音声モデル、Python パッケージをダウンロードします。ダウンローダには実行権限を付加しておきます。
$ wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.14.5/download-linux-x64
$ chmod +x ./download-linux-x64
$ wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.15.0-preview.16/model-0.15.0-preview.16.zip
$ wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.15.0-preview.16/voicevox_core-0.15.0rc16+cuda-cp38-abi3-linux_x86_64.whl
ダウンローダによるライブラリのインストール
ダウンローダで必要なライブラリ一式をインストールします。version と cuda を指定します。
$ ./download-linux-x64 --version 0.15.0-preview.16 --device cuda
...(snip)...
voicevox_core-linux-x64-gpu-0.15.0-preview.16.zip Done!
CUDA-linux-x64.zip Done!
open_jtalk_dic_utf_8-1.11.tar.gz Done!
INFO 全ての必要なファイルダウンロードが完了しました
voicevox_core の GPU 版、CUDA ライブラリ、open_jtalk_dic ライブラリが voicevox_core 以下にインストールされます。
Python 仮想環境の構築
voicevox_core 内に Python 仮想環境を構築します。
$ cd voicevox_core
$ python3 -m venv .venv
$ source .venv/bin/activate
(.venv) $ pip install --upgrade pip setuptools
合成音声モデルの展開と Python パッケージのインストール
予めダウンロードしておいた、合成音声モデルを展開し、Python パッケージをインストールします。
(.venv) $ unzip ../model-0.15.0-preview.16.zip
(.venv) $ ls model-0.15.0-preview.16
0.vvm 10.vvm 12.vvm 14.vvm 3.vvm 5.vvm 7.vvm 9.vvm metas.json
1.vvm 11.vvm 13.vvm 2.vvm 4.vvm 6.vvm 8.vvm README.md
(.venv) $ pip install ../voicevox_core-0.15.0rc16+cuda-cp38-abi3-linux_x86_64.whl
...(snip)...
Successfully installed annotated-types-0.6.0 pydantic-2.5.3 pydantic-core-2.14.6 typing-extensions-4.9.0 voicevox-core-0.15.0rc16+cuda
(.venv) $ pip list
Package Version
----------------- ---------------
annotated-types 0.6.0
pip 23.3.2
pydantic 2.5.3
pydantic_core 2.14.6
setuptools 69.0.3
typing_extensions 4.9.0
voicevox_core 0.15.0rc16+cuda
既存の環境にインストール済みのライブラリの退避
Ubuntu 22.04 LTS には、CUDA 11.8 & 12.1、及び cuDNN 8 (11.8用) がインストールされています。これらのライブラリは、VOICEVOX core でインストールしたものではなく、既存の環境にインストールしたものを使用しますので、不要なライブラリを退避します。
(.venv) $ mkdir non_use_lib
(.venv) $ mv libcu* non_use_lib
(.venv) $ ls non_use_lib
libcublas.so.11 libcudnn.so.8 libcudnn_cnn_infer.so.8 libcufft.so.10
libcublasLt.so.11 libcudnn_adv_infer.so.8 libcudnn_ops_infer.so.8 libcurand.so.10
(.venv) $ ls lib*
libonnxruntime.so.1.14.0 libonnxruntime_providers_shared.so libvoicevox_core.so
libonnxruntime_providers_cuda.so libonnxruntime_providers_tensorrt.so
VOICEVOX core Ver.0.15.0-preview.16 では、onnxruntime は 1.14.0 がインストールされました。
退避したライブラリは Ubuntu 22.04 LTS にインストールしたものが使用されます。
(.venv) $ ldconfig -p | grep libcublas.so.11
libcublas.so.11 (libc6,x86-64) => /usr/local/cuda-11/targets/x86_64-linux/lib/libcublas.so.11
(.venv) $ ldconfig -p | grep libcudnn.so.8
libcudnn.so.8 (libc6,x86-64) => /lib/x86_64-linux-gnu/libcudnn.so.8
VOICEVOX core Ver.0.15.0-preview.16 で合成音声を生成
これで準備が整いましたので、VOICEVOX core で合成音声を生成してみます。生成用の Python script をコピーします。
(.venv) $ cp example/python/run.py .
直接実行できるように、run.py の先頭に以下を追記します。
#!/usr/bin/env python
...
実行権限を付加して run.py を実行します。
(.env) $ chmod +x ./run.py
(.env) $ ./run.py --help
$ ./run.py --help
usage: run.py [-h] [--mode MODE] [--dict-dir DICT_DIR] [--text TEXT] [--out OUT] [--style-id STYLE_ID] vvm
positional arguments:
vvm vvmファイルへのパス
options:
-h, --help show this help message and exit
--mode MODE モード ("AUTO", "CPU", "GPU")
--dict-dir DICT_DIR Open JTalkの辞書ディレクトリ
--text TEXT 読み上げさせたい文章
--out OUT 出力wavファイルのパス
--style-id STYLE_ID 話者IDを指定
'VOICEVOX:四国めたん' で合成音声を生成してみます。
(.venv) $ ./run.py --mode GPU --dict-dir ./open_jtalk_dic_utf_8-1.11 \
--text "初めて合成音声を生成しました。ちゃんと聞こえているかな?" \
--out ./out.wav --style-id 0 ./model-0.15.0-preview.16/0.vvm
ちゃんと生成できました。
VOICEVOX core コアライブラリのビルド
rust の環境を作り、軽く試した感じでは libvoicevox_core.so をビルドする事はできました。Python のライブラリを作るには Poetry が必要です。もう少し試してから、この項を書き直します。
過去の取り組み
VOICEVOX core について過去に取り組んだ内容です。
この時には Ubuntu 23.10 で、最初に VOICEVOX core Ver.0.14.5 で試し、その後で Ver.0.15.0-preview.16 で github 内の Python script を試しました。
まとめ
WSL2 Ubuntu 22.04 LTS に CUDA 11.8 & 12.1、cuDNN 8 for CUDA 11.8 をインストールした環境に、VOICEVOX core Ver.0.15.0-preview.16 をインストールする手順についてまとめました。
- Ver.0.15.0-preview.16 を使用すれば、この記事の手順によって簡単に VOICEVOX core の環境を構築できます。
- github の run.py を使用して合成音声を生成できました。
- 話者 ID と vmm ファイルの対応を調べるには、vmm ファイルを less 等で見ると、始めの方に含まれている話者 ID が書かれています。これを参考に使用する vmm ファイルを特定できます。
予め CUDA 11.8 と cuDNN 8 for CUDA 11.8 をインストールしておけば、それほど難しくなく VOICEVOX core の環境を構築できます。
今回のアイキャッチ画像
冬の海辺を SDXL で生成しました。歩く人の雰囲気から寒さが伝わってきます。
私の NAS (Synology DS218plus) には、内蔵2基外付1基の計3基の HDD を接続しています。IronWolf 8TB です。使い始めて2年以上経過しました。偶に家族に「電源ブチッ」とされる事が数回ありましたが、今の所トラブルなく使えています。
2018年10月に購入して NAS で使用し、その後に取り外した IronWolf 4TB と WesternDigital Red 4TB も PC に接続して現役です。もう 5年以上経過しましたが、こちらもトラブルなく使えています。現在の WesternDigital Red は SMR、WesternDigital Red Plus が CMR ですので、記録方式を気にする方はご注意下さい。以下のリンクは CMR の WD Red Plus です。
コメント