so-vits-svc を Windows ローカルで動かす
本家 innnky/so-vits-svc svc-develop-team/so-vits-svc
(以下は2023年2月ごろの32kブランチを元にした説明です。将来大幅な変更やメインブランチが4.0に移行された場合、この説明は互換性がなくなる可能性があります)
改造版 32kブランチ / 4.0(44.1khz)ブランチ
(設定ファイルなどをモデルごとに分離して管理しやすくし、複数のモデルを並行して学習できるようにした改造版です。ここで説明している方法とは異なりますのでリンク先のREADMEをお読みください)
インストール
3.10 の venv で。まず torch torchaudio torchvision を入れる。1.13.1+cu117。
残りを入れる。
試行錯誤しつつインストールしたのでこの通りに入れても動かないかもしれない。requirements.txtとは若干バージョンが異なる。下の2つは記載がなかったが必要。numpyは1.23.5になっていた。
(4.0はこれに加えて
を入れる)
https://github.com/bshall/hubert/releases/download/v0.1/hubert-soft-0d54a1f4.pt
hubert フォルダに入れる
https://huggingface.co/innnky/sovits_pretrained/resolve/main/G_0.pth
https://huggingface.co/innnky/sovits_pretrained/resolve/main/D_0.pth
logs/32k フォルダに入れる
4.0はダウンロードするファイルが異なる
checkpoint_best_legacy_500.pt
hubert フォルダに入れるhttps://huggingface.co/innnky/sovits_pretrained/resolve/main/sovits4/G_0.pth
https://huggingface.co/innnky/sovits_pretrained/resolve/main/sovits4/D_0.pth
logs/44k フォルダに入れる
(現在G_0.pthとD_0.pthは正式に公開されていない。使わなくても学習は可能らしい?)
トレーニング
1.データセット準備
dataset_raw/name にwavを入れる。サブフォルダは認識されないみたい。作者は2~10秒のファイルを使っていて、良い結果を得るには1,000個以上のファイルが必要だと言っている。100個程度でもそれなりの結果は出る。
で、dataset/32k/name 内に変換される。
で、configs/config.json などが生成される。
これで dataset/32k/name が準備完了となる。dataset_raw に入れたファイルはもう不要になる。
2.実行
VRAM足りない場合 config.json
の batch_size
を減らす(RTX3060 12GBで10が限界)。
logs/32k フォルダ内に D_数字.pth
と G_数字.pth
が生成される。生成間隔はたぶん config.json
の eval_interval
途中でやめてから再開すると最後に生成された中間結果から再開される。
合成
- checkpoints フォルダを作成
- checkpoints フォルダ内に任意のプロジェクト名で新規フォルダを作成
- logs/32kフォルダにある
config.json
と G_数字.pth をmodel.pth
にリネームしてプロジェクト名フォルダ内に入れる。G と D どっちを使うのかよく分からないが D はノイズまみれだったのでたぶん G で良いのだろう
gradioが起動したらブラウザで開く。SelectModel タブでモデルを選択すると VoiceConversion タブが使えるようになる。
初期値が-40(db)の設定は音をスライスする無音判定の基準。変換中にメモリ不足が出たらスライスが大きすぎるということなので、この値を少し増やして-30とかで試してみる。細かく刻まれてメモリ不足を回避できる。