今天这篇文章来探讨下双语字幕这件小事。

首先对于一部外语影片或剧集,原生的英文字幕肯定是能够轻松获得的,但是匹配、高质量的翻译字幕缺并不总是能找到。这里分享一些我在寻找和手动 DIY 双语字幕的一些经验和想法,我自己也编写了一些工具,有同样需求的朋友也可以快速上手:D

1. 考虑寻找现成的高质量字幕

很多大火的剧集都会有字幕组第一时间跟进字幕制作和资源的发布,我们可以在各种 BT, PT 站点找到这些字幕组打包好的自带字幕的资源,或者也可以在第三方的字幕站点上寻找合适的字幕。

这里安利一个油猴脚本:豆瓣资源下载大师,可以在豆瓣的影视详情页右侧显示有资源的站点,非常方便

Pasted image 20230910152405 效果如下图所示

image-20220509144533549

中文字幕推荐 字幕库, 大部分字幕都可以在这里找到。其他语言可以到 OpentSubtitles 碰碰运气,虽然界面有点古朴,但是人家资源还是很丰富滴

2. 字幕的时间轴修正

对于下载的字幕,我们常遇到的问题就是时间轴不匹配,相信每个影视爱好者都或多或少碰到过这样的问题。产生不匹配有多种原因,典型的比如:

  • 视频帧率不匹配
  • 视频有删减 (片头或者片中都有可能,常见于电视剧集,有些中间有广告转场有些没有)
  • 视频版本不一样 (各种删减版,完整版,导演剪辑版等等)

最后一种差异的地方太多,建议重新找字幕。对于前面两种情况,文本的部分没有太多差异,只需要调整字幕的时间轴就可以了。

这里需要一些对齐时间轴的工具,这个市面上已经有很多了,大部分都是基于将对白音频持续时间和字幕对白持续时间做匹配,然后进行字幕整体时间轴的缩放或平移来实现对齐的。

比如 Sushi, 以及ffsubsync

还有一类是最近比较火的,利用 AI 来对语音进行识别,输出对应的字幕。一半都是通过 Whisper 这个开源的语音识别模型来实现的,比如autosubsync.

这类语音识别的 AI 目前已经很成熟了,市面上有很多商业应用,比如办公软件 飞书,腾讯会议一般都会支持会议语音转文字。但是这种都是为会议场景准备的。其实国内网易有道在这块做的更早,对英文支持更好,网易见外可以直接对音频进行识别,并生成 srt 文件,甚至还可以直接加上翻译,效率直接拉满。免费额度基本够用,各位轻度使用的朋友不要错过。

当然,这类 AI 语音识别和翻译现阶段还是差了点意思,在各种影视作品中,各类人名,专有名词,还有各种各样的梗 (比如 The Simpsons ), AI 处理起来还是有点够呛,所以最好还是优先选择人工调教后的字幕比较好。

上面罗列的那些对齐工具只能处理字幕和影片都是原生语言的情况,比如处理英文电影的英文字幕,但是对于要对时间轴不匹配的中英文双语字幕就基本没辙了。找遍了全网都没找到合适的工具,所以我就自己写了一个 srt-fuzzy-sync

fuzzy-sync 是一个简单的同步 srt 字幕的工具,通过指定一个与音轨匹配的参考字幕文件,来将另一个未同步的字幕进行匹配,时间轴修正,使得其可以与音轨正确对齐。

简单点来说呢,这是一个专门用来对双语字幕时间轴进行修正的工具。你手头有一个英文电影资源,一个正确对齐的英文字幕,一个没对齐的双语字幕,这个时候你就可以用 srt-fuzzy-sync 这个工具,将英文字幕设定为参考,然后对双语字幕的时间轴进行修正,就可以得到一个时间轴正确的双语字幕啦!

为什么叫 fuzzy-sync 呢,这主要是为了通用性,只对两个字幕之间高度相同的一些关键对白进行匹配,其他的对白则只是基于匹配结果进行整体偏移,这样做的好处是即便你找的这两个字幕的对白数量不一样,仍然可以完成同步。

一般英文的 SDH 无障碍字幕里都会有很多非对白场景下的文字提示,比如

(Theme Music Playing)

(sigh)

(Bird Singing)

而影片对应中文字幕里一般都不会加上这些翻译。此外中文字幕还常常对影片中出现的标题、店铺招牌、标语、新闻标题做翻译说明,种种因素导致中英文字幕在句子的数量上不是严格对等的。

此外这些字幕出现的时间,通常是没有对应的对白音频的。上面基于音频匹配的都无法很好地处理这类情况,所以我才抛弃按句匹配的方法,改为按一些句子很长,具有标志性,在影片中通常只会出现一次的关键语句匹配。

至于找不到的现成双语字幕的,那就需要我们自己动手制作啦。

3. 自制双语字幕

有时只能找到现成的中文字幕和原版英文字幕,但是没有双语的版本,这个时候就需要我们手动合并了。

这里推荐一个工具网站 Subtitle Tools, 里面有各种简单的字幕工具,比如字幕合并,字幕格式转换。

对于手上又对齐的英文字幕和对齐的英文字幕,但是数量很多不想一个个到网站上去合并的,可以考虑 srt-merge 这个工具。不过原作者很久没更新了,我这里也编写了一个工具,也可以实现一样的功能。dual-lang-sub-tool

此外还有一种常见的情况,就是我们下载的 WebRip 版本资源,影片已经内置了多国语言分别的字幕,这些资源大部分是来源于 Netfilx, Disney Plus , iTunes 这些,我们可以直接提取影片资源内置的两种语言的字幕然后将它们合并。

内置字幕的提取可以使用 ffmpeg 工具,首先用 ffmpeg -i 文件路径 来查看基本信息,确定好字幕所在的 track, 比如 Stream #0:3(chi) Subtitle, 这种就是说明 3 号 stream 是中文字幕。

# example output # ......
Stream #0:1(jpn): Audio: aac (LC), 48000 Hz, stereo, fltp (default)
Metadata: title : 日语

Stream #0:2(chi): Audio: aac (LC), 48000 Hz, stereo, fltp
Metadata: title : 国语

Stream #0:3(chi): Subtitle: ass (default)
Metadata: title : gb

Stream #0:4(chi): Subtitle: ass
Metadata: title : big5

可以用下面的命令将其提取出来并转换成 srt 格式

ffmpeg -i xxx.mkv -map 0:3 -c:s srt output.srt

提取完成后就可以直接合并得到成品的双语字幕了,但是你应该也会觉得这样提取太麻烦,尤其是一部剧几十集的情况。一般同一个资源,里面各个音轨和字幕的排布是一样的,比如上面只取了一集进行查看,其他集数都是一样的,中文字幕都是在 stream 0:3, shell 循环一下就可以了。

当然你可能觉得这还是太麻烦了,我也是这么想的,所以 dual-lang-srt-tool 工具也支持自动检测,导出,合并双语字幕啦:D DIY 双语字幕可以很简单

后记

对于一些专有名词太多,AI 翻译质量欠佳,又没有现成中文字幕可供参考的,那目前就没有很好的办法了。通常我遇到这种情况是用 AI 的版本将就下,或者直接全英文一把梭。不过随着 AI 技术的发展,后面或许可以考虑将过往季的字幕喂给 AI 让 ta 自己学习人名地名翻译,再辅以各种新闻八卦材料让 AI 也能对各种潮流热梗烂熟于心,到那个时候制作双语字幕就是分分种的事情了,可以预见的是这样的 AI 应该有生之年就可以用上,至于是好事还是坏事,那就交给未来去评判吧。