Speech-AI-Forge icon indicating copy to clipboard operation
Speech-AI-Forge copied to clipboard

[ISSUE] 如何消除开头的空白音频

Open chenchen2204 opened this issue 8 months ago • 2 comments

确认清单

  • [x] 我已经阅读过 README.md 和 dependencies.md 文件
  • [x] 我已经确认之前没有 issue 或 discussion 涉及此 BUG
  • [x] 我已经确认问题发生在最新代码或稳定版本中
  • [x] 我已经确认问题与 API 无关
  • [x] 我已经确认问题与 WebUI 无关
  • [x] 我已经确认问题与 Finetune 无关

你的issues

生成的音频开头总是有一段空白时间,字数越少越严重,如“你好”,有很长空白时间,结尾去掉[uv_break]可以消除尾部的空白,开头的如何消除

chenchen2204 avatar Apr 27 '25 09:04 chenchen2204

我估计使用chattts产生空白音频这个应该就是模型所致,我们应该没有什么特别好的办法解决

主要原因是long context导致,context指的就是 音色 ,使用chattts音色克隆是模型 zero shot 调用,所以等于是模型接在输入的音色音频之后继续生成,这个 继续生成 的过程就容易生成空白这种 副语言 现象 (就是模型觉得前后两句话之间应该留点空白,可能是输入音频domain和合成音频domain太远导致)

有几个办法避免:

  1. 使用 seed speaker (基于种子的音色) 会比 zero shot 音色更稳定,因为上下文很短只占用一个 embedding 位置
  2. 减少 speaker voice 长度,在10秒以下,且干净无噪声
  3. 抽卡,尝试不同的 infer seed ,可能能找到一个稳定的 infer seed
  4. 尝试其他模型,chattts现在缺乏维护和后续改善,其他新模型的zeroshot能力克隆能力会更稳定

也有可能是bug,不过你提供的信息不多我也评估不出来,你如果觉得还是bug导致,应该提供更多信息帮助我能复现具体问题

zhzLuke96 avatar May 05 '25 14:05 zhzLuke96

https://github.com/lenML/Speech-AI-Forge/commit/4d8ed07fde7f696de65b6a460f28e4b1f7dab3de

添加了一个功能移除音频两端的空白部分,但是只支持非流式合成的时候

使用方式:

  1. webui: 开启 enable_remove_silence 选项即可
  2. api: v2/tts api 中的设置 adjust.remove_silence=true 即可

zhzLuke96 avatar May 09 '25 14:05 zhzLuke96