Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

训练异常 #166

Open
GDbbq opened this issue Apr 26, 2024 · 4 comments
Open

训练异常 #166

GDbbq opened this issue Apr 26, 2024 · 4 comments

Comments

@GDbbq
Copy link

GDbbq commented Apr 26, 2024

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

@ScottishFold007
Copy link

ScottishFold007 commented May 16, 2024

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

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

@GDbbq
Copy link
Author

GDbbq commented May 16, 2024

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

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

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

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

@ScottishFold007
Copy link

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

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

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

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

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

@GDbbq
Copy link
Author

GDbbq commented May 17, 2024

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

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

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

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

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants