PlayVoice / vits_chinese

Best practice TTS based on BERT and VITS with some Natural Speech Features Of Microsoft; Support ONNX streaming out!
https://huggingface.co/spaces/maxmax20160403/vits_chinese
MIT License
1.16k stars 168 forks source link

关于multispeaker改动训练问题 #39

Closed pgolds closed 1 year ago

pgolds commented 1 year ago

现在使用aishell3数据集训练了100k左右,推理出来只有“得得得得”这种的合成声音. 我看相较于https://github.com/jaywalnut310/vits版本参数多了一个bert,我试着修改了下,数据集上加上了speaker 是否还需要修改什么. image

MaxMax2016 commented 1 year ago

从模型框架上讲,加个speaker就可以了;可能需要排查有没有粗心导致的代码错误。

pgolds commented 1 year ago

好的,谢谢!我再检查检查。symbols文件我追加了一些韵母不知道是否有影响

GuangChen2016 commented 1 year ago

@MaxMax2016 您好,请问一下后面把blank去掉是基于什么考虑呀?我看一开始的代码中add_blank=true, 有做过对比么

MaxMax2016 commented 1 year ago

@GuangChen2016 https://github.com/jaywalnut310/vits/issues/20 add_blank是为了给发音添加边界信息,这是seq2seq中比较常见的用法,bert中包含了这个信息了,再添加blank就冗余了。

GuangChen2016 commented 1 year ago

@MaxMax2016 嗯嗯,另外一点是时长用dp而不是sdp是更稳定么

MaxMax2016 commented 1 year ago

@MaxMax2016 是的;还有一点是,sdp是为了解决一对多的问题,但是TTS训练语料有限、使得sdp看上去像随机的一样;使用bert后、发音有更丰富的上下文信息后,1对多已经得到了很大的缓解了,甚至可能已经是1对1了;通过海量的数据去训练sdp,也许它会像bert一样稳定。

GuangChen2016 commented 1 year ago

@pgolds 你加入speaker id的模型现在训练的效果咋样?我这单人训练的结果正常,多人不用bert也正常,但是加入bert后比较难训