PaddlePaddle / PaddleSpeech

Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.
https://paddlespeech.readthedocs.io
Apache License 2.0
11.22k stars 1.86k forks source link

[tts] csmsc Tacotron2 #1296

Closed yt605155624 closed 2 years ago

yt605155624 commented 2 years ago

数据预处理使用的标注是什么呢? 目前 fastspeech2 使用的是 MFA, transformer_tts (ljspeech) 的是 paddlespeech 的英文文本前端模块 在设计 Tacotron2 预处理时,决定还是使用 MFA 而不是 paddlespeech 的中文文本前端,因为 MFA 使用了 csmsc 本身提供的拼音和 paddlespeech 的 simple.lexicon, 我们直观认为 csmsc 的标注优于 paddlespeech 的文本前端(csmsc 人工标注了变调等,而 paddlespeech 的文本前端的变调是基于规则的,可能没有人工标注好),使用 paddlespeech 的中文文本前端可能引入额外的错误,而且在训练 fastspeech2 时,我们已经有了 csmsc 上的 MFA 结果了,直接拿来用就好(仅使用标注结果,不使用 duration) 数据预处理过程应该与 fastspeech2 类似,只是不需要 duration、energy 和 pitch 等

yt605155624 commented 2 years ago

关注点1:paddle 里面没有 pack_padded_sequence 和 pad_packed_sequence, 所以在调用 lstm 等模型时(tacotron2 的 encoder)需要输入 sequence_length,参考:https://www.paddlepaddle.org.cn/documentation/docs/zh/faq/train_cn.html#paddletorch-nn-utils-rnn-pack-padded-sequencetorch-nn-utils-rnn-pad-packed-sequenceapi transformer tts 的 EncoderPrenet 也用到了 tacotron2 的 encoder,之前没有输入 sequence_length,之后需要看看是否需要重新训练 关注点2:增加全局初始化会明显加快收敛速度

yt605155624 commented 2 years ago

训练会有周期震荡,但是训练集已经 shuffle 过了,而且震荡周期不是 1 epoch,所以应该不是因为数据集没 shuffle 引起的震荡 image image 震荡周期是 2448 iter, bs 是 64, 算下来是 16 个 epoch 一次震荡,可能是因为 shuffle 算法的周期是 16 个 EPOCH 2448*64/9800 ~=16

zh794390558 commented 2 years ago

关注点2:增加全局初始化会明显加快收敛速度

全局初始化指的是什么?

yt605155624 commented 2 years ago

关注点2:增加全局初始化会明显加快收敛速度

全局初始化指的是什么?

https://github.com/PaddlePaddle/PaddleSpeech/blob/89e988a69e748306c1eb471682f0226ae0d8e97f/paddlespeech/t2s/models/new_tacotron2/tacotron2.py#L171