剪辑错误与重复(流水线智能体 2)
自动化剪辑的第二步,在 cut-silences 之后运行。它移除人工编辑在第二遍剪辑中会剪掉的内容:结巴("the the","I- I-")、立即重复的词、假开头(一个被放弃并重新开始的短语)以及重录音(重新录制的台词——保留干净的版本,丢弃出错的版本)。
判断什么算作错误是判断,而非公式——强调性重复("never, never")和修辞性重复("the first piece is, is this…")在机械上看起来与结巴完全一样。因此,默认情况下此智能体是审核机制:它展示带有完整上下文的候选内容;智能体(和用户)决定;仅批准的剪辑会被渲染。
使用时机
- "剪掉错误"、"移除结巴/重复"、"清理口误"、"保留最佳录制"、"剪掉假开头"
- 作为主编辑工作流的第二阶段,处理 cut-silences 的输出。
三个步骤的流程
1. 查找候选内容(机械操作)
node .claude/skills/cut-mistakes/scripts/find-cut-candidates.mjs \
<silence-transcript.json> --out-dir video-projects/<slug>/assets
输入通常是智能体 1 的 <stem>.silence-transcript.json,因此剪辑会落在已去除静音的时间线上。写入文件:
<stem>.cut-candidates.json— 结构化候选项(类型、置信度、提议的cut范围、removes/keeps文本、上下文、建议)<stem>.cut-candidates.md— 可读的提案
候选类型:stutter(立即重复的词)、retake(通过 Jaccard 相似度检测的重复或近似重复片段)、false_start(被放弃并重新开始的短短语)
2. 审核(必选步骤)
在上下文中阅读每个候选项,并决定保留还是剪掉。机械检测器无法区分有意强调/修辞与真正的口误,所以不要盲目信任 recommend——请阅读 removes + context。常见的误报:强调性重复("it's never, never hands-off")、系动词后接问句("the piece is, is this…")、列举。
向用户展示带有每项建议的候选项;收集批准。将批准的剪裁写入文件:
{ "cuts": [ { "start": 100.93, "end": 101.06, "reason": "I- false start" }, ... ] }
(start/end 以秒为单位,基于输入转录/视频时间线。你可以扩大候选范围——例如,对于重录音,从出错的录制开始剪到干净的重新开始。)
3. 应用批准的剪辑
node .claude/skills/cut-mistakes/scripts/apply-cuts.mjs \
<silence-transcript.json> --cuts approved-cuts.json \
--video video-projects/<slug>/assets/edited-silenced.mp4 \
--output video-projects/<slug>/assets/edited-clean.mp4 --apply
写入 EDL、重新调整时间轴的 <stem>.mistakes-transcript.json(供动态图形智能体和 validate-beat-sync.mjs 使用)、决策日志,以及(使用 --apply)剪辑后的视频(ffmpeg 修剪+连接,A/V 同步)。去掉 --apply 可进行试运行。
审查结果
使用共享的审查工具目视检查剪辑并抽查边界:
node scripts/build-edl-review.mjs <stem>.mistakes-edl.json \
--original video-projects/<slug>/assets/edited-silenced.mp4 \
--edited video-projects/<slug>/assets/edited-clean.mp4 \
--output video-projects/<slug>/assets/mistakes-review.html
npx serve . -p 8080 -n
注意事项
- 非常干净的素材可能产生很少或零个实际剪辑——这是有效结果;不要为了达到配额而剪掉自然的讲话。
- 在两个口语词之间的剪辑是硬连接。对于结巴/假开头,它们通常很干净;对于更紧的音频,可以稍后添加 20-30ms 的淡入淡出。
- 将
mistakes-transcript.json+ 干净视频传递给智能体 3(动态图形/分层卡片)。