先找到错误属于哪一层
video-recap 的数据契约区分解说旁白与原声留白。旁白文字应对应采用的配音;对白字幕则对应留白里真正听见的句子。原片已经烧进画面的硬字幕是像素,另改一份文字文件不会擦除它。
原创素材中,人物说“不是顾砚,是顾源”,自动识别却写成“是顾砚,是顾源”。丢掉否定词,人物纠正姓名的意思变了。先回听这句,再对照本片已核定的人物名单确定姓名字形,不依据剧情猜它该说什么;听不清时记录待确认,不能补一个看似合理的名字。
若录音本身说错,修改屏幕字幕只能制造音画矛盾,应先决定是否更换声音。下面的方法重点处理已经正确出声的原声对白。
改真正会被读取的字幕文件
原声留白字幕的优先级从高到低是:user_subtitles.json、用户提供的 SRT/ASS、Agent 校对的 original_subtitles.json、ASR 兜底。若前面已有旧用户字幕,只改后面的校对文件,仍可能读到旧文字。
| 当前来源 | 先做什么 | 核对什么 |
|---|---|---|
| 用户字幕 | 在采用的版本中改人名或否定词 | 是否覆盖了需要保留的对白 |
| 已校对白 | 更新实际出声句子的记录 | 是否仍对应当前剪辑 |
| 识别兜底 | 准备有依据的校对文件 | 不靠粗略估时冒充精确对白 |
一次修改的范围也要说明。若用户文件不是完整对白集,先确定剩余句子的保留方案,不假设会自动与低优先级文件逐条合并。字幕内容核对不等于已完成出入点听审。
原片时码与成片时码不能混用
下面是原创纸面时间示例,不是已合成的视频。原片第 110—113 秒的句子,剪进当前成片后位于第 8—11 秒。只填 110—113 而不说明轴,可能让字幕完全离开对应画面。
在这一固定版本中,user_subtitles.json 的裸数组默认是成片 OUTPUT 轴;包一层 timeline 与 lines 可明确指定 source 或 output。用户 SRT/ASS 默认按原片轴映射;original_subtitles.json 使用成片轴。
例如要提供原片轴校对,可写:
{"timeline":"source","lines":[{"start":110,"end":113,"text":"不是顾砚,是顾源。"}]}
这只是文件形状示例,实际区间必须回听原片并依据当前剪辑映射。精确来源会按句区间裁到留白边界,跨边界可拆分;不能把 ASR 的中点估时当作相同证据。
重做后检查实际听到和看到的内容
用当前文件重做后,播放姓名出现、否定词、句子交界和旁白切回的片段,再完整看一遍实际交付文件。检查是否多了一行旧字幕、换场后还残留上一句、原声被压住,或硬字幕与新对白互相遮挡。
原声对白是否烧录还受现有遮罩和用户替换要求影响,文件存在不保证它已显示。需要替换旧硬字幕时,另按明确方案处理画面;不要用新文字叠在错误文字上就当修好了。
若项目采用显式 subtitle_track.json,它是完整替换字幕轨,不能当一条纠错补丁;需携带所有应保留的 cue 并匹配当前音画。本文没有渲染或试听结果,文件合法也不能代替实际播放。
常见问题
校对文件改对了,为什么导出还是旧字?
先看是否仍采用更高优先级的用户字幕,再核对是否重新合成当前版本;也可能旧字已烧在原片画面里。分清来源后再修对应层。
用 skill 来做
用 $video-recap 只修这段原声对白字幕。回听当前采用的声音,核对人名与否定词,列实际字幕来源及优先级、原片或成片轴与留白区间。保留其他文案和声音;重做后报告实际显示与播放检查,未检查就明确写未检查。
查看具体方法: 对白字幕来源与两条时间轴 · 显式完整字幕轨的替换边界