每一位查看过付费语音输入应用的开发者都曾有过相同的念头,而这个念头是正确的:困难的部分已经开源且免费。openai/whisper 是 MIT 授权的。ggml-org/whisper.cpp 也是如此,其 README 中称其为“纯 C/C++ 实现,无依赖项”以及“苹果硅芯片的首选方案——通过 ARM NEON、Accelerate 框架、Metal 和 Core ML 优化”。两者均在 2026 年 9 月 4 日进行了验证。你今晚就可以在你的 Mac 上免费转写一个文件。
因此,本页并不主张你无法构建它。你可以。本页讨论的是在语音识别功能实现后,剩下的部分是什么,因为这部分才是整个产品,而这个比较的诚实版本是一个周末与 19 美元的对比。
正确表述的免费内容
命令行确实非常简单。 whisper README 中的示例是 whisper audio.flac audio.mp3 audio.wav --model turbo,并添加 --language Japanese --task translate 就可以得到日语音频的英文翻译。这是一行代码实现的大量功能。
你选择权衡方式。 README 提供了模型大小与近似内存和相对速度的表格,因此你可以选择适合你机器的那一点,而不是接受别人的默认设置。这个应用会为你做出选择,且不会暴露这个选择。
它不限于语音输入。 命令行可以转写两小时的采访录音、播客、去年三月的语音备忘录。它会输出时间戳和字幕格式。这个应用却不会做这些:它实时语音输入,且没有打开已有音频文件的方法。如果你转写已有录音是你的需求之一,可以查看 MacWhisper,它是为此而构建的。
它可以在任何地方运行。 whisper.cpp 的 README 列出了 macOS(Intel 和 Arm)、Linux、Windows、iOS、Android、WebAssembly、Raspberry Pi 和 Docker。我们只提供 macOS 13 或更高版本,其他不支持。
没有任何续订,也没有人能更改条款。 MIT 就是 MIT。这是一个真实的论点,也是本页中 DIY 方面最强的论点。
两个项目都在持续开发中。 whisper.cpp 最近的版本是 v1.9.3,发布于 2026 年 8 月 20 日;openai/whisper 最近的标签是 v20250625,发布于 2025 年 6 月 26 日,其仓库最近一次提交是 2026 年 8 月 31 日。请自行检查两者,它们都在持续更新。
现在构建剩下的 90%
以下是介于“转写功能正常运作”和“我每天不假思索地语音输入六十次”之间的关键点。这些都不是假设性的内容,而是任何正常运作的语音输入工具都必须解决的问题。
绑定一个快捷键并在按住时进行录音。 不是按下开始、松开停止的方式,这样会完全失去人体工学优势 —— 按住。某个东西必须全局拥有这个绑定,而在 Mac 上这意味着一个事件监听器和相关的可访问性权限。 Hammerspoon 通常是答案,它采用 MIT 许可证,1.1.1 版本发布于 2026 年 2 月 26 日,是一个非常好的选择。
以正确的采样率捕获音频并干净地停止。 在按键按下时启动录音器,在按键释放时停止录音器,并处理按键释放前录音器尚未启动的情况,这在大多数语音输入中不到一秒。
不要每次按下都支付启动成本。 每次按键都加载模型是工具被使用和被放弃之间的区别。必须有某个东西保持常驻,这意味着你现在要编写一个守护进程而不是脚本,这带来了重启、日志记录和发现它悄然崩溃等所有隐含问题。
将文本输入到你正在使用的应用程序中。 这是大家普遍低估的部分。在 macOS 上有两种机制,但都不适用于所有情况,而回退机制涉及剪贴板 —— 这意味着你现在要负责在粘贴后恢复剪贴板中的内容,并处理你的粘贴和应用程序读取之间的竞争关系。
知道你正在使用哪个应用程序。 在转录文本存在时,已经过去了两到三秒,此时前台窗口可能已经不是你说话时的窗口。一个通知、一个构建完成、一条聊天消息抢走了焦点。如果在最后才决定目标,你最终会把一句私密的话粘贴到错误的窗口中,而这只需要发生一次。
在说话时显示一些反馈。 没有反馈,你无法区分麦克风是静音还是沉默,而你将在四十秒的语音输入后才意识到这一点。
保留转写文本。 它应该存放在某个可搜索的地方,这样一次粘贴错误只是可以恢复的烦恼,而不是丢失的段落。
保持其正常运作。 这是隐形的条目。一次 macOS 更新会改变一个权限提示;一次 Python 版本的更新会移动位置并导致环境损坏;一个依赖项停止为你的平台发布轮子。whisper 的 README 已经提到需要 Rust “如果 tiktoken 没有为你的平台提供预编译的轮子”,这正是这条路线给你带来的周二早晨。
对比表格
| Coii VoiceInput | 一个 Whisper 脚本 | |
|---|---|---|
| 许可费用 | 一次性 $19 | 免费,MIT |
| 安装设置 | 安装,授予权限 | 最好是一个下午 |
| 运行平台 | macOS 13+ | 几乎任何平台 |
| 转录现有音频文件 | 否 | 是 |
| 翻译任务 | 否 | 是 |
| 时间戳和字幕输出 | 否 | 是 |
| 自定义模型权衡 | 否 | 是 |
| 按住说话(push-to-talk) | 是,开箱即用 | 你自行构建 |
| 按键按下时固定目标应用 | 是 | 你自行构建 |
| 插入后恢复剪贴板 | 是 | 你自行构建 |
| 引擎运行前保存转录 | 是 | 你自行构建 |
| 可搜索的本地历史记录 | 是 | 你自行构建 |
| 说话时的实时音量表 | 是 | 你自行构建 |
| 抵抗系统更新 | 我们的问题 | 你的周六 |
| 无数据上传 | 是 | 是,如果你保持本地 |
脚本有六项明显的优势,而第一项是免费的。我们这边的一切都是管道(plumbing) —— 一旦识别器成为商品,语音输入工具就是管道。
不仅仅是便利的两行
列表中的大部分内容是你能够完成的工作。其中两行是设计决定,而不是功能,而且它们是晚上写脚本时通常不会考虑的内容。
第一点是操作顺序。
- 1Key downthe target is chosen here
- 2You speaklevel meter, over your work
- 3Key up
- 4Written to historybefore the engine is asked
- 5Engineon your Mac
- 6Typedabout half a second
一个先转写再输入的脚本,有一个无法恢复的失败模式:转写成功了,但插入失败,而且没有任何东西保留一份副本。你说了这句话,它却无处可去,你必须重新构建它。反过来操作意味着在执行有风险的部分之前,先写入持久化存储,这是一个你必须在第一天就主动做出的决定,因为后期进行修改意味着要重新调整所有内容。
第二点是目标选择的时机。在按键时决定目标意味着文本会落在你说话时的位置,不管窗口管理器在中间做了什么。在插入时决定目标——这是脚本在没有人考虑的情况下会做的事情——意味着文本会落在你三秒后所注视的位置。
这两点都不难。它们直到真正重要的一天才会显现出来,而这正是它们被忽略的原因。
两周真实使用体验的样貌
- 08:414.6sRebased onto main, the conflict was only in the lockfile so nothing to review there.Slack
- 09:5812.3sThe caching layer assumes one writer, which held until the batch importer landed, and that is the whole of the bug.Linear
- 11:263.9sbrew install ffmpeg then rerun the build scriptTerminal
- 13:147.1sHappy with the direction — can we see the version where the sidebar collapses instead?Mail
- 15:475.8sReminder to myself, delete the feature flag once the rollout hits a hundred percent.Notes
数一数这些行。这只是一个轻松的一天,而每一行都是一个时刻,此时的问题不是“模型有多好”,而是“它是否落在了正确的位置,剪贴板之后是否还是我的,如果没有记录它是否被保存”。识别器的质量是基本要求,而且是免费的。这个类别中工具之间的差异完全取决于其他因素。
在构建时才是正确的选择
这不是一篇说“没人应该做”的页面。如果以下任何一点成立,就去构建它。
你想要理解它。 没有比自己编写事件监听器更好的替代品,而且之后你对这个类别中的每一个工具都会做出更明智的决定。
你需要我们不提供的某些东西。 一种不同的语言混合、一个特定的模型、一个文件夹的批量转写、一种没人售卖的输出格式、一个连接到其他系统的管道。脚本没有观点,而我们有好几种。
你不在使用 Mac。 那么这并不是一个比较,而是你唯一的选择——尽管如果你在使用 Mac 并希望语音驱动机器,而不是仅仅通过键盘输入, Talon 是一个已经存在的成熟系统,而且可以免费下载。
你喜欢它。 真正最好的理由。一个你构建并理解的工具,对你而言比你购买的工具更有价值,而且维护它是一种爱好,而不是一种税。
如果以上都不成立——如果你想要的是按下按键,让文字出现,从今天下午开始——那么周末不是投资,而是代价,而且代价比 19 美元更高。
云端快捷键,以及为何它属于不同的领域
人们还有一条第三条路可走:跳过本地模型,从脚本中调用一个云端的转写 API。这比安装更简单,而且准确性问题也不存在了。
它还改变了你正在构建的产品。OpenAI 自己的 file transcription guide 文档中描述了一个上传端点,并且有 25 MB 的文件限制——你是在将音频发送到服务器,这意味着每使用一次都有成本,依赖网络,而且你必须自己回答一些关于数据保留的问题,而不是阅读别人的隐私页面。
对于输入一个可能完全没问题的提交信息来说,这或许可以接受。但对于在 NDA 下输入任何内容,这正是整个本地类别存在的目的,也是值得有意为之,而不是因为这是脚本中最短的路径。
维护记录
在开始之前没人能预估的数字,所以值得写下来。
一个手动搭建的语音输入设置有四个独立更新的部分:语音识别引擎、它所需的运行环境、绑定你的快捷键的工具,以及macOS。它们各自单独运行时都正常。问题出现在它们的连接处,而且总是在最糟糕的时刻出现——不是“我有空的晚上”,而是“在会议前我正在语音输入回复的早晨”。
这些问题有其特定的表现形式。macOS的更新可能会重置一个辅助功能权限,导致快捷键不再起作用,而你却不知道原因。Python版本在环境之下发生变化,依赖项就无法解析。模型文件在重新安装后会出现在其他位置。你原本编写以避免每次按下都启动的常驻进程在星期四悄然终止,而你是在星期一才注意到。
这些问题都不难解决。每个问题大约需要二十分钟,每年发生几次,但真正的问题不是这二十分钟,而是你的语音输入工具以你无法预测的方式不可靠,这是让你无法信任它的特性,也是让你无法使用它的原因。一个你每天要使用六十次的工具,只有在它毫无吸引力时才值得拥有。
与19美元相比,这并不是关于金钱的计算。这是关于谁拥有周六的。
实际准确度取决于什么
这是一条适用于本页两方面的提示,因为这是整个类别中最常见的错误。
构建DIY版本的人往往将精力花在模型选择上——选择哪个尺寸、哪个量化版本、哪个分支。这正是可扩展性最小的轴。在中等尺寸模型和大模型之间,对于清晰的语音输入到一个不错的麦克风,普通文本的差异小到你无法在不测量的情况下察觉。
你真正会注意到的是:一个笔记本电脑麦克风在有其他人说话的房间里、风扇运行时、以及句子结尾习惯性拖长音。解决这些问题的成本比本页上任何一种选择都低,而且能同时改善两者。如果你打算在花一个周末之前花钱,那就把钱花在麦克风上。
比模型更重要的第二件事是,在词语存在后的两秒内发生的事情——路由、回退、剪贴板、保存的副本。这正是本页一直在讨论的部分,也是基准测试从不测量的部分。
我们实际上在卖什么
不是语音识别引擎。引擎是这个产品的通用部分,正如它也是你脚本的通用部分,假装它不是的话,对本页的读者来说就是透明的胡说八道。
19美元买的是这些决策:一个在按住时能工作的快捷键、快捷键按下时锁定的目标、通过辅助功能路径插入并以粘贴作为回退,之后将你的剪贴板恢复、在引擎被咨询之前就写下的转写文本、可搜索的本地历史记录、一个带有音量表的标签,让你能看见自己是否被听到,以及当macOS 27在所有这些之下发生改变时,修复它是我们每天的例行工作,而不是你的。
没有任何内容被上传——没有音频,也没有转写文本。模型权重会从公共模型主机一次性获取,之后即使网络关闭也能正常运行。价格是19美元,适用于三台Mac,包含更新,且不会续费。试用期是整个应用的三十天,无需信用卡,无需账户,这是诚实进行比较的方式:编写你的脚本,将试用期与它并行运行,然后看看你会选择哪一个。
如果你选择构建,就按照这个顺序构建
给那些无论如何都会去做的朋友们的免费建议,这样昂贵的发现会尽早发生,而不是在第三周才发生。
在做任何其他事情之前,先让本地进程正常运行,这样你就能测量真实的延迟,而不是模型加载时间。然后在按键时决定你的目标,并坚持到底,因为后期改造意味着要重写路由。然后在尝试插入之前,先将转写文本写入文件。然后进行插入操作,同时保存和恢复剪贴板,并在你最不美观的应用程序中测试——比如终端、Electron 应用或网页表单——而不是在 TextEdit 中,因为 TextEdit 可以与任何内容配合使用。
最后再做视觉反馈。它看起来像是装饰性的,但实际上使工具变得可用,所以将其留到最后,能让你真实地看到整个项目到底有多复杂。
如果你宁愿购买而不是构建,但不想从我们这里购买
理解,这个类别并不缺乏选择。 superwhisper 是一个以本地优先的 Mac 应用,功能更全面, MacWhisper 是一个如果你认为转录文件的重要性不亚于语音输入,那么应该查看的应用, Murmur 是一个如果你想要别人写的脚本而不是自己编写脚本,那么可以使用的免费开源应用,而 VoiceInk 是一个在同一领域的更大规模的付费 Mac 应用。如果你想要的是一个不仅转录你的话语,还能理解你话语的模型, 这完全是另一类工具。