01
会议和通话
Zoom、Google Meet、Teams、Slack 哈德尔通话、浏览器标签页里的通话:说到底都只是从某个 app 里出来的音频,所以全都能配上字幕。是不是第二语言都一样,只要口音陌生、有人的麦克风不好,或者两个人同时开口,它立刻就值回票价:读一个只听到一半的词,比开口再问一遍快,而且不用打断任何人。
私密 · 本机运行 · Apple Neural Engine
视频、通话、播客:一边播放一边转写,绘制成始终置顶的浮层。不上传,不录制,不写入磁盘。
上线周:$5 而不是 $9,截止 8 月 22 日 · 14 天退款
14 天退款,不问缘由
一次性 $9,包含日后所有更新 · macOS 14.2 或更高版本 · Apple Silicon
字幕无限量,想用多久用多久。不用买时长,不用注册账号,不用订阅。
切换 app,字幕还在:浮层位于所有窗口之上,并且让点击穿透过去。
点一下窗口就能把它切到前面。按住 ⇧ 拖动字幕就能挪动它们,和在 app 里一样。
把指针移到字幕上,字幕会在指针底下化开。按住 ⌥ 可以把最近几块重新叠回来。这两件事在这里的表现和 app 里完全一样。
Subtitles 能给你的 Mac 播放的任何音频配上字幕,因为它捕获的是 app 本身,而不是去对接某一项服务。无论你是聋人或听障者、在用第二语言听,还是只是待在一个吵闹的地方工作,有三种情况会一再出现。
01
Zoom、Google Meet、Teams、Slack 哈德尔通话、浏览器标签页里的通话:说到底都只是从某个 app 里出来的音频,所以全都能配上字幕。是不是第二语言都一样,只要口音陌生、有人的麦克风不好,或者两个人同时开口,它立刻就值回票价:读一个只听到一半的词,比开口再问一遍快,而且不用打断任何人。
02
音频不会等人。你切到备忘录、编辑器或者浏览器窗口的那一刻,就开始跟丢对话了。浮层始终在所有窗口之上,而且点击穿透,所以你在它前面干活时它就待在原地。你可以记笔记、查东西,同时还跟得上别人在说什么。像 Granola 这样的记事工具是在事后把会议写成纪要;而这一半的事,必须在会议还开着的时候完成。
03
一个没有字幕的视频,或者自动字幕烂到不如没有。一档播客,用的是你还在学的语言。一节录播或者直播的课、一场访谈、一部对白很轻的电影。字幕会出现在正在播放它的那个窗口上方,字号由你定,支持九种语言,语种自动帮你认出来。
这三种情况有一个共同点:一场会议、一通电话、一段私人录音,都不关服务器的事。这些音频都不会被上传,因为根本没必要:模型就跑在你的 Mac 上。
实时音频没法暂停,没法重来,也不该被送出你的机器。这里的一切都是从这一点推出来的。
它在本地离线运行:没有网络请求,没有账号,没有遥测。音频从 process tap 直接进入识别器,然后被丢弃。唯一下载过的东西只有模型本身,而且只下一次。
实时率约 0.15:每一秒算力转写六秒语音。同一个模型放在 CPU 上,实测慢了大约 100×,根本跟不上实时的音频流。
在菜单栏里选一个音源,它就会捕获那个 app 以及它派生的每一个辅助进程。浏览器和 Electron app 之所以也能用,靠的正是这一点:它们的音频从来不来自主进程。
识别器前面有一个人声检测器,伴奏永远到不了它那里。没有它,音乐会把模型的上下文塞满,音乐之后的头几个词就丢了。
可以选择在换人说话时另起一块字幕,就像遇到停顿时那样。默认关闭:它需要在第一个模型旁边再跑一个模型。
默认模型会自己判断语种。英语另外还有七个专用 checkpoint,从 160 ms 起,在延迟和准确率之间取舍。
一样东西压在所有窗口上面,只有在它从不变成你要绕开的那样东西时才成立。它不接收点击,会在你指的位置化开,还能把你刚才移开视线的那一行还给你。
把指针靠近字幕块,它就会在指针底下淡开,于是你正在读的句子永远不会盖住你正在写的句子。淡掉多少、这个洞能铺多宽,都由你定。想让它保持不透明,按住 ⇧。
字幕块像电视字幕那样一页页翻:填满、清空、重新开始,所以你一移开视线,那一行就没了。按住 ⌥,最近结束的几块会重新叠到正在进行的那一块上面,最多三十块,更早的可以往回滚。松开手,它们又都不在了。什么都不会被写到任何地方。
在菜单里按 ⌘, 打开设置:一块字幕填满几行才清空、它有多实、指针底下的淡开能铺多远、⌥ 能回溯多久。每一个滑块都会在你拖动的同时作用到浮层上,所以这些东西是看着调的,而不是挑一个数字。
一个只负责复制的实时音频线程,一个从不转写的可移植内核,还有一个跑在它该跑的地方的模型。
48 kHz 立体声,每 10.7 ms 一次回调。实时线程把数据复制进一个无锁环形缓冲区,别的什么都不做。
在工作线程上降到 16 kHz 单声道,跳过静音,并在语音之前多回放大约一秒,这样没有哪个词是冷启动开头的。
这是流式模型,不是 30 秒窗口的那种:区别就在于字幕是跟着音频走,还是晚好几秒才到。
三行一屏,像电视字幕那样清空再重来,在最后一次出现新文字的四秒后淡出,而不是在音频停下之后。
从环形缓冲区到模型边界之间的所有东西,都是可移植的 Rust,而且刻意不做转写:它只负责递出音频帧。process tap 和浮层是仅有的两个 Mac 专属部分。
14 天退款,不问缘由。
你之所以能把它对着一场工作通话用,是因为它不是一项服务。没有服务器,没有账号,没有转写文本,所以没有东西要发出去,中间也没有别人。源码是公开的,所以这些都不用你凭信任接受。
语言是第一个决定某个模型能不能用的因素,所以它是菜单的第一层。在同一个语言包里切换是即时的;跨语言包切换会去取另一个包,同时保留你已经有的那个。
下到一半改主意,它会取消并立刻开始下新的。以后再切回来,它会接着下,而不是从头开始。
没有 Dock 图标,也没有窗口要管理。图标本身就说明了它在做什么:正在听是靛蓝色,正在下载模型是蓝色,流水线开始跟不上是黄色,永远不会是红色,因为红色代表正在录制,而这里什么都不会被写到任何地方。开关都留在菜单里,在菜单里按 ⌘, 会打开一个设置窗口,里面是这些开关背后的旋钮。
macOS 自带字幕功能,免费,每台 Apple Silicon Mac 上都有,在系统设置 › 辅助功能 › 实时字幕里。如果它够用,那就用它。下面这些是它不再够用的地方;想看长版本的话,还有一份逐行对比。
上线周:$5 而不是 $9,截止 8 月 22 日 · 14 天退款
14 天退款,不问缘由
一次性 $9,包含日后所有更新 · macOS 14.2 或更高版本 · Apple Silicon
无限量实时字幕,只要这台 Mac 还在你手上。不用买时长,不用注册账号,不用订阅。