Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
zzc0208 1087b4eb00 | 2 weeks ago | |
---|---|---|
README.md | 2 weeks ago | |
run.py | 4 months ago |
192.168.242.22:443/default-workspace/fccb038c23234b9e80105d4ccd152117/image:so-vits-svc-4.1_ZS
/root/so-vits-svc
su
mv /root/so-vits-svc /tmp/code
dataset_raw
目录 (音频文件仅支持wav格式,且路径仅能包含英文,数字,下划线,以下仅作示范,合规命名都行)dataset_raw
├───speaker0
│ ├───xxx1-xxx1.wav
│ ├───...
│ └───Lxx-0xx8.wav
└───speaker1
├───xx2-0xxx2.wav
├───...
└───xxx7-xxx007.wav
/dataset
,可以使用以下命令进行移动并解压zip
文件,大于1G打包成tar.gz
文件cp /tmp/dataset/* /tmp/code/so-vits-svc/dataset_raw/
cd /tmp/code/so-vits-svc/dataset_raw/
unzip ./*.zip
tar -xvf ./*.tar.gz
rm ./*.zip
rm ./*.tar.gz
cd ..
python3 resample.py
以上这行代码包含响度匹配,有可能损失音质,如果已经进行过响度匹配,可以执行下面这行跳过响度匹配
python3 resample.py --skip_loudnorm
python3 preprocess_flist_config.py --speech_encoder vec768l12
响度嵌入可以使输出音频的响度匹配推理输入音频的响度 响度嵌入对素材质量要求较高,若使用响度嵌入,需要使用下面这行指令:
python3 preprocess_flist_config.py --speech_encoder vec768l12 --vol_aug
此时可以在生成的 config.json
与 diffusion.yaml
修改部分参数
config.json
keep_ckpts
:训练时保留最后几个模型,0
为保留所有,默认只保留最后3
个,根据本人实测,本平台可以开到25不报错,不建议更大
batch_size
:单次处理的数据量。较大的 batch size 可以利用硬件资源并行计算,加快训练速度。因为 GPU 等硬件设备在处理大规模矩阵运算时效率更高。但是,更大的 batchsize 会导致显存占用增加,超出硬件所能承受的范围便会出现 Cuda out of memory
关于设置Batch size的建议,使用T4 15G时不建议超过15,使用V100S 32G时不建议超过35,使用A100 40G时不建议超过46
learning_rate
: 默认0.0001,可适当调大,加快模型收敛速度,bs15可设置成0.00015,bs35时可设置成0.000235,bs46可设置成0.00028
fp16_run
:是否启用半精度计算,默认False,打开可加快模型训练速度 (fp16大概能快30-55%,bf16大概能快3-8%)。
half_type
:默认fp16,如果是A100可使用BF16,V100S和T4不支持BF16 (不建议使用BF16!)
BF16 相比 FP16 没那么容易 NaN,但是损失精度比FP16更严重 (经实测,本平台提供的A100跑BF16的速度和FP32不相上下,不建议使用,起不到加速作用)
FP16 相比 FP32/BF16 更容易 NaN,但是精度比 BF16 高,对比 FP32 也损失不多
diffusion.yaml
cache_device
:缓存的设备,默认的cpu是缓存到内存,改成cuda可以缓存至显存,效率高于内存
k_step_max
: 训练时可仅训练k_step_max
步扩散以节约训练时间,注意,该值必须小于1000
,默认为 0 训练整个扩散模型,建议改成100以提高训练速度和浅扩散的质量,(注意,如果不训练整个扩散模型将无法使用仅扩散模型推理!)
python3 preprocess_hubert_f0.py --f0_predictor rmvpe --use_diff --num_processes 2
f0_predictor 建议在以下几个中选择
crepe
rmvpe
fcpe
rmvpe音质等多方面综合最好;fcpe最快,同时音质不输crepe;crepe对于嘈杂音频处理稍好,个人推荐rmvpe
num_processes是处理线程数,2比1略快
ps.1.A100算力使用双线程RMVPE处理2小时音频大约需要25分钟,可以估算一下
ps.2.如果卡在100%超过2分钟,例如以下所示,可以Ctrl+C
强行结束
Preprocessing ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ 100% 0:00:01 *Elapsed 0:59:57
python3 train.py -c configs/config.json -m 44k
推理使用的模型将输出在/logs/44k
这个模型主要用于消除电音,如果主模型训练的已经足够满意了,可以不训练
python3 train_diff.py -c configs/diffusion.yaml
浅扩散模型将输出在/logs/44k/diffusion
rm /tmp/code/so-vits-svc/logs/44k/diffusion/model_0.pt
cp /pretrainmodel/model_0.pt /tmp/code/so-vits-svc/logs/44k/diffusion
tensorboard --logdir /tmp/code/so-vits-svc/logs/44k --host 0.0.0.0
以上步骤用于启动tensorboard,如果要使用外网访问需要改动./frp/frpc.ini
,并新开个终端执行以下代码启动内网穿透服务
su
cd /tmp/code/so-vits-svc/frp
chmod 777 ./frpc
./frpc -c ./frpc.ini
这个模型主要用于减小音色泄露,使得模型训练出来更像目标的音色,但会使咬字稍差
python3 cluster/train_cluster.py --gpu
聚类模型将输出为/logs/44k/kmeans_10000.pt
这一步是将模型文件中继续训练所需的部分移除,可以将大小缩小至约1/3
例:
python3 compress_model.py -c="configs/config.json" -i="logs/44k/G_30400.pth" -o="logs/44k/release.pth"
inference_main.py
指令推理例:
python3 inference_main.py -m "logs/44k/G_74000.pth" -c "configs/config.json" -n "input.wav" -t 0 -f0p rmvpe -s "nahida" -cr 0.3 -shd -dm "logs/44k/diffusion/model_26000.pt" -dc "configs/diffusion.yaml" -ks 50
必填部分:
-m
| --model_path
:模型路径-c
| --config_path
:配置文件路径-n
| --clean_names
:wav 文件名列表,放在 raw 文件夹下-t
| --trans
:音高调整,支持正负(半音)-s
| --spk_list
:合成目标说话人名称可选部分:
-cl
| --clip
:音频强制切片,默认 0 为自动切片,单位为秒/s-f0p
| --f0_predictor
:选择 F0 预测器,建议可选 crepe
,rmvpe
,fcpe
, 默认为pm-a
| --auto_predict_f0
:语音转换自动预测音高,转换歌声时不要打开这个会严重跑调,转换说话内容打开效果有可能更好-cm
| --cluster_model_path
:聚类模型或特征检索索引路径,留空则自动设为各方案模型的默认路径,如果没有训练聚类或特征检索则随便填-cr
| --cluster_infer_ratio
:聚类方案或特征检索占比,范围 0-1,若没有训练聚类模型或特征检索则默认 0 即可,经实测0.2-0.5效果相对比较好-shd
| --shallow_diffusion
:是否使用浅层扩散,使用后可解决一部分电音问题,默认关闭浅扩散设置:
-dm
| --diffusion_model_path
:扩散模型路径-dc
| --diffusion_config_path
:扩散模型配置文件路径-ks
| --k_step
:扩散步数,越大越接近扩散模型的结果,默认 100webUI.py
网页端推理python3 webUI.py
以上步骤用于启动webUI,如果要使用外网访问需要改动./frp/frpc.ini
,并新开个终端执行以下代码启动内网穿透服务
cd /tmp/code/so-vits-svc/frp
chmod 777 ./frpc
./frpc -c ./frpc.ini
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》