wqt2019 / tacotron-2_wavernn

tacotron-2(pytorch) + wavernn(pytorch) chinese TTS
MIT License
33 stars 9 forks source link

Readme 求补充 #7

Open cuijianaaa opened 1 year ago

cuijianaaa commented 1 year ago

大佬有空补充一下Readme吗,想跟着你的代码深入学习一下

wqt2019 commented 1 year ago

将biaobei数据集的拼音标注转音素,映射表pinyin-lexicon-r.txt,或者直接用我转好的音素标注文件biaobei_phone.txt,然后运行preprocess.py; 1.修改部分参数,运行train_tacotron2.py,训练声学模型; 2.修改部分参数,运行train_wavernn.py,训练声码器; 声学模型和声码器式分开训练的。

cuijianaaa commented 1 year ago

感谢大佬赐教!!

cuijianaaa commented 1 year ago

训练的时候text_inputs 经过nn.Embedding层后出现 nan, 导致loss 也出现nan 无法正常训练。。我电脑安装apex有点问题,所以我把fp16训练关了(我感觉用fp32更高应该更不容易梯度爆炸),不知道啥问题,大佬有遇到过这个问题吗? nn.embedding的input并没有nan,但是output却有nan

cuijianaaa commented 1 year ago
Iter: 300 Loss: nan Grad Norm: nan 0.62s/it
NaN or Inf found in input tensor.
NaN or Inf found in input tensor.
cuijianaaa commented 1 year ago

我训练数据用的biaobei, 然后用的是你转号的200个训练数据 biaobei_phone.txt,其他啥也没改

cuijianaaa commented 1 year ago

我发现是这里的问题 https://github.com/wqt2019/tacotron-2_wavernn/blob/fb41a671d5b5d805423396d4199cdf530675d5e1/model/model.py#L185 , 很奇怪这里的mask为啥要用 -float('inf') , 这里的inf会导致loss出现nan直接一个step就把所有参数搞坏了,为啥不用0呢? 我改成0 可以正常训练了。。 我查阅了一下官方的源码, 也是 用的inf 奇怪。。https://github.com/NVIDIA/tacotron2/blob/185cd24e046cc1304b4f8e564734d2498c6e2e6f/model.py#L41

难道是我使用pytorch版本的问, 我用的是 pytorch==1.13.0, python3.8

wqt2019 commented 1 year ago

问题不大,继续训练吧。