Files
puke d9e41aac89 fix: 末尾加淡出,避免停止符采样偏早时留下咔哒声 (#806)
生成波形的长度来自 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
2026-09-30 00:06:52 +08:00
..
2026-08-11 15:08:26 +08:00