[2noise/ChatTTS]流式生成语音会有杂音

2025-11-10 226 views
6

用的最新版本master分支,试过Split Batch设置为0,但没用

回答

9

这个问题一直存在,我最近看了下代码,大概率是由于vocos声码器产生音频数据后,流式切分导致的:

根因在于,流式产生的wavs,每次都是从头开始的全量音频。除了每次循环新产生的音频数据,前面的音频数据也会变化。如果按当前的方式机械切割,会造成每个chunk拼接处不连续,在频谱上表现为一条明显的全频竖线,听感上有明显节奏噪音。

我看了https://github.com/fengyizhu/ChatTTS的方案,是在静音处切分,结果就好很多,基本去除了拼接引起的噪声。

@fumiama 看看有没有更好的解决方案

9

这个问题一直存在,我最近看了下代码,大概率是由于vocos声码器产生音频数据后,流式切分导致的:

根因在于,流式产生的wavs,每次都是从头开始的全量音频。除了每次循环新产生的音频数据,前面的音频数据也会变化。如果按当前的方式机械切割,会造成每个chunk拼接处不连续,在频谱上表现为一条明显的全频竖线,听感上有明显节奏噪音。

我看了https://github.com/fengyizhu/ChatTTS的方案,是在静音处切分,结果就好很多,基本去除了拼接引起的噪声。

@fumiama 看看有没有更好的解决方案

看了下gpt-sovits的流式实现方案,他是直接把文本按标点拆分,然后再流式返回,这样首包就会很快,我用这种方式改造了下fish-speech,效果还不错

2

这个问题一直存在,我最近看了下代码,大概率是由于vocos声码器产生音频数据后,流式切分导致的:

根因在于,流式产生的wavs,每次都是从头开始的全量音频。除了每次循环新产生的音频数据,前面的音频数据也会变化。如果按当前的方式机械切割,会造成每个chunk拼接处不连续,在频谱上表现为一条明显的全频竖线,听感上有明显节奏噪音。 我看了https://github.com/fengyizhu/ChatTTS的方案,是在静音处切分,结果就好很多,基本去除了拼接引起的噪声。 @fumiama 看看有没有更好的解决方案

看了下gpt-sovits的流式实现方案,他是直接把文本按标点拆分,然后再流式返回,这样首包就会很快,我用这种方式改造了下fish-speech,效果还不错

我看了chattts,也是有这个功能的,不过拆分的标点不包含逗号,所以一般是拆到一句话级别。这个有点不可控,有时候一句话很长。但是拆了句子,其实会影响TTS的输出效果的(模型不能很好地捕捉前后长程的关联关系)