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

固定 seed,生成语音是否吞句貌似与 vits 模型 与 gpt 模型都相关 #1093

Open
Joy-word opened this issue May 15, 2024 · 11 comments

Comments

@Joy-word
Copy link

测试步骤:
训练 40 轮 vits 模型 和 20 轮 gpt 模型。
测试语句 “皇后问魔镜:魔镜魔镜,世界上谁最美。”
重复惩罚值(repetition_penalty)为 1.35.
用 20 轮的 vits 模型 和 20 轮的 gpt 模型测试出 seed 为 949520197 的时候,语音为 “皇后问魔镜:世界上谁最美。” (丢了魔镜)
固定 seed=949520197 ,降低 vits 模型为 12 轮,gpt 模型保持 20 轮。语音正常,未丢字。
升高 vits 模型为 20 轮以上,32 轮,40 轮,均丢失 “魔镜魔镜”
降低 gpt 模型为 12 轮。语音正常,未丢字。

之前以为丢字是因为 gpt 模型,但保持 gpt 模型不变,单独调整 vits 模型同样会有丢字现象。模型推理应该是先 gpt 模型,再 vits 模型。top_k, top_p,temperature 等都作用于 gpt 模型,所以在固定 gpt 模型的轮次时,出现的漏句应该是由于 vits 模型。对此有点疑惑。

@Joy-word
Copy link
Author

补充:后面测试了设置重复惩罚值(repetition_penalty)为 1,同样会发生吞字,故应该与重复惩罚无关。

@LzyloveRila
Copy link

测试步骤: 训练 40 轮 vits 模型 和 20 轮 gpt 模型。 测试语句 “皇后问魔镜:魔镜魔镜,世界上谁最美。” 重复惩罚值(repetition_penalty)为 1.35. 用 20 轮的 vits 模型 和 20 轮的 gpt 模型测试出 seed 为 949520197 的时候,语音为 “皇后问魔镜:世界上谁最美。” (丢了魔镜) 固定 seed=949520197 ,降低 vits 模型为 12 轮,gpt 模型保持 20 轮。语音正常,未丢字。 升高 vits 模型为 20 轮以上,32 轮,40 轮,均丢失 “魔镜魔镜” 降低 gpt 模型为 12 轮。语音正常,未丢字。

之前以为丢字是因为 gpt 模型,但保持 gpt 模型不变,单独调整 vits 模型同样会有丢字现象。模型推理应该是先 gpt 模型,再 vits 模型。top_k, top_p,temperature 等都作用于 gpt 模型,所以在固定 gpt 模型的轮次时,出现的漏句应该是由于 vits 模型。对此有点疑惑。

这个实验很有意思,作者有什么见解呢?我以为vits作为有监督的部分应该不会出现丢字

@hoveychen
Copy link

如果再严谨一点,我们将GPT模型的输出先保存下来,然后调用不同轮数的vits模型,是不是一样的结论呢?

@AnonymousmousCoder
Copy link

支持继续这个实验

@Joy-word
Copy link
Author

有一个猜测,可能不是 vits 模型犯错,而是 vits 对 gpt 的结果进行了一些修正,不同轮次的修正能力有差异。(vits 模型能力还没研究明白,仅仅是一个猜测)
另外有一点不太理解,在 vits 模型训练的时候没有使用 gpt 模型的结果,而推理的时候使用了 gpt 模型的结果,不知道如果使用 gpt 模型的结果去训练,是不是会更准确一些?

@XXXXRT666
Copy link
Contributor

训练使用底膜生成的token,在训练时vq冻结

@Joy-word
Copy link
Author

训练使用底膜生成的token,在训练时vq冻结

明白了,在三联的时候有用到。感谢解惑。

@Joy-word
Copy link
Author

浅浅实验了一下,先用底模三连,用得到的数据训练 gpt 模型。取第 12 轮的 gpt 模型再次三连,训练出 sovits 模型。
结果与直接用底模三连,训练的 sovits 模型,同样的轮次下,在丢字重复方面没有太大的区别。
期待大家更多的想法与实验交流。丢字重复问题太难受了 🥲。

@XXXXRT666
Copy link
Contributor

这两个预处理无差别,vq训练是freeze的,而且你确定用的是新模型嘛

@Joy-word
Copy link
Author

这两个预处理无差别,vq训练是freeze的,而且你确定用的是新模型嘛

是的,三连时传入 config 的 gpt 路径我写死为了训练后的。

@XXXXRT666
Copy link
Contributor

产生的训练数据并无差别

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

5 participants