Skip to content

关于 CosyVoice3 句首/句尾爆音原因及 fade-in 在推理中的作用 #33

Description

@CamellIyquitous

您好,感谢您开发和维护 cosyvoice.cpp。

我目前使用 CosyVoice 官方 Python 仓库进行 CosyVoice3 推理,发现合成音频有较高概率在句首出现短促的杂音、爆音或 click/pop,句尾偶尔也会出现类似问题。

这个现象与官方仓库中的以下 Issue 比较相似:

我注意到您之前在 cosyvoice.cpp 中增加了一个默认启用的 20ms fade-in 后处理:

从提交代码来看,处理方式是对生成音频开头的约 20ms 做线性淡入。我想请教几个问题:

  1. 您当时添加 fade-in,是否也是因为观察到了 CosyVoice3 在音频开头产生杂音、爆音或 click/pop?
  2. 您是否定位过这种句首瞬态的具体原因?例如可能来自:
    • Causal HiFT vocoder 在第一次推理时缺少历史上下文;
    • Flow/CFM 生成的起始 mel 存在边界瞬态;
    • iSTFT、波形输出或音频拼接时,首个采样点没有从零开始;
    • 或者其他原因。
  3. 这个 fade-in 主要是用于掩盖模型本身产生的首帧瞬态,还是为了解决播放/PCM 拼接时的波形不连续?
  4. 在流式推理中,HiFT 是否会保留前一包的上下文或缓存,因此只有第一个音频包存在“冷启动”边界,后续音频包通常不会再出现相同的开头爆音?
  5. 当前 fade-in 是只对一次完整推理的第一个音频包执行,还是会对每个流式输出包、每个文本分段分别执行?
  6. 对于偶尔出现的句尾爆音,您是否也观察到过?是否建议增加 fade-out、尾部异常检测或裁剪处理?

我目前的理解是:如果流式推理的后续音频包能够复用 vocoder 上下文,那么 fade-in 应该只需要作用于整段音频的第一个包;如果对每个流式包都执行 fade-in,可能会造成包间音量下陷或新的不连续。不知道这个理解是否正确?

thx for your effort!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions