Giter Site home page Giter Site logo

您好,真心请教一下,WaveRNN从头开始训练自己训练的话大概要多久才能收敛呀?我目前训练425k个step了,但是效果还不理想,看loss震荡有点大。(我是单卡2080Ti训练,batchsize是64),谢谢! about tacotronv2_wavernn_chinese HOT 20 CLOSED

lturing avatar lturing commented on September 3, 2024
您好,真心请教一下,WaveRNN从头开始训练自己训练的话大概要多久才能收敛呀?我目前训练425k个step了,但是效果还不理想,看loss震荡有点大。(我是单卡2080Ti训练,batchsize是64),谢谢!

from tacotronv2_wavernn_chinese.

Comments (20)

lturing avatar lturing commented on September 3, 2024

你好,首先你要确保你的数据预处理没有问题以及数据质量。
我这里的Wavernn中voc_mode设为RAW,bits为10,需要训练700kref ,bits为9的话,收敛更快(好像是270k)
可以参照ref试试其它的配置(mol)
最后,不推荐wavernn,合成速度太慢,推荐multi-band melgan

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

你好,首先你要确保你的数据预处理没有问题以及数据质量。
我这里的Wavernn中voc_mode设为RAW,bits为10,需要训练700kref ,bits为9的话,收敛更快(好像是270k)
可以参照ref试试其它的配置(mol)
最后,不推荐wavernn,合成速度太慢,推荐multi-band melgan

万分感谢您的回复!很抱歉由于某些缘故我没能及时回复,我是刚接触语音领域的小白,想请教您一些问题哈:
前提:
1、我前面提到的训练用的是WaveRNN,MOL模式,学习率固定在1e-4,batch_size=64,其它参数保持跟这个ref是一样的。然后就出现了昨天上面所说的训练过程中生成的语音质量反复震荡的问题。
2、我数据集用的是从VCTK英文开源数据集抽出5000条来训练,数据预处理直接用的是ref里的preprocess.py,MOL模式。
3、截至昨天晚上,训练到450k step,生成的语音的看了一下频谱几乎全屏雪花(全是噪声),相对前面的效果反而差很多(不知道是不是因为 450k生成语音的那个点网络参数恰巧震荡了一下)。训练还在继续,由于权限原因我明天才能看到最新的训练进展。

问题:
按照您的建议RAW模式下,在bit深度为9的情况下,训练起来貌似收敛得要更快一些。我明天将会尝试一下,所以我想请教您一下:
1、您训练WaveRNN的时候学习率是保持固定还是每隔一段时间手动降低学习率步长?手动降低的话每次大概是降低多少?
2、您是单卡训练吗?batch_size设置多少合适呀?

PS:感谢您的建议,我后续会继续研究一下multi-band melgan,不过我目前对合成速度没有太高要求,主要是想尽快训练一个音质相对好一些的Vocoder。

非常感谢您,救小白与水火!谢谢!

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

@lturing

万分感谢您的回复!很抱歉由于某些缘故我没能及时回复,我是刚接触语音领域的小白,想请教您一些问题哈:
前提:
1、我前面提到的训练用的是WaveRNN,MOL模式,学习率固定在1e-4,batch_size=64,其它参数保持跟这个ref是一样的。然后就出现了昨天上面所说的训练过程中生成的语音质量反复震荡的问题。
2、我数据集用的是从VCTK英文开源数据集抽出5000条来训练,数据预处理直接用的是ref里的preprocess.py,MOL模式。
3、截至昨天晚上,训练到450k step,生成的语音的看了一下频谱几乎全屏雪花(全是噪声),相对前面的效果反而差很多(不知道是不是因为 450k生成语音的那个点网络参数恰巧震荡了一下)。训练还在继续,由于权限原因我明天才能看到最新的训练进展。

问题:
按照您的建议RAW模式下,在bit深度为9的情况下,训练起来貌似收敛得要更快一些。我明天将会尝试一下,所以我想请教您一下:
1、您训练WaveRNN的时候学习率是保持固定还是每隔一段时间手动降低学习率步长?手动降低的话每次大概是降低多少?
2、您是单卡训练吗?batch_size设置多少合适呀?

PS:感谢您的建议,我后续会继续研究一下multi-band melgan,不过我目前对合成速度没有太高要求,主要是想尽快训练一个音质相对好一些的Vocoder。

非常感谢您,救小白与水火!谢谢!

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

1,我是固定学习率
2,单卡,batch_size 为32(其余的没有试)

"VCTK英文开源数据集抽出5000条" vctk是多说话人,最好保证每个说话人的wav数量差不多。

关于multi-band melgan,已经有配置好ref,直接按照readme.md上的教程运行。另外,readme.md上已经有训练好的vctk 模型。

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

1,我是固定学习率
2,单卡,batch_size 为32(其余的没有试)

