如何检查和修改 SRT 字幕
机器生成的字幕不会 100% 正确,发布前要校对。SRT 是纯文本,知道格式和常见错误类型,校一个 10 分钟的视频用不了多久。想要的是不带时间码的纯文本稿(视频转文字),文末也有做法。
SRT 的格式只有四行
每条字幕由序号、时间码、文字和一个空行组成:
1 00:00:00,020 --> 00:00:01,240 今天我想给你看 Today I want to show you 2 00:00:01,240 --> 00:00:03,470 一个小团队如何构建一个有用的产品 how a small team can build a useful product
- 时间码写成
时:分:秒,毫秒 --> 时:分:秒,毫秒,注意毫秒前是逗号。 - 双语字幕就是文字部分有两行或更多行。
- 条与条之间必须留一个空行。
用什么工具改
- 文本编辑器:改几个错字,系统自带的「文本编辑」(存为纯文本)或任何代码编辑器就够。
- 剪辑软件:导入 SRT 后对着画面改,改完再导出,适合同时要调样式的人。
- 专门的字幕编辑器:条数多、要大量调时间轴时用,比如开源的 Aegisub。
Twinsubs 目前只负责生成文件,没有内置编辑器;这是有意控制范围,校对交给你熟悉的工具。
改完存回时保持两点:编码仍是 UTF-8,扩展名仍是 .srt。「文本编辑」默认存成富文本时,要先改成纯文本格式,否则文件里会混进格式信息。
机器字幕常见的五类错误
- 专有名词人名、公司名、产品名、术语。识别可能写成发音相近的词,翻译又可能直译。这类错误最该先查。
- 数字和单位年份、金额、百分比。听错一位数字意思就变了,务必对着视频核。
- 同音字和漏句背景音乐盖过人声的地方,容易漏掉半句或写成同音字。
- 断句位置一条字幕在句子中间断开,读起来别扭。合并或拆分条目即可。
- 时间重叠或过短两条字幕的时间段交叉,或某条显示不到 1 秒,观众来不及读。部分剪辑软件遇到重叠会拒绝导入。
一个省时间的校对顺序
- 先搜专有名词在编辑器里全局查找替换,一次改完同一个词的所有错误写法。
- 再扫数字只看带数字的条目,对着视频核。
- 最后顺着播放看一遍用 IINA 等播放器载入字幕从头播放,只在读起来别扭处暂停。
长视频不需要逐字听完。按这个顺序,大部分错误集中在前两步就能解决。
双语字幕里怎么分清错在哪一行
双语 SRT 每条有两行:目标语言一行,源语言一行。读到不通顺的地方,先看源语言那一行对不对:
- 源语言那行就错了:是识别听错,改源语言那行,再顺手改对应的目标语言那行。
- 源语言对、目标语言别扭:是翻译问题,只改目标语言那行。
- 两行都对但意思不顺:多半是断句把一个完整的意思切开了,把相邻两条合并,或调整分界。
把 SRT 转成纯文本(视频转文字稿)
要的不是字幕,是一份没有序号和时间码的文字稿,比如整理访谈、课程笔记。Twinsubs 对视频只输出 SRT,所以做法是先出 SRT,再去掉序号行和时间码行。两种做法任选:
做法一:终端一条命令(macOS 自带工具)
先按需要选文件:只要一种语言,用单语文件(如 Interview.zh-Hans.srt);用双语文件会把两种语言都留下。然后在终端里运行(把文件名换成你的,含空格要加引号):
tr -d '\r' < Interview.zh-Hans.srt | grep -vE '^[0-9]+$|-->' | sed '/^$/d' > Interview.txt
它做三件事:去掉 Windows 换行符,删掉只含数字的序号行和带 --> 的时间码行,再删掉空行。结果存成 Interview.txt,原 SRT 不动。
注意:整行只有数字的字幕文字(比如单独一行「2024」)也会被当成序号删掉。转完扫一眼数字出现的地方。
做法二:文本编辑器的正则替换
- 备份:先复制一份 SRT,在副本上操作。
- 删时间码行:用支持正则的编辑器(VS Code、Sublime Text 等),查找
^\d\d:\d\d:\d\d,\d\d\d --> .*\n,替换为空。 - 删序号行:查找
^\d+\n,替换为空。 - 删多余空行:查找
\n{2,},替换为\n。
转出的文字每行是一条字幕,不是自然段。需要连成段落,可以再把相邻的行合并。需要带时间位置的稿子,就保留 SRT,不要转。
实时翻译另有一条路:可以在会后主动把一场实时翻译存成文字文件,见开会看双语字幕。
字幕仅供参考,正式发布前请自行校对,见使用条款第 3 条。
常见问题
SRT 能转成纯文本稿吗?
能。SRT 是纯文本,去掉序号行和时间码行就是逐字稿。上面「把 SRT 转成纯文本」一节给了一条终端命令和一个文本编辑器里的做法。
双语 SRT 能只留一种语言吗?
最省事的办法是直接用 Twinsubs 同时输出的单语文件(如 .zh-Hans.srt),里面只有目标语言。手头只有双语文件时,用编辑器的查找替换,按行删掉其中一种语言。
SRT 打开是乱码,怎么办?
多半是编码问题。用文本编辑器按 UTF-8 重新打开或另存。Twinsubs 输出的就是 UTF-8。
整份字幕都比声音早或晚,怎么办?
先确认字幕和视频是同一个文件的结果。确实整体偏移的话,用专门的字幕编辑器(如 Aegisub 的整体平移时间功能)一次性平移,不要逐条改时间码。
什么叫时间重叠?
下一条的开始时间早于上一条的结束时间。部分剪辑软件遇到重叠会拒绝导入,把前一条的结束时间改到后一条开始之前即可。
更新于 2026-10-12。回到双语幕首页