如何检查和修改 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

用什么工具改

Twinsubs 目前只负责生成文件,没有内置编辑器;这是有意控制范围,校对交给你熟悉的工具。

改完存回时保持两点:编码仍是 UTF-8,扩展名仍是 .srt。「文本编辑」默认存成富文本时,要先改成纯文本格式,否则文件里会混进格式信息。

机器字幕常见的五类错误

  1. 专有名词人名、公司名、产品名、术语。识别可能写成发音相近的词,翻译又可能直译。这类错误最该先查。
  2. 数字和单位年份、金额、百分比。听错一位数字意思就变了,务必对着视频核。
  3. 同音字和漏句背景音乐盖过人声的地方,容易漏掉半句或写成同音字。
  4. 断句位置一条字幕在句子中间断开,读起来别扭。合并或拆分条目即可。
  5. 时间重叠或过短两条字幕的时间段交叉,或某条显示不到 1 秒,观众来不及读。部分剪辑软件遇到重叠会拒绝导入。

一个省时间的校对顺序

  1. 先搜专有名词在编辑器里全局查找替换,一次改完同一个词的所有错误写法。
  2. 再扫数字只看带数字的条目,对着视频核。
  3. 最后顺着播放看一遍用 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,不要转。

实时翻译另有一条路:可以在会后主动把一场实时翻译存成文字文件,见开会看双语字幕。

字幕仅供参考,正式发布前请自行校对,见使用条款第 3 条。

常见问题

SRT 能转成纯文本稿吗?

能。SRT 是纯文本,去掉序号行和时间码行就是逐字稿。上面「把 SRT 转成纯文本」一节给了一条终端命令和一个文本编辑器里的做法。

双语 SRT 能只留一种语言吗?

最省事的办法是直接用 Twinsubs 同时输出的单语文件(如 .zh-Hans.srt),里面只有目标语言。手头只有双语文件时,用编辑器的查找替换,按行删掉其中一种语言。

SRT 打开是乱码,怎么办?

多半是编码问题。用文本编辑器按 UTF-8 重新打开或另存。Twinsubs 输出的就是 UTF-8。

整份字幕都比声音早或晚,怎么办?

先确认字幕和视频是同一个文件的结果。确实整体偏移的话,用专门的字幕编辑器(如 Aegisub 的整体平移时间功能)一次性平移,不要逐条改时间码。

什么叫时间重叠?

下一条的开始时间早于上一条的结束时间。部分剪辑软件遇到重叠会拒绝导入,把前一条的结束时间改到后一条开始之前即可。

更新于 2026-10-12。回到双语幕首页