PlayVoice/vits_chinese

训练异常

Opened this issue · 4 comments

我使用了baker + 加上自己的语音数据,共250个说话者,存在数据不均衡的情况,部分说话者的语音数量偏少, 发现训练到100个epoch时,损失基本都是在一定范围内震荡了,且合成的语音质量不如单个说话者训练出来的模型,请问该怎么优化呢?
image

我使用了baker + 加上自己的语音数据,共250个说话者,存在数据不均衡的情况,部分说话者的语音数量偏少, 发现训练到100个epoch时,损失基本都是在一定范围内震荡了,且合成的语音质量不如单个说话者训练出来的模型,请问该怎么优化呢? image

根据我之前的实践,我觉得可能的原因和解决方案如下:
首先,你说有些说话者的录音不是很多嘛,这个问题咱们可以试试数据增强,就是给这些录音加点变化,比如调调语速,换换音调,或者搞点背景噪音什么的,这样能多搞出一些样本来。
然后,数据不均衡的问题,咱们可以试试重采样。简单点说,就是给那些录音少的说话者多用几遍,或者把录音多的那些用得少一点。
如果这样还不行,咱们可以用个小技巧,叫做说话者适应。先用那些录音多的数据训练一个基础模型,然后再用录音少的那些数据微调一下。
损失函数这块,咱们也可以动动手脚,给那些录音少的说话者更多的关注,让模型特别注意这部分数据。
多任务学习也是个好办法,就是一边训练语音合成,一边还能学点别的,比如说话者识别,这样模型学得更全面。
模型架构嘛,也得考虑一下,有没有可能用个更适合多说话者的架构,比如说加入说话者嵌入,帮助模型分辨不同人的声音。
正则化技术也别忘了,比如dropout,可以防止模型太执着于某个说话者的数据。
学习率这东西也挺关键的,可以试试调整学习率,让模型学得更稳当。
如果模型训练到后面损失不降反升,那就别硬撑了,早点停下来,这叫早停法,也是防止过拟合的一种。
评估指标这块,咱们也得看看,是不是真的反映了模型的性能,特别是对那些录音少的说话者。
训练过程中,咱们可以先用录音多的数据打个底,再慢慢加入那些录音少的数据。

我使用了baker + 加上自己的语音数据,共250个说话者,存在数据不均衡的情况,部分说话者的语音数量偏少, 发现训练到100个epoch时,损失基本都是在一定范围内震荡了,且合成的语音质量不如单个说话者训练出来的模型,请问该怎么优化呢? image

根据我之前的实践,我觉得可能的原因和解决方案如下: 首先,你说有些说话者的录音不是很多嘛,这个问题咱们可以试试数据增强,就是给这些录音加点变化,比如调调语速,换换音调,或者搞点背景噪音什么的,这样能多搞出一些样本来。 然后,数据不均衡的问题,咱们可以试试重采样。简单点说,就是给那些录音少的说话者多用几遍,或者把录音多的那些用得少一点。 如果这样还不行,咱们可以用个小技巧,叫做说话者适应。先用那些录音多的数据训练一个基础模型,然后再用录音少的那些数据微调一下。 损失函数这块,咱们也可以动动手脚,给那些录音少的说话者更多的关注,让模型特别注意这部分数据。 多任务学习也是个好办法,就是一边训练语音合成,一边还能学点别的,比如说话者识别,这样模型学得更全面。 模型架构嘛,也得考虑一下,有没有可能用个更适合多说话者的架构,比如说加入说话者嵌入,帮助模型分辨不同人的声音。 正则化技术也别忘了,比如dropout,可以防止模型太执着于某个说话者的数据。 学习率这东西也挺关键的,可以试试调整学习率,让模型学得更稳当。 如果模型训练到后面损失不降反升,那就别硬撑了,早点停下来,这叫早停法,也是防止过拟合的一种。 评估指标这块,咱们也得看看,是不是真的反映了模型的性能,特别是对那些录音少的说话者。 训练过程中,咱们可以先用录音多的数据打个底,再慢慢加入那些录音少的数据。

谢谢大佬讲解。 我是这么处理的:

  1. 由于我是用开源的tts模型生成的语音,采用开源数据集中的文本去生成更多的语料
  2. 使用底模
  3. 调参

