您说得完全正确。如果严格按原始起止时长和字符比例线性分配,不论文本缩短还是加长,整个句子的 T_start 和 T_end 边界应该纹丝不动。软件实现中的分配逻辑确实是边界不变,只调整内部分割点。实际观察到的时间偏移,通常是由以下两个原因之一引起的,而不是比例分配算法本身:
1. LLM 直接修改了时间戳
默认提示词只要求对文本进行断句,但部分大模型不受控地自行生成了新的时间信息(比如在输出中写了 00:00:01,000 --> 00:00:02,500 等),软件若误将 AI 返回的时间戳当作新字幕的起止时间使用,就会导致边界偏移。
检查方法:在 logs/ 目录找到对应任务日志,搜索 recharge-llm 关键字,查看 LLM 返回的原始 JSON/SRT 数据,确认时间戳是否与输入一致。
解决办法:修改提示词(recharge/recharge-llm.txt),在末尾明确加上:
严禁修改任何时间轴信息。保持输入 SRT 中的每条字幕起止时间绝对不变。只调整文本内容和行数,时间轴必须严格沿用输入值。
2. 软件内部对时间轴的后处理
即使边界在 LLM 断句阶段不变,后续阶段(如配音对齐、帧级别调整、视频慢速/音频加速、或合并过短字幕等操作)也可能主动修改时间轴。例如:
- 开启了“音频加速”或“视频慢速”,软件会强制拉长或缩短字幕时间以匹配配音;
- 开启了“移除字幕间静音”或“对齐字幕声音”,会调整相邻字幕的偏移;
- 设定了“最短语音持续毫秒”(如 1000ms),若某条新字幕时长太短,软件会将其合并到相邻字幕,导致时间轴变化。
这些后处理与 LLM 断句本身无关,但会被用户误认为是断句导致的偏移。
排查方法:在单视频交互模式下处理一个视频,当 LLM 断句完成后(弹出字幕编辑窗口时),立即检查时间轴是否偏移。如果此时边界正确,则说明后续操作导致偏移;如果此时已偏移,则说明是 LLM 或软件分配阶段的问题。
总结
- 比例分配算法本身不会偏离边界,您的推论是对的。
- 偏移的根源:要么是 LLM 擅自改动了时间字段,要么是后续阶段(如配音、对齐、合并)干预了时间轴。
- 最稳妥的解决:关闭 LLM 重新断句,改用 VAD + “Whisper预分割音频” + 手动调整参数,或使用单视频交互模式手动校验时间轴。