# 双语对照翻译外文字幕的低技术方案【更新】

> 本文公开全文。

原文：https://utgd.net/article/20590

翻译字幕的工具不少，但以在线为主（例如 Hum 发现的这个）。若要长期使用，翻译工具或许还是掌握在自己手里为好。

我本人无暇看娱乐视频，主要看纪录片、采访视频——这些可以视为“史料”——以及近期开始琢磨的烹饪教学，所涉的视频文件将连同字幕文件一起保存到数据库。在这样的环境下。双语字幕就不单单是“看个剧情”的辅助轮，而是理解、检索乃至引用的重要工具。如果是一些对话为主的访谈节目，字幕价值甚至超过视频本身。从 Jobs 这样的商业领袖到福柯这般的哲学家均有不少采访视频，但流传后世者仍然以文字稿居多（尽管我也推荐一睹福柯的风采）。

诚然，即便最终目的是下载双语字幕、获得独立的文件，而非单纯在 YouTube 上在线显示，也有现成服务可供选择，例如提供双语字幕下载的 Chrome 插件 YouTube™ dual subtitles 和在线服务 SaveSubs。但正如前文所言，保存双语字幕是一种基础设施——至少对于严肃看视频学习知识的人来说如此——而在线服务常常触及法律红线，例如前面提到的网站就兼营视频下载，说不好哪天就会被 YouTube 干掉。

为此，我梳理了手工制作双语字幕的流程，以留作兜底方案。这套方法适用于任何规整的字幕文件，无论其来自 YouTube 还是人工智能转录。

## 获得字幕

对于不少人来说，翻译字幕基本就等于翻译 YouTube 上的视频字幕，然而，YouTube 远非一切，且不说并未公开的学术会议和在线语音讨论（有录音录像），不少影视作品也不可能堂而皇之免费挂在网上，而这类作品的双语字幕往往要靠爱好者用爱发电。近年来的字幕质量似乎不错，然而早年却堪称灾难，例如基努·里维斯的 Johnny Mnemonic，拜中文字幕所赐，我基本看了一部改编作品。

获得字幕的方法，基本就是抓取视频网站的资源或自己转录。前者诸位都很熟悉了，中外两大视频重镇——YouTube 和 Bilibili——都滋养了一批字幕网站，文章开头也介绍了一款插件和一个服务，它们下载的字幕文件也有多种格式可选，但根本上都是格式规整的纯文本。我一般用 txt 或 srt，字幕格式如下：

```
序号
开始时间 --> 结束时间
字幕
```

至于 Bilibili ，既然本文在讨论翻译，那么就不必考虑中文视频网站了吧。

其余来源的视频，则可能要自己转录字幕，好在也不难，OpenAI 的 Whisper 养活了一堆服务和本地软件，我本人在使用 MacWhisper，大同小异的工具比比皆是，挑一个顺眼的便好。通常来说，只要能够输出字幕，格式一般也与直接下载的类似。

由于未来会反复观看、引用，我习惯保留字幕文件，并和视频收藏于一处。在不少视频播放器若检测到视频目录中有同名字幕文件，就会自动加载，因而我将两类文件摆在一起。

## 制作对照翻译的双语字幕

接下来是重头戏：手工制作双语字幕。目标格式非常简单，只是加上一行：

```
序号
开始时间 --> 结束时间
字幕原文
字幕译文
```

多数播放器会自动识别多行字幕文字，理论上可以继续追加（就像早年的国粤英三语盗版电影一样）。本质上，本文方案还是基于 HTML 文本的对照翻译，以如下步骤为轴：

- 将字幕文件后缀名修改为 html。

- 以正则表达式预先处理 HTML 文件，以便浏览器能正常处理。

- 用浏览器打开并对照翻译 HTML 文件，方法请参《一种几乎永不失效的网页中英对照翻译方案》。

- 直接全选翻译后的文本。

- 换一个文本编辑器打开 HTML 字幕文件，将上一步获得的文本替换进去，最后将文件后缀名改回来。

易言之，上述方案乃将字幕文件视作网页，借浏览器的翻译功能一口气处理，最终再转回字幕文本文件。其中，用正则表达式处理字幕一步稍显复杂，单独解释。此步骤其实是在每行文本前后套上 HTML 标签，以便浏览器将字幕文件识别为网页，进而调用其自带翻译工具——惟需注意，我所用浏览器 Safari 非常朴素，不排除其他浏览器可以直接翻译文本文件，那或许可略过正则环节。

首先是 \(\\d\+\)\\n\(\\d\\d\.\*\\d\\d\\d\)\\n\(\.\*\\n?\.\*\)。这段表达式用于匹配序号、时间加字幕正文的整段文本（考虑了偶尔的字幕换行情形）。注意，其中的 \\n 意为换行符号，不过不同服务或软件生成的字幕文件可能有差异，不一定均以 \\n 为界，还可能是 \\r、\\n\\r 或 \\r\\n，匹配替换不成之时，可尝试其他换行格式。

接着是 \<span\>$1\</span\>\\n\<br\>\\n\<span\>$2\</span\>\\n\<p\>$3\</p\>。这一表达式以上一段获取的文本为原料，在各行前后包上对应的 HTML 标签。仅有字幕正文两段是段落标签 \<p\>，而其他不需要翻译的文本则是 \<span\>。

如果需要处理的字幕文件较多，可以尝试 BBEdit 等轻代码编辑器，通常它们的文本替换功能更为周全，可以批量查找替换。例如，在 BBEdit 中，可以打开所有待处理的字幕文件，然后使用 Multi\-File Search 功能，一次性搞定所有字幕文件。

文件较多时，来回切换后缀名也有批量方法，Finder 自带的重命名功能即可为之。选中所有待处理的文件，然后替换后缀名——注意带上 \. 以降低误替换文件名中间部分的危险）——即可。Finder 可能会弹出警告，确认无妨。

如无意外，Safari 自带的翻译功能即可对照翻译处理妥当的字幕文件，制成中英双语的字幕。如果播放器无法识别，可能是 macOS 的安全机制封杀了字幕文件，特别是当你使用 srt 格式时。此时只需按住 ⌥Option 键再尝试打开字幕文件，确认开启，随后应当可以正常加载。

## 小结

自《一种几乎永不失效的网页中英对照翻译方案》，我接连发布了《用 Safari 翻译外文电子书和文档》《将外文电子书翻译成双语对照版本，并在任何设备上阅读》《在 DEVONthink 中对照翻译外文 Newsletter》和《一种长寿可靠的网页中英分屏翻译方案》等文章。本文也是浏览器翻译思路的延伸。

以上基于浏览器的翻译方案，与调用 API 的成品软件有所不同。在技术上，浏览器方案乃对照与翻译解耦，Safari、Chrome、Firefox 和 Edge 等一视同仁。更重要的是，由于是翻译整个文档而非逐行处理，你根本不需要考虑如何对接新翻译引擎：只要能够翻译网页上的文字，未来出现的任何一款浏览器都可以用于对照翻译，无论目标是网页、电子书、电子邮件或者视频字幕。

种种技术细节，背后实则是低技术、低耦合、低依赖的意识形态，恰恰因为翻译如现代人的义肢般重要，所以要尝试自己掌握工具。假如一个服务器宕机就足够让一大批熬夜写论文的人哭天抢地，那不仅仅是技术问题，而是非常坏的结构性问题。

文章开头展示的视频是 Jobs 的访谈，那句著名的“电脑是心灵的自行车”就出自此处，不妨尝试一下为其自制双语字幕。当然，视频本身也是值得看的。

---

[前往标准阅读页](https://utgd.net/article/20590?audience=web)
