字幕工作台
处理已经存在的字幕文件。语音识别产出的原始字幕通常很脏:一句话被切成七八段、夹着 HTML 标签、时间轴整体偏移、充满"嗯""那个"——这个技能专门收拾这些。
边界:它不生成字幕。要从音频出字幕,先用语音识别工具,产出的 SRT 再交给本技能处理。
何时触发
- 字幕对不上画面:「整体快了两秒」
- 字幕太碎:「一句一句跳得太快,帮我合并下」
- 字幕很脏:有
<i>标签、有重复的"嗯""就是" - 要导出稿件:「把字幕导出成纯文本」「转成访谈稿」
- 双语字幕要合并成一条
- 批量处理一堆字幕文件
工作流
1. 先看一眼字幕状况
python3 scripts/subtitle.py input.srt --stats
输出条数、总时长、平均每条时长、最短/最长条。
平均时长低于 1.2 秒说明切得太碎,需要合并。
2. 按需处理
常用操作可以串联:
# 清洗 + 合并碎句 + 导出纯文本
python3 scripts/subtitle.py input.srt --clean --merge 0.4 --export txt
# 时间轴整体后移 2.5 秒(字幕比画面快)
python3 scripts/subtitle.py input.srt --offset +2.5 -o fixed.srt
# 清洗后导出 Markdown 稿件
python3 scripts/subtitle.py input.srt --clean --merge 0.5 --export md -o draft.md
参数说明:
| 参数 | 作用 |
|---|---|
--stats |
只看统计,不改动 |
--clean |
去 HTML 标签、去口吃重复、压缩空白 |
--merge N |
合并间隔小于 N 秒的相邻字幕 |
--min-dur N |
过短的单条并入下一条(默认 0.8 秒) |
--offset ±N |
整体平移时间轴,正数为延后 |
--export txt/md/csv |
导出格式 |
-o PATH |
输出路径,不给则打印到屏幕 |
默认不覆盖原文件——必须显式给 -o。
3. 双语合并
两份字幕(中英)合并成一条双行:
python3 scripts/subtitle.py zh.srt --bilingual en.srt -o merged.srt
按时间轴对齐,中文在上、英文在下。
4. 转成稿件
导出 txt/md 后,可以进一步整理成访谈稿、会议纪要、课程笔记——
这一步交给模型做:分段、加小标题、提炼要点。
支持的时间格式
| 格式 | 分隔符 | 示例 |
|---|---|---|
| SRT | 逗号 | 00:01:23,456 |
| VTT | 点号 | 00:01:23.456 |
| 简写 | 无毫秒 | 01:23 或 1:23.4 |
脚本自动识别,不用手动指定。
注意事项
- 编码:字幕常见 GBK 乱码,脚本按 UTF-8 读、失败自动试 GBK。导出统一 UTF-8
- 时间轴平移是线性的:如果视频是变速(如 1.2 倍速),线性偏移不够,需要按比例缩放——这种情况提醒用户改用剪映等工具重导出
- 合并会丢信息:合并后原时间边界消失,导出字幕前先备份
- 批量处理用 shell 循环:
bash for f in *.srt; do python3 scripts/subtitle.py "$f" --clean --merge 0.4 -o "clean_$f"; done