[2021-09-11 / 2021-09-22]

VOICEVOX CoreをUbuntu/GPUで使う(exampleを動かすまで)

※ VOICEVOX Coreにより生成した音声の利用にあたっては、VOICEVOX Coreの添付文書・利用規約を必ず確認し、従ってください。

Ubuntu 20.04.3 LTS (Focal Fossa)
Python 3.9.6 (pyenv)
NVIDIA-SMI 470.57.02
Driver Version: 470.57.02
CUDA Version: 11.4
cuDNN 8.2.4

VOICEVOX Coreのインタフェースについて

VOICEVOX Coreには、深層学習モデルの推論部分だけを実装したプリミティブなインタフェースしか用意されていません。

高級な前処理や後処理は実装されていないため、プリミティブなインタフェースを必要としていない場合は、VOICEVOX Coreを内蔵した、VOICEVOX EngineのHTTP APIを使うことをおすすめします。

VOICEVOX Engineは、公式Dockerイメージが公開されています。

LibTorchのダウンロード

Stable > Linux > LibTorch > C++/Java > CUDA 11.1 > Download here (cxx11 ABI)

libtorch-cxx11-abi-shared-with-deps-1.9.0+cu111.zipを使用した。 圧縮時で2.1GB、展開時で5.1GB。

~/local/libtorch以下に、~/local/libtorch/build-versionのように全ファイルを展開する。

VOICEVOX Coreのダウンロード

圧縮時・展開時ともに430MB。

~/local/voicevox_core以下に、~/local/voicevox_core/libcore.soのように全ファイルを展開する。

.bashrc

export LIBRARY_PATH="$HOME/local/voicevox_core:$LIBRARY_PATH"
export LIBRARY_PATH="$HOME/local/libtorch/lib:$LIBRARY_PATH"
export LD_LIBRARY_PATH="$HOME/local/voicevox_core:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH="$HOME/local/libtorch/lib:$LD_LIBRARY_PATH"
source ~/.bashrc

サンプルリポジトリをクローン

git clone https://github.com/Hiroshiba/voicevox_core.git
cd voicevox_core
# 再現性のためにバージョンを固定、実際は最新版の使用を推奨
git checkout 89d0962ab54269023fe0ec3170c7075744f38702

core.hをコピー

cp core.h example/python/
cd example/python

パッケージのインストール

# 依存パッケージのインストール
pip3 install -r requirements.txt

pipを使ったインストール

# coreモジュール(VOICEVOX Core Pythonライブラリ)のインストール
pip3 install .

distutilsを使ったインストール

# coreモジュール(VOICEVOX Core Pythonライブラリ)のインストール
python3 setup.py install --record files.txt
# 失敗時
python3 setup.py clean
rm -rf build/ core.cpp

files.txtにインストールされたファイル一覧が出力される。 アンインストール時は、files.txtに列挙されたファイルを手動で削除する。

files.txt

***/lib/python3.9/site-packages/core.cpython-39-x86_64-linux-gnu.so
***/lib/python3.9/site-packages/core-0.0.0-py3.9.egg-info

サンプルプログラム(run.py)の改変

core.initializeの第1引数をlibcore.soのあるディレクトリのパスに変更する。(末尾のスラッシュは必須)。

core.initialize("/home/user/local/voicevox_core/", use_gpu)

改変したサンプルプログラム(run.py)の実行

四国めたん

python3 run.py --use_gpu --text "こんにちは" --speaker_id 0
paplay "./こんにちは-0.wav"

ずんだもん

python3 run.py --use_gpu --text "こんにちはなのだ" --speaker_id 1
paplay "./こんにちはなのだ-0.wav"

使用するGPUの変更(複数台のGPUが接続された環境)

CUDAを使うアプリケーション一般に適用できる方法。数値はnvidia-smiで確認できるGPU番号とは異なることがあるので注意。

CUDA_VISIBLE_DEVICES=0 python3 run.py --use_gpu --text "こんにちは" --speaker_id 0
CUDA_VISIBLE_DEVICES=1 python3 run.py --use_gpu --text "こんにちは" --speaker_id 0

その他参考

LD_LIBRARY_PATHについて調べていたが、コンパイル(python3 setup.py install)時に必要(g++が見に行くパス)なのはLIBRARY_PATH、実行時(coreモジュールロード時)に必要なのはLD_LIBRARY_PATHということらしかった。