"VCTK英文开源数据集抽出5000条" vctk是多说话人,最好保证每个说话人的wav数量差不多。

关于multi-band melgan,已经有配置好ref,直接按照readme.md上的教程运行。另外,readme.md上已经有训练好的vctk 模型。

@lturing
非常感谢您,我今天早上去看了一下前面提到的基于MOL模式训练的WaveRNN,每隔25k steps保存一次模型以及生成几个语音。
截至今天早上训练到了800K steps,在某些checkpoint下生成的语音质量很不错,但是在某些checkpoint生成的语音反而会变差,总体上质量还是在轻微震荡。不过我相信继续训练下去质量会更加稳定。

我刚刚下午五点多开启了新的一轮训练----基于RAW模式下,bit=9,用的AISHELL1的数据集,200个speaker,从每个speaker抽出50句话。目的是验证一下RAW模式的收敛速度和收敛的鲁棒性。

另外,我目前主要是在做Voice Conversion(VC,音色转换),不是在做TTS。我发现VC里的李宏毅团队提出的One-Shot算法非常有潜力,但无奈原生的One-Shot算法Vocoder用的是Griffin-Lim,生成的音色很像target speaker,但是生成的语音会带有一些电音的感觉(经过对比发现是Griffin Lim造成的),所以我才想用WaveRNN去替代Griffin Lim看看能否改善音质。但是我对于这个做法没什么把握,想请教您一下,您对于这个方案的可行性或者其它方面有什么看法或者建议吗?谢谢!非常感谢您!

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

one shot 就是说明vocoder泛化性很好(不在训练集中的说话人,音色也很像)?wavernn我只训练过单说话人的,multi-band melgan, parallel wavegan都可以。

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

one shot 就是说明vocoder泛化性很好(不在训练集中的说话人,音色也很像)?wavernn我只训练过单说话人的,multi-band melgan, parallel wavegan都可以。

@lturing
非常感谢您!
嗯嗯,不在训练集里的音色也很像,类似的功能您也可以在SV2TTS里看到类似功能ref,SV2TTS里的One-Shot性能更为强悍。
不过有一点需要补充的是,one shot算法的亮点在于它的speaker encoder很厉害,能准确提取声纹,我测试发现one shot算法收敛也特别快。

我打算把one shot的vocoder换成waveRNN,然后用数据集里的所有speaker的少量样本去微调vocoder提升质量,算是从oneshot 变成few shot吧哈哈哈。

waveRNN的RAW模式我正在训练,后续可能还得麻烦您指导一下(万一碰到问题了),谢谢!万分感谢!

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

@lturing
非常感谢您,我用您代码里的RAW模式训练了一下,很快就收敛了,收敛过程也比MOL模式要稳定很多,非常感谢您!

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

我没有跑过MOL模式(还有gaussion模式),就最终的结果(忽略训练步数),MOL跟RAW谁的效果更好?

from tacotronv2_wavernn_chinese.

xuexidi avatar xuexidi commented on September 3, 2024

我没有跑过MOL模式(还有gaussion模式),就最终的结果(忽略训练步数),MOL跟RAW谁的效果更好?

@lturing
我尝试了RAW模式,位深修改为bit=9,发现会有一些底噪。总体上没有MOL干净。但是我对比了一下您预训练的RAW模式、bit=10跟MOL、16bit的效果,发现效果差不多哈,语音都很干净。

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

嗯嗯,多谢

from tacotronv2_wavernn_chinese.

leijue222 avatar leijue222 commented on September 3, 2024

你好,首先你要确保你的数据预处理没有问题以及数据质量。
我这里的Wavernn中voc_mode设为RAW,bits为10,需要训练700kref ,bits为9的话,收敛更快(好像是270k)
可以参照ref试试其它的配置(mol)
最后,不推荐wavernn,合成速度太慢,推荐multi-band melgan

您好,您的意思是训练好TacotronV2后,抛弃本项目后续的WaveRNN训练,改用multi-band melgan训练吗?

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

@leijue222
不推荐wavernn的原因是合成速度达不到实时(你如果不在意实时合成,那也可以用wavernn)。
如果该用multi-band melgan的话,需要注意mel的范围,即tacotron预测的mel需要处理成multi-band melgan的输入的mel的数值范围。

from tacotronv2_wavernn_chinese.

alexwangmac avatar alexwangmac commented on September 3, 2024

@leijue222
不推荐wavernn的原因是合成速度达不到实时(你如果不在意实时合成,那也可以用wavernn)。
如果该用multi-band melgan的话,需要注意mel的范围,即tacotron预测的mel需要处理成multi-band melgan的输入的mel的数值范围。

请教下tacotron预测的mel频谱需要怎么调整范围,是需要重新训练吗?还是在inference阶段可以直接修改的?感谢~

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

