mirror of
https://github.com/index-tts/index-tts.git
synced 2026-10-30 18:10:01 +08:00
生成波形的长度来自 token 数而不是声学:target_lengths = (code_lens * 1.72), 其中 code_lens 是采样到的 stop_mel_token 的下标。解码是随机采样,因此少数情况下 停止符落得偏早,mel 在话音尚未结束时截止,文件最后一个采样点离零很远,播放时 这个阶跃就是一声咔哒。BigVGAN 在 mel 边界处感受野不完整,还可能再叠一段突发噪声。 在 utils/common.py 新增 fade_out_tail(),把拼接完成的波形末尾 20 ms 无条件用 升余弦斜坡降到零,并在四个组装最终波形的位置调用(infer.py 两处、infer_v2.py、 infer_v2_5.py)。 无条件施加而不先做检测:正常生成的尾部本来就是静音,斜坡在那里是空操作。 112 条正常生成实测,62 条逐比特未变,其余没有一条的任何采样点改动超过 -42.8 dBFS(中位 -76.8 dBFS)。10 条有问题的生成末值全部归零。 146 条实测中 11 条(7.5%)出现该问题,与 #523 中他人独立测得的约 5% 同量级。 不解决多吐高频嘶声那个子类型(11 条中 2 条),那需要检测器和阈值,应另开 PR。 流式路径不经过最终拼接,不受影响。 Refs #247, #488, #523, #633