Dualsub 是一个 Chrome 字幕翻译扩展,四年前在这里发帖推广过。
有些人可能知道 Dualsub 有收费功能了,在你想差评之前,让我先说明一下,其实你没必要付费。
YouTube 自带机器翻译功能
有些人可能不知道,YouTube 自带机器翻译功能,只是开启方法不直观而已:
- 打开字幕菜单,选择字幕语言,相当于选择“原文字幕文件”。
- 再打开一次字幕菜单,会多了个“自动翻译”菜单条目。
- 在“自动翻译”的二级菜单,选择机器翻译的语言,最后字幕状态会是这样。
这样,单语字幕不用安装浏览器扩展就能实现,自然也不需要给任何人付费。
原文字幕和译文字幕都是由 YouTube 服务器提供的。
如果你用 DevTools 来查看网络请求,你会看到字幕文件地址:
https://www.youtube.com/api/timedtext?v=VIDEOID&lang=en&tlang=
https://www.youtube.com/api/timedtext?v=VIDEOID&lang=en&tlang=zh
参数 lang
和 tlang
分别对应原文和译文语言,YouTube 服务器会返回 JSON 格式的字幕文件。
实现双语字幕
原理很简单,拦截播放器的字幕文件的网络请求,另外下载原文和译文两个字幕文件,合并成一个新的字幕文件,传回给播放器。
这样需要用户选择 2 x 2 = 4 个字幕语言,对应 Dualsub 的“简单模式“。
这样设置后 YouTube 的字幕语言菜单就临时失效了,但是字幕样式菜单依然有效。
因为使用的还是 YouTube 服务器提供的字幕文件,纯浏览器本地实现的功能,自然也不会有人想给第三方服务器付费。
可能“简单模式”这个叫法有点问题,或者叫”原生模式“,或者干脆“免费模式”更好。
新功能:Whisper 语音识别
Dualsub 有个“标准模式”,简单说就是插一个新的 HTML 节点到网页上,以实现更精细的字幕控制和渲染功能。使用方法和“简单模式”一样,只是多了一些设置选项。
OpenAI 开源了 Whisper 后,我自搭了个 Whisper 服务器来识别 YouTube 视频。
Whisper 比 YouTube 的识别结果好的地方:带标点符号,能提升机器翻译质量。
使用方法也很简单,只需要在“字幕语言里”选择 (auto-generated) +
这个菜单条目即可。
就跟 YouTube 的“自动生成”字幕一样,但是带有标点符号,字幕整句显示,和画面声音没有延迟,机器翻译也是联系上下文的。(备注:有延迟也是 Whsiper 的打轴错误)
原理是一边播放一边识别,每次只识别播放时间后面的 30-90 秒钟,提前处理好要未来要显示的字幕数据,除了一开始无字幕数据时要等待一会(类似音视频数据的“缓冲”)。
两种模式可以同时启用,可以做个对比。
可以看到,因为有了标点,断句和翻译更合理。
目前的限制
- 仅支持识别英语
- 仅支持 YouTube
- 不支持加密的、私有的、需要付费的等不能在服务器下载的视频。
亲自试用一下
现在测试期间,不需要注册,也不需要邀请,开箱即用,免费识别和翻译每个视频的前 30 分钟。
另外一些技术问题也可以看看 Github Issue 这个帖子。