我使用了baker + 加上自己的语音数据,共250个说话者,存在数据不均衡的情况,部分说话者的语音数量偏少, 发现训练到100个epoch时,损失基本都是在一定范围内震荡了,且合成的语音质量不如单个说话者训练出来的模型,请问该怎么优化呢? image

根据我之前的实践,我觉得可能的原因和解决方案如下: 首先,你说有些说话者的录音不是很多嘛,这个问题咱们可以试试数据增强,就是给这些录音加点变化,比如调调语速,换换音调,或者搞点背景噪音什么的,这样能多搞出一些样本来。 然后,数据不均衡的问题,咱们可以试试重采样。简单点说,就是给那些录音少的说话者多用几遍,或者把录音多的那些用得少一点。 如果这样还不行,咱们可以用个小技巧,叫做说话者适应。先用那些录音多的数据训练一个基础模型,然后再用录音少的那些数据微调一下。 损失函数这块,咱们也可以动动手脚,给那些录音少的说话者更多的关注,让模型特别注意这部分数据。 多任务学习也是个好办法,就是一边训练语音合成,一边还能学点别的,比如说话者识别,这样模型学得更全面。 模型架构嘛,也得考虑一下,有没有可能用个更适合多说话者的架构,比如说加入说话者嵌入,帮助模型分辨不同人的声音。 正则化技术也别忘了,比如dropout,可以防止模型太执着于某个说话者的数据。 学习率这东西也挺关键的,可以试试调整学习率,让模型学得更稳当。 如果模型训练到后面损失不降反升,那就别硬撑了,早点停下来,这叫早停法,也是防止过拟合的一种。 评估指标这块,咱们也得看看,是不是真的反映了模型的性能,特别是对那些录音少的说话者。 训练过程中,咱们可以先用录音多的数据打个底,再慢慢加入那些录音少的数据。

谢谢大佬讲解。 我是这么处理的:

  1. 由于我是用开源的tts模型生成的语音,采用开源数据集中的文本去生成更多的语料
  2. 使用底模
  3. 调参

第一条数据增强见效了吗?另外,底模使用的训练数据规模影响也很大

我使用了baker + 加上自己的语音数据,共250个说话者,存在数据不均衡的情况,部分说话者的语音数量偏少, 发现训练到100个epoch时,损失基本都是在一定范围内震荡了,且合成的语音质量不如单个说话者训练出来的模型,请问该怎么优化呢? image

根据我之前的实践,我觉得可能的原因和解决方案如下: 首先,你说有些说话者的录音不是很多嘛,这个问题咱们可以试试数据增强,就是给这些录音加点变化,比如调调语速,换换音调,或者搞点背景噪音什么的,这样能多搞出一些样本来。 然后,数据不均衡的问题,咱们可以试试重采样。简单点说,就是给那些录音少的说话者多用几遍,或者把录音多的那些用得少一点。 如果这样还不行,咱们可以用个小技巧,叫做说话者适应。先用那些录音多的数据训练一个基础模型,然后再用录音少的那些数据微调一下。 损失函数这块,咱们也可以动动手脚,给那些录音少的说话者更多的关注,让模型特别注意这部分数据。 多任务学习也是个好办法,就是一边训练语音合成,一边还能学点别的,比如说话者识别,这样模型学得更全面。 模型架构嘛,也得考虑一下,有没有可能用个更适合多说话者的架构,比如说加入说话者嵌入,帮助模型分辨不同人的声音。 正则化技术也别忘了,比如dropout,可以防止模型太执着于某个说话者的数据。 学习率这东西也挺关键的,可以试试调整学习率,让模型学得更稳当。 如果模型训练到后面损失不降反升,那就别硬撑了,早点停下来,这叫早停法,也是防止过拟合的一种。 评估指标这块,咱们也得看看,是不是真的反映了模型的性能,特别是对那些录音少的说话者。 训练过程中,咱们可以先用录音多的数据打个底,再慢慢加入那些录音少的数据。

谢谢大佬讲解。 我是这么处理的:

  1. 由于我是用开源的tts模型生成的语音,采用开源数据集中的文本去生成更多的语料
  2. 使用底模
  3. 调参

第一条数据增强见效了吗?另外,底模使用的训练数据规模影响也很大

见效了。
这个模型可以使用哪些推理后端部署呢