はじめに
いきなりですが「Bert-VITS2」をご存じでしょうか?
かなり感情の乗った音声を作れるということで話題になった音声合成技術です。
そして、バージョン2.1をベースにし、litagin02さんが感情スタイル指定をちゃんと動くようにしようとしてgithubで公開されているものが本記事で扱う「Style-Bert-VITS2」です。
「Style-Bert-VITS2」は、使いやすいようWebUIにして、使い方も動画とGoogle Colabと分かりやすくまとめてくださって大変ありがたいです。
こんな面白いの試してみたい!
でも、最新の技術は、書いてある通りに試しても上手く動かない、調べても正確な情報が出てこない。
安易に調べた記事を鵜吞みにしてPCの設定をいじると、環境がぐちゃぐちゃになってしまって取り返しのつかないことになったり...
そんな私と同じ思いを持っている人に向けて、Dockerで作った環境を紹介します!
Dockerなら環境設定をいじっても、上手くいくまでコンテナを作って壊して試すことができますから安心です。
(dockerが動かせる環境は前提とさせてください)
PC環境
- CPU:第13世代インテルCore i7-13700F
- RAM(CPUメモリ):32GB
- GPU:NVIDIA GeForce RTX 4060 Ti
- VRAM(GPUメモリ):16GB
(GPUありのPCで動作確認をしているので、CPUのみで動くかは試せてないです)
本題
まずは、githubリポジトリをクローンしてきて、必要なモデルとデフォルトTTSモデルをダウンロードを行います。
(もしpythonが使えずモデルをダウンロードできない場合は、Dockerのコンテナを先に作ってコンテナ内でinitialize.py
を実行するとよいかもしれません)
$ git clone https://github.com/litagin02/Style-Bert-VITS2.git
$ cd Style-Bert-VITS2
$ python initialize.py
次に、以下のdocker-compose.yml, DockerfileをStyle-Bert-VITS2
ディレクトリに配置します。
version: '3.8'
services:
app:
build: .
container_name: style-bert-vits2-app
volumes:
- .:/work
ports:
- "8000:7860"
- "5000:5000"
- "6006:6006"
# tty: true
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
command: python server_fastapi.py
# Pythonのベースイメージを使用
FROM pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime
RUN pip install nvidia-cublas-cu12 nvidia-cudnn-cu12
ENV CUDA_VISIBLE_DEVICES 0
ENV MKL_SERVICE_FORCE_INTEL 1
ENV LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/conda/lib/python3.10/site-packages/nvidia/cublas/lib:/opt/conda/lib/python3.10/site-packages/nvidia/cudnn/lib:/opt/conda/lib/python3.10/site-packages/torch/lib
# 作業ディレクトリを設定
WORKDIR /work
# Pythonの依存関係をインストール
COPY requirements.txt ./
RUN pip install -r requirements.txt
pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime
とnvidia-cublas-cu12 nvidia-cudnn-cu12
はGPUのCUDAのバージョンに合わせて変更してください。
(私のGPUはCUDA Version: 12.2
なので、12
にしています)
最後に、以下のコマンドでdocker-composeを立ち上げて完了です。
$ docker compose up -d --build
使い方
上記のdocker-composeでAPIが起動している状態なのでlocalhost:5000/docs
にアクセスすると、利用可能なAPIを確認することができます。
音声合成だけならAPIでも十分ですが、モデルを学習させたい場合はwebui_train.py
を動かす必要があります。
(学習させる音声の前処理も行いたい場合はwebui_dataset.py
を使います)
以下のコマンドでDockerの中に入り、WebUIを動かします。
$ docker exec -it style-bert-vits2-app bash
$ root@xxxxx:/work# python webui_train.py --server-name 0.0.0.0
gradioとdockerの相性が悪いのか、gradioのserver-nameをデフォルトの127.0.0.1から0.0.0.0にする必要があるので注意してください。
毎回、引数に指定することが面倒な方はwebui_train.py
を編集してデフォルトを0.0.0.0に変更してください。
WebUIを動かすとlocalhost:8000
にアクセスすることで、ブラウザ上で操作可能です。
前処理・学習などの細かい設定は、githubリポジトリのREADME.mdをご参照ください。
学習の実行方法はこちらの記事が分かりやすいのでオススメです。
音声合成もブラウザで操作したい場合は、学習と同様にapp.py
を動かしてください。
最後に
以上、Docker, docker-composeを使ったSytle-Bert-VITS2の動かし方になります。
いかがだったでしょうか?上手くDockerを起動させることは出来たでしょうか?
上手く動かなかった方は、Dockerfileやdocker-compose.ymlをエラーに従って修正してみてください。今はChatGPTにでも聞けば大抵答えてくれます。
Dockerなので安心してコンテナを作って試して壊して、あなたの環境に最適なものを見つけ出してくださいね!
おまけ(雑談)
音声合成のモデルの学習を試してみたいけど、学習させる音声データがなくて困っている方は、以下の公開されている音声データはいかがでしょうか?
※音声合成がこれからも発展していくためにも、音声・データを提供してくださった方のためにも、そして、あなた自身を守るためにも、利用規約はしっかり理解したうえで利用しましょう!
他の音声合成技術のGPT-SoVITSも気になりますね