🎭
GPT-SoVITSで遊んでみた
GPT-SoVITSとは?
GPT-SoVITSとは、無料で利用できるText-to-Speech(TTS)のOSS。以下の特徴がある。
- ゼロショット TTS: 5秒間の音声サンプルを与え、テキストから音声への変換。
- Few ショット TTS: 1分間のトレーニングデータでモデルをFine-Tuningして、音声の類似性とリアリズムを向上。
- 多言語サポート: 現在、英語、日本語、韓語、粵語、中国語をサポートしています。
- WebUI ツール: 統合されたツールには、音声伴奏の分離、トレーニングセットの自動セグメンテーション、中国語 ASR、テキストラベリングが含まれるWebUIがすぐ起動可能。
docker composeによるセットアップ
windowsで実行するとbatファイルがあるので即座に起動できるらしいが、手元にmac端末しかないのでdocker composeで実行する。
Docker Desktopの起動
事前にインストールしておいたDocker Desktopを起動し、デーモンを立ち上げる
git clone
以下のサイトからコードをclone
$ git clone https://github.com/RVC-Boss/GPT-SoVITS.git
cpu環境での実行準備
てもとの環境が古いmac book proなので当然GPUがついているわけでもなく、cpu環境での実行となる。
docker-compose.yamlの24から29行目のgpu環境でのdeploy項目をコメントアウト。
$ vi docker-compose.yaml
22 shm_size: 16G
23 # deploy:
24 # resources:
25 # reservations:
26 # devices:
27 # - driver: nvidia
28 # count: "all"
29 # capabilities: [gpu]
30 stdin_open: true
31 tty: true
32 restart: unless-stopped$
docker compose up
$ docker compose -f "docker-compose.yaml" up -d
をして
にアクセスするとwebUIが立ち上がっている。ゼロショットをつかってみた
モデルのダウンロードと配置
https://github.com/RVC-Boss/GPT-SoVITS/blob/main/docs/ja/README.md
にも記載があるが、
事前学習済みモデルを以下からダウンロードし、GPT_SoVITS/pretrained_models ディレクトリに配置
ダウンロードするファイルは以下3つでよい。
- s1bert25hz-2kh-longer-epoch=68e-step=50232.ckpt
- s2D488k.pth
- s2G488k.pth
音声データの準備
利用しているのがmacなのでボイスメモを使用。.m4agファイルでも問題ない。
ちなみにボイスメモの場所は
ライブラリから、[Group Containers]>[group.com.apple.VoiceMemos.shared]>[Recordings]にある。
推論
モデルを配置、音声データを準備したら
の下部にある”Open TTS inference WEBUI”にチェックを入れる。自動でタブで起動すればいいが、うまくいかないことも多かったためしばらくしてから以下にアクセス。デバッグ
推論時にエラったが、"Error"と表示されるだけで、何が悪いのかわからなかった。
docker composeを利用しているので、デバッグするため以下のコマンドを実行したところ”音声ファイルが10秒より少し長いファイルを使用したためが原因だった。
$ docker compose logs
・・・
gpt-sovits-container | File "/workspace/GPT_SoVITS/inference_webui.py", line 335, in get_tts_wav
gpt-sovits-container | raise OSError(i18n("参考音频在3~10秒范围外,请更换!"))
gpt-sovits-container | OSError: Reference audio is outside the 3-10 second range, please choose another one!
gpt-sovits-container | "/usr/local/bin/python" GPT_SoVITS/inference_webui.py
gpt-sovits-container | /usr/local/lib/python3.9/site-packages/torch/_utils.py:776: UserWarning: TypedStorage is deprecated. It will be removed in the future and UntypedStorage will be the only storage class. This should only matter to you if you are using storages directly. To access UntypedStorage directly, use tensor.untyped_storage() instead of tensor.storage()
Discussion