@leijue222
不推荐wavernn的原因是合成速度达不到实时(你如果不在意实时合成,那也可以用wavernn)。
如果该用multi-band melgan的话,需要注意mel的范围,即tacotron预测的mel需要处理成multi-band melgan的输入的mel的数值范围。

请教下tacotron预测的mel频谱需要怎么调整范围,是需要重新训练吗?还是在inference阶段可以直接修改的?感谢~

这个的意思是,不需要重新训练multi-band melgan,直接利用开源 预训练的标贝模型csmsc_multi_band_melgan.v2,这个mbmelgan模型的输入是梅尔频谱,而这里的tacotorn输出梅尔频谱(梅尔频谱中的值的范围被现在在[-4, 4]), 所以需要将tacotron的输出的梅尔频谱变换到mbmelgan中的梅尔频谱。
但这个预训练的mbmelgan的采样率是24k,我这里的是22.5k,所以还需要重新训练tacotorn

from tacotronv2_wavernn_chinese.

alexwangmac avatar alexwangmac commented on September 3, 2024

@leijue222
不推荐wavernn的原因是合成速度达不到实时(你如果不在意实时合成,那也可以用wavernn)。
如果该用multi-band melgan的话,需要注意mel的范围,即tacotron预测的mel需要处理成multi-band melgan的输入的mel的数值范围。

请教下tacotron预测的mel频谱需要怎么调整范围,是需要重新训练吗?还是在inference阶段可以直接修改的?感谢~

这个的意思是,不需要重新训练multi-band melgan,直接利用开源 预训练的标贝模型csmsc_multi_band_melgan.v2,这个mbmelgan模型的输入是梅尔频谱,而这里的tacotorn输出梅尔频谱(梅尔频谱中的值的范围被现在在[-4, 4]), 所以需要将tacotron的输出的梅尔频谱变换到mbmelgan中的梅尔频谱。
但这个预训练的mbmelgan的采样率是24k,我这里的是22.5k,所以还需要重新训练tacotorn

感谢回答!作者有问必答的精神太赞了,还有一些小问题期待回答:
1、将tacotron2输出的梅尔频谱变换到mbmelgan中的梅尔频谱范围,这个过程是可直接转换吗,是的话需要怎么转换?
2、在tacotron2重新设置采样率为24k后,是否方便直接改变mel频谱的范围和mbmelgan一致,这样训练好后就不需要转换了?
3、然后还有一个小问题是,设置mel频谱范围-4到4的意义是什么,这个数值范围是怎么定的呀?

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

1, 可以直接转换。但如果你有足够的gpu的话,直接自己重新训练mb-melgan模型,即将tacotron_prepare.py 生产的mel谱和wav训练mbmelgan,就不用转换了。
2,我这里的采样率是22.5k,如果将tacotron的采样率设为24k,需要重新训练tacotron。
3,[-4, 4]是为了加快收敛,这个值是人为设定的,实际上,[0, 1]、[-1, 1]都有人试过,[-4, 4]效果最好

我这里的提取mel频谱的方法ParallelWaveGAN 中提取mel频谱的方法 ,你看一下代码,就知道了怎么转换了(当然,你也可以不用转换,直接将tacotron_prepare.py 生成的mel和wav重新训练melgan,就不用转换)

from tacotronv2_wavernn_chinese.

alexwangmac avatar alexwangmac commented on September 3, 2024

1, 可以直接转换。但如果你有足够的gpu的话,直接自己重新训练mb-melgan模型,即将tacotron_prepare.py 生产的mel谱和wav训练mbmelgan,就不用转换了。
2,我这里的采样率是22.5k,如果将tacotron的采样率设为24k,需要重新训练tacotron。
3,[-4, 4]是为了加快收敛,这个值是人为设定的,实际上,[0, 1]、[-1, 1]都有人试过,[-4, 4]效果最好

我这里的提取mel频谱的方法ParallelWaveGAN 中提取mel频谱的方法 ,你看一下代码,就知道了怎么转换了(当然,你也可以不用转换,直接将tacotron_prepare.py 生成的mel和wav重新训练melgan,就不用转换)

感谢您详细解惑~

from tacotronv2_wavernn_chinese.

leijue222 avatar leijue222 commented on September 3, 2024

@lturing 您好,再请问一下

[-4, 4]是为了加快收敛,这个值是人为设定的,实际上,[0, 1]、[-1, 1]都有人试过,[-4, 4]效果最好

  1. [-4,4]效果最好是特用于中文吗?
  2. 您人为设定taco2输出范围的控制代码在哪个位置?

from tacotronv2_wavernn_chinese.

lturing avatar lturing commented on September 3, 2024

@leijue222 我这里的默认就是[-4, 4],可以在tacotron_hparams.py中看到

from tacotronv2_wavernn_chinese.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.