2noise / ChatTTS

A generative speech model for daily dialogue.
https://2noise.com
GNU Affero General Public License v3.0
31.21k stars 3.39k forks source link

batch推理中,调换文本的生成顺序会影响合成效果 #256

Closed viewlei closed 4 months ago

viewlei commented 4 months ago

在尝试batch合成时,我发现 texts 中多个 text 之间的相对位置会影响到每个text所合成出来的音频,不仅仅体现在所合成的音频文件MD5上,更体现在音频的主观听感上。

我已再次确认并验证了我成功固定了全局随机种子: torch.manual_seed(args.seed)

以下是我的具体测试场景:

我期望分别合成”你好“、”我是Chat T T S“ 这两句话,看到ChatTTS项目本身是支持batch推理的,只需要在 chat.infer 时传入的 text 改造为 list 即可,因此我尝试将两句话构造在同一个 list 中传入 chat.infer:

text = ["我是CHAT T T S[uv_break]"] + ["你好[uv_break]"] 
wavs = chat.infer(text, ...)

多次运行可以发现每次生成的音频文本 MD5 是一致的(证明已固定全局随机种子)

偶然发现调换 text 内两句话的顺序后,所合成的音频在听感上有明显的大幅度波动,具体可以看截图中 第三次运行的 结果,不仅仅是 音频文件MD5的改变,更糟糕的是听感上发生了显著的变化。

附件是我的运行截图,

image

我想知道有其他人也遇到这种情况吗?是否有定位到原因呢?

viewlei commented 4 months ago

可能是seed问题,第一个batch下 seed生成的随机数 不等于 第二个batch下seed所生成的随机数