跳到正文

Comparison

语音识别是免费的部分

每一位查看过付费语音输入应用的开发者都曾有过相同的念头,而这个念头是正确的:困难的部分已经开源且免费。openai/whisper 是 MIT 授权的。

· 约 23 分钟

本页目录(13)
  1. 正确表述的免费内容
  2. 现在构建剩下的 90%
  3. 对比表格
  4. 不仅仅是便利的两行
  5. 两周真实使用体验的样貌
  6. 在构建时才是正确的选择
  7. 云端快捷键,以及为何它属于不同的领域
  8. 维护记录
  9. 实际准确度取决于什么
  10. 我们实际上在卖什么
  11. 如果你选择构建,就按照这个顺序构建
  12. 如果你宁愿购买而不是构建,但不想从我们这里购买
  13. 相关阅读

每一位查看过付费语音输入应用的开发者都曾有过相同的念头,而这个念头是正确的:困难的部分已经开源且免费。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) —— 一旦识别器成为商品,语音输入工具就是管道。

不仅仅是便利的两行

列表中的大部分内容是你能够完成的工作。其中两行是设计决定,而不是功能,而且它们是晚上写脚本时通常不会考虑的内容。

第一点是操作顺序。

  1. 1Key downthe target is chosen here
  2. 2You speaklevel meter, over your work
  3. 3Key up
  4. 4Written to historybefore the engine is asked
  5. 5Engineon your Mac
  6. 6Typedabout half a second
转写文本会在引擎被询问之前到达你的历史记录中。将这两个步骤顺序调换,它们之间的崩溃会消耗一个段落,而不是复制粘贴。

一个先转写再输入的脚本,有一个无法恢复的失败模式:转写成功了,但插入失败,而且没有任何东西保留一份副本。你说了这句话,它却无处可去,你必须重新构建它。反过来操作意味着在执行有风险的部分之前,先写入持久化存储,这是一个你必须在第一天就主动做出的决定,因为后期进行修改意味着要重新调整所有内容。

第二点是目标选择的时机。在按键时决定目标意味着文本会落在你说话时的位置,不管窗口管理器在中间做了什么。在插入时决定目标——这是脚本在没有人考虑的情况下会做的事情——意味着文本会落在你三秒后所注视的位置。

这两点都不难。它们直到真正重要的一天才会显现出来,而这正是它们被忽略的原因。

两周真实使用体验的样貌

History5 of them, on your Mac
  • 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 应用。如果你想要的是一个不仅转录你的话语,还能理解你话语的模型, 这完全是另一类工具。

相关阅读

常见问题

我可以使用 Whisper CLI 创建语音输入快捷键吗?
可以,很多人已经这样做了。你需要绑定快捷键并按住录音的工具,CLI 来转写文件,以及将结果放入前台应用的工具。这三项都是实际的工作。
Whisper CLI 需要什么来运行?
它的 README 要求 Python 3.8 到 3.11,一个较新的 PyTorch,以及 ffmpeg 命令行工具。whisper.cpp 是一个无依赖的 C/C++ 实现,其 README 称其为 Apple Silicon 的首选方案。
Whisper 是免费的吗?
是的。openai/whisper 在 GitHub 上使用 MIT 许可证,ggml-org/whisper.cpp 也是如此。两者均在 2026 年 9 月 4 日检查过。DIY 的成本是你的时间,而不是许可证费用。
脚本不会给我什么?
识别器周围的部分:按键按下时固定的目标应用,恢复剪贴板的插入,引擎运行前保存的转写文本,可搜索的历史记录,以及系统更新后仍能正常工作的功能。
我应该还是去构建它吗?
如果你喜欢它,是的——你将理解自己的工具并能更改任何内容。构建它,使用两周,数一数它需要关注的早晨数量。这个数字就是实际的比较。
Coii VoiceInput 价格是多少?
一次性 $19,三台 Mac,包含更新,无需续费。先试用整个应用 30 天,无需信用卡和账户。macOS 13 Ventura 或更高版本,Apple Silicon 或 Intel。