1.训练数据集格式不对,尤其是preprocess.py预处理后生成的文件xxx_train.txt.cleaned,一定要亲自打开检查一遍,特别是对于中日混合训练,或者多说话人训练,cleaner很容易忘记改,导致整个文件处理上就是有问题的,最后训练出来的肯定也是有问题
(资料图片)
比如中日混合训练是带标签[zh],[JA]的,但是预处理后,这些标签会去掉,我有一次,cleaner忘记改了,还是用的Japanese的cleaner,最后[zh]标签都没有去掉,但是训练也不报错,整个音素都是用日语的标记,中文有的音日语没有直接不给你标,最后中文是完全说不了
2.batchsize设置过大,导致显存爆了,最常见的错误,把bs(batchsize)改小就行了
3060显卡,16g内存可以开到8(群友经验)
我的是v100显卡,bs一般开到32
3.多说话人训练中,config里面n_speaker设置的不对,vits多说话人是严格按照序号从0开始的,并且序号最大的人数就会被程序看作最大人数,例如你有一个序号为0,1,2 ,20的训练集,虽然实际只有4个人,但是程序会看作有21人,中间没有的序号,会用0表示。
但是这也是后续加人训练的一种思路,一般来说,训练开始了,后续是不能接着加人训练的,想要加人只能重头训练,但是我们可以设置比如0,1,2序号的说话人序列,n_speaker设置大一点,大1到2比较合适,太大会影响bs
n_speaker设置过小常见报错:too much value to unpack
4.在训练中日混合模型中,最容易忘记核对下载中文数据集的采样率是否一致,导致采样率不一致报错。下载的中文数据集很多都是44k的采样率,但如果日语的是20k的采样率就会报错。常见的报错为:SR don not match 其中SR是采样率。
5.训练集里面参杂了一些空行,会导致报错,常见报错 too much value to unpack
6.如果是训练中日混合模型,需要改text文件夹下的cleaner,然后训练集格式改成中日混合的格式([JA] [ZH])
7.对于数据集处理,如果是gal的语音,h语音最好能去掉一些,要不然还是有一些负面影响,可以直接在文本搜索あああ,うう,之类的,进行删除,不需要全部删除,但是可以大概删删