Open yannier912 opened 3 years ago
这是melgan的loss,看着似乎也不太对的样子?
我已经不从事深度学习了,感觉你可以拿70K step的模型再试一试,另外,我自己的WaveRNN里面,设置了mel padding value,你可以在MelGAN里面同步设置一下
可以从以下方面考虑: 1.taco2生成的mel和准备gta文件时会有差距(准备gta文件时用到了teacher force),这可能导致声码器合成结果不好,如果在训练声码器时没有采用gta,这种差距会进一步放大(说白了就是taco2合成的mel谱和你用于训练声码器的mel谱不一致) 2.看一下预处理的代码,melgan和taco2的预处理不一致的话也会有上述这个问题。 3.试试parallel wavgan
我已经不从事深度学习了,感觉你可以拿70K step的模型再试一试,另外,我自己的WaveRNN里面,设置了mel padding value,你可以在MelGAN里面同步设置一下
感谢回复,我在melgan配置文件里加了mel_pad_val: -4.0的
可以从以下方面考虑: 1.taco2生成的mel和准备gta文件时会有差距(准备gta文件时用到了teacher force),这可能导致声码器合成结果不好,如果在训练声码器时没有采用gta,这种差距会进一步放大(说白了就是taco2合成的mel谱和你用于训练声码器的mel谱不一致) 2.看一下预处理的代码,melgan和taco2的预处理不一致的话也会有上述这个问题。 3.试试parallel wavgan
@morphr5466 您好,感谢提供思路~
Teacher force的意思是,在生成下一帧时,上一帧用的时ground truth,还是上一次循环生成的帧,前者就是teacher force,用[0, 1]概率过渡就是soft teacher force。 taco2的预处理我是照搬Rayhane-mamah/Tacotron-2的,个人觉得纯粹DSP要比原版那个CNN处理效果好,没有音质上的loss(无非就是量化时候轻微损失)。MelGAN训练可以直接用GTA mel
Teacher force的意思是,在生成下一帧时,上一帧用的时ground truth,还是上一次循环生成的帧,前者就是teacher force,用[0, 1]概率过渡就是soft teacher force。 taco2的预处理我是照搬Rayhane-mamah/Tacotron-2的,个人觉得纯粹DSP要比原版那个CNN处理效果好,没有音质上的loss(无非就是量化时候轻微损失)。MelGAN训练可以直接用GTA mel
@begeekmyfriend 收到,我用gta mel训练一下melgan。但我还有两个疑问
预处理只要在Tacotron那边做就好,vocoder只要mel + wav,而且两者长度一致(比如一帧对应256个samples) mel_pad_val表示mel最低值,相当于静音,比它还小就会截断
预处理只要在Tacotron那边做就好,vocoder只要mel + wav,而且两者长度一致(比如一帧对应256个samples) mel_pad_val表示mel最低值,相当于静音,比它还小就会截断
1.我也建议您用GTA训练。 2.如果预处理的代码都是用taco2的就不存在这个问题了,我在使用parallel wavegan时也是将它的预处理改写成与taco一致。 3.https://github.com/kan-bayashi/ParallelWaveGAN 预处理的代码见 parallel/wavegan/bin/preprocess.py logmelfilterbank
@morphr5466 关于您说的第二点“预处理的代码都是用taco2”,我现在是这样处理的:并没有把melgan的process用taco2的process替换,而是用taco2的process生成了wav和mel,作为taco2和melgan的训练数据。这算是保持一致吗?因为我理解后面训练、训练结束后加载模型合成语音 都没有再用到process代码了,我理解的对吗
只要生成mel谱,后面跟预处理无关了
只要生成mel谱,后面跟预处理无关了
嗯嗯,那我的训练没有问题,不知道为什么合成出来全是噪音。只能试一下gta了
全是噪声的话,恐怕哪里出错了,你试着用Ground Truth同样的语句合成一下?
全是噪声的话,恐怕哪里出错了,你试着用Ground Truth同样的语句合成一下?
Ground Truth就是taco2预处理生成的mel吧?这个合成效果是好的
从您的描述来看,应该没有问题,也许可以检查一下taco2生成的mel 是不是[-4, 4],如果是的话把它+4 / 8再送给melgan
我参考了begeekmyfriend和fatchord的代码,在我自己的预处理中,mel谱经过归一化之后变成[0, 1] 而训练时做了Y = (Y * 8.) - 4,使mel谱范围变成了[-4, 4],这使得taco模型生成的mel谱范围也是[-4, 4],这算是一种训练技巧吧。而声码器如果使用预处理的mel谱训练,其范围是[0,1],所以需要把taco生成的mel谱缩回到[0,1],Y = (Y + 4) / 8。 至于您的代码中是否有这样的操作,这个需要您查看一下了。另外生成GTA时我都是把mel谱限制在[0, 1]范围内的。
@morphr5466 我明白您说的意思了,我去看一下我的代码!非常感谢!!!!
@morphr5466 我仔细看了作者begeekmyfriend的taco2,预处理生成了audio和mel,但是在训练时候读取的是audio,然后由audio重新计算mel。我改成了训练时候直接读取mel,这样taco2和melgan训练都用的预处理生成的mel。 现在melgan训练到175epoch,合成不再是杂音了,但效果还是很差。而且用训练的mel合成也是一样效果:您听一下 是训练时长不够吗?感觉还是哪里有问题。。。 当前melgan的loss
1.可以用griffinlim生成音频检测taco2的模型是否训练正常,会有杂音,但是能听清讲话的内容。 2.我没有尝试过melgan,我建议您参考一下其他人训练melgan的平均时长,按我的经验声码器一般要训练3~5天。 3.这个loss看起来是非常大的,而且generator的loss一致在上升,确实有些奇怪。
@morphr5466
parallel_wavegan.zip 这是以parallel_wavegan的结果,感觉还是比较接近wavernn的,推论速度比wavernn快很多。
parallel_wavegan.zip 这是以parallel_wavegan的结果,感觉还是比较接近wavernn的,推论速度比wavernn快很多。
请问是多大数据集,训练了几天的效果呢?听着效果很好呢,我有时间也试一下parallel_wavegan
标贝数据集:https://weixinxcxdb.oss-cn-beijing.aliyuncs.com/gwYinPinKu/BZNSYP.rar non-attentive-tacotorn和parallel_wavegan各自训练两天多。
标贝数据集:https://weixinxcxdb.oss-cn-beijing.aliyuncs.com/gwYinPinKu/BZNSYP.rar non-attentive-tacotorn和parallel_wavegan各自训练两天多。
感谢!我之前也一直用标贝数据集,回头训练有效果了给您同步。太感谢啦!!
您好!我之前用您此版taco2训练,结合wavernn效果很好。 但由于wavernn合成速度太慢,试着训练了melgan melgan用的taco2预处理生成的trainingdata,训练到400step我测了一下,用trainingdata里的mel输入melgan合成语音效果较好,但用taco2模型生成的mel输入到melgan合成完全不正常,wave 参数我基本没有改,请问您有用taco2+melgan吗,效果如何? 我把taco2和melgan配置参数贴下,麻烦您帮忙看下是哪里出了问题呢?非常感谢!!! 【taco2参数:】
【melgan配置:】