~/aronnax.site/blog/2026
cat swiftvolccaption_release.md

看不懂的那些视频,我给它们配了个实时双语字幕

tokei swiftvolccaption_release.md

Type Lines CJK Words
Paragraph 35 1,318 53
List 12 461 7
Heading 6 26 0
HTML 4 33 1
Total 57 1,838 61

~5 min read

🔗 GitHub 仓库地址:https://github.com/aronnaxlin/SwiftVolcCaption

最近又由自身需求触发造了一个小轮子:SwiftVolcCaption。

能干嘛?

说起来很简单:把你电脑正在放的声音抓下来,实时变成「原文 + 译文」两行字幕,浮在屏幕上。

不管声音是从浏览器、播放器还是会议软件里出来的,它都能抓。

实时双语字幕效果

为什么做这个?

这两年由于个人的规划,我的外语视频或音频逐年增加,锻炼听力诚然是一种办法,但是对于现在的我来说,借助字幕无疑能让我更专注于要干的事,而不是开「双线程」。

一开始是看熟肉视频,但是发现认真被汉化过的视频只占一小部分,而且如果不是授权翻译的话,在 B 站看其实也算损害了原创作者的权利。

后来发现了 YouTube 的自动字幕,但是机翻质量加上一个字一个字往出蹦体验几乎全无,还不如只开纯英文字幕(当然,由于海外博主基本上不会去加 CC 字幕,纯英文字幕也是一个字一个字往出蹦)。

再后面有了「沉浸式翻译」、「Kiss Translator」这种浏览器插件/脚本,算是基本解决了问题。

直到我遇见了非浏览器环境 + 直播这一难关。

其实用 Windows 时,我找到了别人的解决方案。一年前想要玩一款名为 Whispers from the Star 的游戏,这款游戏算是全球第一款和 AI 实时互动的游戏,不过游戏本身不是什么问题,最大的问题在于它当时只支持英文,还没有英文字幕和翻译。当时听力水平不太好的我选择了 LiveCaptions-Translator 解决了问题,这款软件基于 Windows 原生实时字幕 + 大模型 API 解决了问题。

本以为就这么过去了,没想到最近我的主要环境来到了 macOS,还要开始上一门外方教授的直播课程。上述的软件依赖的是 Windows 的功能所以并不能在 Mac 上使用。macOS 诚然也提供了实时字幕功能,市面上也确实有几个同类的项目,但都在某个地方卡住了我:

所以调研了一番后,我开始了又一次的 Vibe Coding 造轮子:用 macOS 原生 API 音频旁路功能 + 火山引擎同传大模型,做了这个 macOS 原生双语字幕软件 —— SwiftVolcCaption。

长什么样

菜单栏一个小气泡图标,点开就是全部功能。正在识别的时候图标会变成实心的,一眼能看出状态。

菜单栏入口

字幕窗浮在最上层,压得住全屏视频。可以随手拖到你顺眼的位置,拖过之后它会记住,下次打开还在那儿。点它也不会把你正在看的视频切到后台去。

想开想关,⌃⌥S 一下就行,不用去找菜单。

样式这块我花的时间比预想的多。因为字幕这东西,要压在花花绿绿的画面上还能看清,本身就挺挑的——白底上的白字、深色场景里的黑边,都得照顾到。所以字体、字号、颜色、描边、阴影、背景框、宽度、显示几行,基本上都做成了可调,也内置了几套预设,懒得调的时候直接用。

字幕样式设置与实时预览

设置面板顶部有实时预览,底色我特意做成了从黑到白的渐变。只在一种底色上预览,其实是自欺欺人。

哦对,它还可以只抓某一个 App 的声音。

这个功能比我一开始以为的重要得多。抓「全部系统声音」的话,微信提示音、后台音乐、系统通知,全都会被翻译成字幕糊在屏幕上。你正看着评测,突然蹦出来一句「你好,在吗」——属实有点惊悚。

按 App 选择音频捕获来源

字幕还能导出成 srt,带时间轴,直接拖进播放器就能用。看完想回头找某一句的时候挺方便的。

有几件事得先说清楚

不是万能的,有些事情你下载之前就该知道,免得装完发现不是那么回事。

感谢

这东西能跑起来,主要是因为站在了几个很好的项目肩膀上。

苹果在 macOS 14.2 加的 CoreAudio Process Tap,是这一切的前提——没有它,就还是只能回去装虚拟声卡。这套 API 的文档写得相当克制(客气的说法),好在 insidegui 的 AudioCap 提供了一份能跑通的示例代码,帮我省下了大量摸黑的时间。

火山引擎的同声传译模型承担了最难的那部分:一条流里同时给出原文和译文,断句和静音检测也都在服务端做好了,客户端几乎不用操心。

swift-protobuf 让协议那层没有变成体力活。

每一个单拿出来都比我这个项目重要得多,我做的只是把它们串起来,补上中间那一段。真诚感谢。

最后

这不是什么大工程,起因真的就是不想再为了看懂一段视频,去改整台电脑的音频设置。

项目基于 MIT 协议开源,代码和使用说明都在 GitHub:

🔗 GitHub 仓库地址:https://github.com/aronnaxlin/SwiftVolcCaption

如果它正好戳中了你,欢迎去点个 Star。有 Bug 或者想加什么功能,随时提 Issue。

折腾的快乐,大抵如此。