チラシの裏からうっすら見える外枠の外のメモ書き

新聞に挟まってる硬い紙のチラシの裏からうっすら見える外枠の外に走り書きされたようなものです。思いついたときにふらふらと。

VOICEVOX コアライブラリのための実行/開発環境Dockerイメージを作った

前回に引き続きVOICEVOX コアライブラリ関連の記事です。

前回の記事はこちらです。

k-hyoda.hatenablog.com

VOICEVOXは、音声合成が可能なコアライブラリを搭載したフリーの音声合成ソフトウェアです。 商用利用可能なキャラクターも存在していて、かつ品質もかなりいい優れたソフトウェアです。

voicevox.hiroshiba.jp

このVOICEVOXの音声合成を行っているコアライブラリをDockerに固めて利用できるようにしました。

このDockerイメージを元にDockerイメージをカスタマイズすることで、ソフトウェアを開発したり、実行したりすることができるようになっています。

また、このDockerイメージはGPU対応です。 そのため、CUDAが利用可能なグラフィックボードを搭載するコンピュータで、高速に音声合成することができます。

コアライブラリのPythonサンプルプログラムを実行するためのDockerイメージもあります。

概要

DockerイメージのためのDockerfileは以下のGitHubリポジトリにあります。

github.com

Dockerfileは現時点で3つあります。

base-gpu.Dockerfile

基本となるDockerイメージのDockerfileです。 CUDA 11.1のベースイメージに、LibTorchとVOICEVOX コアライブラリがインストールされています。 それぞれにパスはすでに通っているため、開発環境や実行環境のベースイメージとして利用できます。

ビルド方法
docker build -t voicevox_core:base-gpu -f base-gpu.Dockerfile ./

python-base-gpu.Dockerfile

base-gpu.Dockerfileをベースに、Python 3をインストールしたDockerfileです。 VOICEVOX コアライブラリのPythonモジュールがインストールされています。 これにより、Python 3のプログラムでVOICEVOX コアライブラリを利用することができます。 /workspace/voicevox_core/example/pythonPython 3向けのサンプルプログラムが同梱されています。

ビルド方法
# voicevox_core:base-gpuがビルドされている必要があります
docker build -t voicevox_core:python-base-gpu -f python-base-gpu.Dockerfile ./ && 

example-python-gpu.Dockerfile

python-base-gpu.Dockerfileをベースに、Pythonのサンプルプログラムを実行するようにしたDockerfileです。 VOICEVOX コアライブラリのリポジトリにあるPython 3向けのサンプルプログラムを実行できるようになっています。

ビルド方法
# voicevox_core:python-base-gpuがビルドされている必要があります
docker build -t voicevox_core:example-python-gpu -f example-python-gpu.Dockerfile ./
実行方法

前提として、example-python-gpu.Dockerfileをビルドしておいてください。 最初に、音声にしたい文章と話者を指定します。 0番が四国めたん、1番がずんだもんです。

SENTENCE='ドッカーでもこれは本当に実行できているんですか'
SPEAKER_ID=1

次に、Dockerコンテナを立ち上げてサンプルプログラムであるrun.pyを実行します。

CPUで実行する場合は以下のコマンドを実行します。

docker run --rm -t \
    -v `pwd`/out:/workspace/voicevox_core/example/python/out \
    voicevox_core:example-python-gpu \
    sh -c \
    "python3 run.py --text $SENTENCE --speaker_id $SPEAKER_ID && \
    cp \"$SENTENCE-$SPEAKER_ID.wav\" /workspace/voicevox_core/example/python/out"

GPUで実行する場合は以下のコマンドを実行します。

docker run --rm -t --gpus all \
    -v `pwd`/out:/workspace/voicevox_core/example/python/out \
    voicevox_core:example-python-gpu \
    sh -c \
    "python3 run.py --use_gpu --text $SENTENCE --speaker_id $SPEAKER_ID && \
    cp \"$SENTENCE-$SPEAKER_ID.wav\" /workspace/voicevox_core/example/python/out"

成功すると、現在いるディレクトリの下にoutというディレクトリが現れ、中にドッカーでもこれは本当に実行できているんですか-1.wavが生成されます。

ライセンス

このDockerfileはMITライセンスで提供されますが、DockerイメージにはVOICEVOX コアライブラリの利用規約が適用されます。 Docker HubなどでDockerイメージを公開したり、クラウド上でDokcerイメージを利用したりする場合は、VOICEVOX コアライブラリの利用規約を守ってください。

VOICEVOX コアライブラリの利用規約には、伝搬性のある条件が含まれています。 よく確認してください。 VOICEVOX コアライブラリの利用規約は各イメージの/usr/local/voicevox_core/README.txtに記載があります。