So-VITS-SVC 4.0 训练/推理常见报错和Q&A
之前发了So-VITS-SVC 4.0的整合包和训练/推理教程(BV1H24y187Ko),两天内收到几十条私信和两百多条评论,大多都是各种环节报错出问题了,其中又有大多都是类似的问题,实在回复不过来了,所以我总结了几条常见的报错和解决方法,以供自查。

报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position xx
答:数据集文件名中不要包含中文或日文等非西文字符。

报错:页面文件太小,无法完成操作。
答:调整一下虚拟内存大小,具体的方法各种地方一搜就能搜到,不展开了。

报错:UnboundLocalError: local variable 'audio' referenced before assignment
答:上传的推理音频需要是16位整数wav格式,用Au转换一下就好。或者装个ffmpeg一劳永逸地解决问题。

报错:AssertionError: CPU training is not allowed.
答:非N卡跑不了的。

报错:torch.cuda.OutOfMemoryError: CUDA out of memory
答:爆显存了,试着把batch_size改小,改到1还爆的话建议云端训练。

报错:RuntimeError: DataLoader worker (pid(s) xxxx) exited unexpectedly
答:把虚拟内存再调大一点。

报错:NotImplementedError: Only 2D, 3D, 4D, 5D padding with non-constant padding are supported for now
答:数据集切片切太长了,5-10秒差不多。

报错:CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling 'cublasCreate(handle)'
答:爆显存了,基本上跟CUDA有关的报错大都是爆显存……

还有一些Q&A
Q: 用UVR5分离人声的时候声音会失真,还有什么更给力的工具吗?
A: 理论上UVR5已经是目前最强的人声分离工具了,原曲如果伴奏声音太大轨道太复杂是一定会有失真的,建议选原曲的时候选择伴奏简单人声清楚的效果会好很多。
Q: 我怎么判断模型有没有训练好?
A: 数据集数量正常的情况下(几百条),可以每隔几千步(是总步数不是epoch)跑出来的模型推理听一下,你觉得ok就ok,一般一万步就可以有一个不错的效果了。或者有代码基础的可以用tensorboard查看一下损失率收敛趋势。
Q: 训练聚类模型的时候显卡根本没占用是怎么会是呢?
A: 聚类模型训练吃的是你的CPU,看一下python进程在占用CPU就是在训练,等就行了。
Q: 我实在是太懒了,只想让AI帮我读稿子,不想自己录原声再推理,有啥办法吗?
A: 出门右转隔壁 VITS 项目,最近有个 VITS fast fine-tuning 的方法(BV1Jg4y1E7df),几分钟的素材就能练出比较相似的声音,虽然效果没那么好但它实在是太方便了。
Q: 跑这个的最低配置要求是啥啊?
A: 支持CUDA的6G显存以上的N卡,硬盘也留足一点空间。
Q: A卡真的跑不了吗哭哭
A: 理论上可以在Ubuntu或Linux环境下通过ROCm来实现,但是比较麻烦,小白建议放弃直接去云端。
Q: 云端训练好的模型怎么在本地用?
A: 下载G模型和对应的config文件,放到本地的对应文件夹就行(.\logs\44k和.\configs)
Q: 我训练和推理都很顺利!现在已经做了一首翻唱了,想上传到B站,有什么注意事项吗?
A: 请务必遵循So-VITS使用规约:https://www.bilibili.com/opus/768855762436882434