字幕后处理
字幕后处理是位于“字幕优化与翻译”之后的独立模块。它面对的是已经可以输出的初版 字幕,可以按用户选择大幅调整分段、持续时间、间隙和局部文本,使观众看到的字幕速度 更平稳、连续。
与字幕优化翻译的边界
字幕优化与翻译负责前置拆分、按字数上限断句、文本优化和翻译;后处理不会改变这些 上游功能,也不会重新执行整段翻译。它只处理传入的成型字幕,并在开启相应能力时进行 结构级重组、速度控制、标点处理、散轴修复和局部语义修复。
完整 workflow 默认开启后处理。也可以只打开后处理页面,直接导入已有 SRT、VTT 或 普通 ASS。
导入规则
所有输入都会转换为统一的纯文本字幕模型:
- SRT 是默认工作格式。
- VTT/ASS 的样式、定位、特效和第三方 ASS 高级属性不会保留。
- VideoCaptioner 自己导出的 ASS 可携带可靠的单双语布局标记,但样式仍会丢弃。
- 没有可靠标记的双语 SRT/ASS 需要确认“输入结构”:第一行是原文或第一行是译文。
“输入结构”只说明导入时每一行的角色;“输出布局”决定保存和导出时原文与译文的上下 顺序。两者彼此独立。例如可以按“第一行是译文”正确导入,再选择“原文在上”输出。
运行模式与方案
“应用修改”会写入通过校验的调整;“仅分析”只评估问题并生成结果/报告,不替换工作 字幕。内置“宽松”“均衡”“平滑优先”三个模板都有出厂基线,可直接修改并恢复。 自定义方案从其中一个模板复制,恢复时回到对应模板的出厂值。
速度优化默认以译文为主。可改为原文或显示布局主侧,也可开启双侧优化。启用语义修复 后,确定性算法仍无法解决的硬超速片段可交给 LLM 做局部修复;候选必须通过结构、时间 轴和内容约束后才会写回。
固定算法与 ForcedAligner
默认不需要视频或音频,系统使用现有时间轴和固定算法进行平滑。需要更精确的语音边界 时,可关联原视频/音频并开启 ForcedAligner。软件会自行生成并缓存时间证据,不需要 另行上传 VAD;模型不可用或部分窗口失败时自动降级,不影响其余片段。
字幕尾句因平台导出或封装时长差异而轻微超过媒体结尾时,不会禁用整项对齐。与媒体仍有 交集的尾部窗口会裁剪到实际媒体结尾后继续调用 ForcedAligner,后处理输出也会收紧对应 尾句的结束时间;完全位于媒体结尾之后的字幕只使用原字幕低等级时间证据,其余窗口继续 对齐。只有字幕与媒体完全没有时间交集时,才会整体降级并提示检查关联媒体。
尾部补偿(避免字幕过快消失)
速度优化只会为“读着来不及”的片段借用间隙,不会为读着舒适、后面却是长停顿的片段 补时间。这类字幕会在自然结束点消失,留下一段空白,观感上“闪一下就没了”。开启 尾部补偿后,会在超过最大闭合间隙的停顿前,按一条单调钳制补偿曲线为上一段 结尾追加显示时长。补偿量与留白都随间隙单调不降(间隙越大、停留不减、留白不减):
间隙 ≤ 最大闭合间隙:交给“闭合短间隙”,不补偿。- 跨过最大闭合间隙:立即给到最小补偿(保证有可感知的尾音),随间隙线性上升。
- 到达最大补偿间隙:补偿封顶在最大补偿,更大的间隙不再增加、只让留白继续张开。
四个旋钮就是曲线的两个拐点:最大闭合间隙 / 最小补偿(下拐点)与 最大补偿间隙 / 最大补偿(上拐点)。它们受一条约束联动钳制 —— 最大补偿 − 最小补偿 ≤ 最大补偿间隙 − 最大闭合间隙(斜率 ≤ 1),保证留白永不倒挂、 永不重叠;最小留白恒等于 最大闭合间隙 − 最小补偿。此外,延长后不超过普通字幕最长 显示时长;音乐/歌词、孤立标题卡、短文本长显示等受保护段一律跳过。它只延长上一段 结尾、绝不缩短,是速度优化确定最终时轴后的最后一步时轴处理。设计详见 ADR-0005。
尾部补偿默认关闭。在“字幕后处理设置 → 时轴 → 尾部补偿”分组下开启,用滑块或数字框 精确调整最小补偿、最大补偿间隙与最大补偿(旋钮范围会随约束实时收紧,配不出非法 曲线);这些参数随所选方案(profile)保存,可一键恢复出厂值。自定义完整方案需在 GUI 中从内置模板复制并编辑,CLI 再通过稳定方案 ID 使用;CLI 本身不创建或编辑完整方案。
保存与导出
任务完成后会生成 【后处理字幕】<名称>.srt。结果表格允许继续人工修改:
- “保存”更新规范 SRT 工作稿。
- “导出”按当前输出布局生成 SRT/VTT/ASS/JSON/TXT。
- 导出 ASS 时调用字幕样式配置,不继承输入 ASS 的样式。
- 任务执行期间的模型更新不会提示“有未保存的修改”;只有人工编辑后才提示。
输入文件不会被覆盖。如果后处理失败,完整 workflow 会回退到已保存的初版字幕;独立 页面会保留原输入和已有工作稿。
开启 --qa-report 会在结果旁写入 .qa.md;速度阶段产生审计结果时会自动写入 .speed-changes.json。只有精确时间轴成功应用并启用保存选项时,才会生成 .vctiming.json 时间证据。
CLI 示例
# 使用均衡方案处理成型字幕
uv run videocaptioner postprocess input.srt --profile balanced
# 明确双语输入结构,并以译文为速度优化主侧
uv run videocaptioner postprocess bilingual.srt \
--layout source-above --primary-side translate
# 关联视频并启用精准时间证据
uv run videocaptioner postprocess input.srt --media video.mp4 --precise-timing完整参数见 CLI 参考。
