PushSense 的起点,是一个价格标签。
我打字很多,而且说话比打字快,所以听写本该是个轻松的选择。但当我真去挑一个听写 App 时,发现像样的产品全是订阅制——大约每月 10 到 15 美元,一年 100 多,永远交下去。这不是在买软件,是在租用「把自己的声音变成文字」这件事,而且每说一句话,音频都要在别人的服务器上走一个来回。
这种「贵」和银行账户关系不大。订阅意味着哪天停止付费,工具当天就失效;云端意味着我口述的每一个半成品念头——邮件、笔记、半夜嘟囔的想法——都落在我控制不了的基础设施上。它之所以能按月收费,恰恰因为你的声音必须持续流经那套设施。
而我有一个越来越强的怀疑:他们卖给我的这件事,其实早就不需要数据中心了。
订阅费到底在买什么
语音识别曾经确实离不开云。模型太大,算力太专用,你的设备跑不动。但这个时代悄悄结束了:OpenAI 开放了 Whisper 的权重;Georgi Gerganov 的 whisper.cpp 让它借 Metal 原生跑在 Apple Silicon 上;而最近几年的每一台 Mac,M 系列芯片里都有一块大部分时间闲着的 GPU。
于是我开始研究本地转录到底能做到什么程度——用我自己的机器、我自己的声音。三件事出乎意料:
- 模型很小。PushSense 现在推荐的模型只有 181 MB——比很多 Electron 应用的 node_modules 还小。后来我拿它和九倍大的模型实测对比,对我的真实语音,转写结果逐字相同。
- 本地更快。27.7 秒的语音,M 系列 GPU 大约一秒转完。云服务在物理上赢不了这个数字——我的句子得先跑到弗吉尼亚再跑回来,才能变成文字。
- 难的不是识别本身。难的是识别周围的一切——这也正是订阅制存在的理由。下面细说。
没有一家订阅解决的问题
真正让我下决心的是这个。我说话中英文混着来——「这个 feature 的 latency 有点高」对我是一句再正常不过的话。我试过的每一个听写工具都只认一种语言,把另一种搅成乱码。如果有谁能做好这件事,我是愿意付订阅费的。没有一家配得上。
结果发现,Whisper 天生就能处理中英混说。不是完美——哪里会翻车我写过——但足以让「按住按键、两种语言随便说、松开」直接可用。我花钱买不到的功能,就躺在一个开放权重的模型里,免费。
那就自己做一个
第一版是 Electron,因为那是最快跑通的路。它能用——但为了一个模型比 App 本体还小的任务,装了 200 MB 的壳。这件事别扭到让我用原生 Swift 重写了一遍:成品安装后 5.5 MB,一个菜单栏应用,管着一个快捷键、一个麦克风、一个 Metal 加速的模型。
按住右 Option,开口说——哪种语言都行,混着也行——松开。文字直接打进你本来就聚焦着的输入框。没有任何东西被上传,因为根本没有可以上传的地方。
「太贵了」的真正含义
钱只是表层。一年 100 美元是真金白银,五年就是 500 多——而这件事一个 181 MB 的文件在本地就能干。但订阅制更深的成本是结构性的:
- 房租永远交不完。停止付费,工具消失。本地运行的软件,在公司倒掉的那天照常工作。
- 你的声音是产品的燃料。云端听写在架构上就是一条「你的语音流经他们服务器」的管道。隐私政策是承诺,架构才是事实。
- 延迟是物理。再多订阅收入也不能让「往返数据中心」快过一块已经在你腿上的 GPU。
PushSense 免费下载。它不收费,按月也不按年——因为研究做完之后,事情已经很清楚:没剩下什么值得收费的了。模型是开放的,算力是你自己的,中间那段工程,本来就是我最享受的部分。
我最初并不是要为「本地优先」发表什么宣言。我只是想躲开一笔订阅费,认真看了看订阅费买的到底是什么,然后发现其中大部分早就是免费的了。