前段时间在 V2EX 看到有人推荐 Typeless,说是个特别好用的 macOS 语音输入工具。我下载试了一下,确实不错 —— 按住快捷键说话,文字直接进输入框,比微信语音输入不知道高到哪里去了。
但一看价格:十几刀一个月。
作为一个天天写代码的,这个费用说贵不贵,但总觉得有点亏。毕竟语音输入这东西本质上就是调个 API,Gemini、通义千问这些平台都送大量免费 token,一年一千多块的订阅费够我买多少杯咖啡了。
然后我又试了微信语音输入法。免费是免费,但体验真的是一言难尽。识别率一般,专有名词经常错,而且那个交互逻辑怎么看怎么别扭。用了两天就卸载了。
那时候我就想,有没有既好用又不要钱的方案?(后来才知道这种开源工具只需要自己配个 API Key,各大平台送的免费额度根本用不完)
在 GitHub 上发现了个宝贝
周末刷 GitHub 的时候,偶然发现了一个叫 SpeakMore 的项目。看介绍是个 macOS 语音输入工具,开源免费,才几十个 Star。
本来没抱太大期望,这种小众工具一般要么很难用,要么作者半途而废。但看 README 写得挺认真,就下载试了一下。
没想到,这一试居然停不下来了。
作者居然只花了两天
看项目的 commit 记录,作者从第一行代码到能用的版本,差不多就是两个周末的事。
我一开始还不太信,后来仔细看了下代码,发现确实是趁着多模态大模型的东风。现在的 Gemini、通义千问这些模型都支持音频 + 文本直接输入,语音转文字这个功能,本质上就是录个音丢给模型,然后把返回的文字塞到光标处。
没什么复杂的算法,主要是工程上的细节处理。
但正是这些细节,决定了用起来顺不顺手。
多模态 + 上下文的思路挺妙
单纯把语音转成文字,Whisper 或者各家云服务的 ASR 都能做。但这个作者做了一件更聪明的事:把提示词和音频一起丢给多模态大模型。
具体来说,他在转写的时候会给模型提供三层上下文:
- 长期记忆:你过去一周都在聊什么话题、用什么术语
- 短期记忆:最近一小时的对话内容和用词习惯
- 工作区上下文:你现在在哪个应用、哪个文档里
三层信息动态更新,效果出奇地好。
比如我在 VS Code 里写一个 Kubernetes 的配置文件,说到 "部署一个新的 deployment",它能根据当前文件的上下文,准确地输出 "Deployment" 而不是 "部署" 或者其他什么奇怪的东西。
反过来,如果我在微信里跟朋友说 "我部署了一个新的应用",它就不会强行给我转成 "我 Deployment 了一个新的应用"。
这种对场景的理解,纯 ASR 是做不到的。
包体积小到离谱
因为所有的语音模型都在云端,本地只需要处理录音和网络请求,所以安装包极小:
- 下载不到 3MB
- 安装完占用约 6MB
对比那些动辄几百 MB 的本地 Whisper 方案,简直是两个世界。而且运行时几乎不占 CPU,风扇不会狂转,笔记本续航也不受影响。
关于模型选择
默认接的是阿里云的 Omni 模型,国内访问速度快,稳定性也不错。但作者也在文档里说了,指令遵循能力还是 Gemini 更强一些,特别是对复杂提示词的理解。
只是 Gemini 在国内访问有点慢,偶尔还会抽风。所以代码里留了配置入口,可以自己选。
作者也提到了,字节豆包和其他几家目前好像还没有支持 "文本 + 音频" 多模态输入的通用大模型。如果后续有合适的,他说可以随时加上。
我现在怎么用
每天大概用一个多小时吧。主要是写文档、回邮件、或者在 IM 里发长消息的时候用。
按住 Fn 键说话,松手等一两秒,文字就出现在光标处了。如果识别不对,马上再按一次重新说,比打字快多了。
特别是那些"差不多就行"的场景,比如回个 "收到,我下午看一下" 这种,语音输入比敲键盘自然得多。
开源的好处
代码全在 GitHub 上,MIT 协议,随便用。
我翻了下源码,结构挺清晰的:
- 音频处理用的 AVAudioEngine,16kHz 采样率单声道,录成 WAV 转 Base64
- 文本插入做了三层 fallback:Accessibility API → 模拟键盘 → 剪贴板粘贴
- 上下文管理存在本地 SQLite,每天跑一次总结脚本更新
- 敏感信息(手机号、身份证号、API Key 之类的)在存本地之前会做脱敏处理
作者自己也说,这东西本身没啥技术壁垒,就是几个 API 的调用加上一些工程细节。开源出来主要是觉得有人可能有同样的需求,大家可以一起改。而且现在各家 AI 平台都送免费 token,用户基本不需要额外花钱。
局限
- 只支持 macOS 14.0+(用了一些新 API)
- 必须联网(云端模型,没办法)
- 需要自己准备 API Key(但各大平台都赠送大量免费 token,日常使用基本不花钱)
Windows 版本?短期内不会有,作者对 Windows 开发不熟悉,也没这个需求。但他说欢迎有人 port 一个,可以提 PR。
最后
如果你也在用 Typeless 或者其他付费的语音输入工具,可以试试看这个。省下的订阅费够喝很多杯咖啡了。
有问题提 Issue,有想法提 PR。我已经给作者点了个 Star,顺手还提了个小 bug,作者修得挺快。
好东西值得被更多人知道。 ☕️