我做了一个 MacOS 语音输入工具,聊聊为什么市面上的方案都不太适合我。
去年 3 月,一个同事戴着 Vision Pro,套着口罩,用语音输入在写代码。当时觉得挺极客的,但没觉得跟我有什么关系。虽然更早就有在手机中用过语音输入法,但内容创作不多,也就没啥感觉。
转折发生在 AI 写代码的比例越来越高之后。
一开始是协同开发,我写一部分,AI 写一部分。后来变成我负责整体逻辑和需求描述,AI 负责实现。听起来轻松了,但我发现每天要打的字反而暴增——给 AI 的指令、上下文描述、需求拆解、Code Review 的反馈,全是大段大段的文字输入。手开始累了。
于是开始找语音输入工具。
试了一圈,各有各的问题
Mac 自带听写——能用,但不好用。专业术语基本得改,中英混输更是灾难。
Typeless——这是我用的第一个第三方工具。免费版每周 4000 字,勉强够用一两天。但我的办公环境特别吵,识别经常不准,加上订阅价格不便宜,一直没买。
闪电说——极客向产品,用的是阿里 SenseVoice Small 模型(800MB)。功能很强,但需要自己配置 API Key、提示词、Agent 调用、文本逆正则化……门槛太高了。而且用它的人本身就有技术能力,对产品的容错极低——你做得不够好,人家自己就能实现一个。
智谱 AutoGLM——积分制后来免费,体验还行。但智谱本质上是模型厂商,这个应用是用来验证自家模型能力的,不会投入太多资源做产品体验,也不可能接入其他厂商更好的 ASR 模型。豆包、通义听悟也是一样的逻辑。
微信输入法——免费,但它以输入法形态存在,我不太习惯。
Cursor / Claude Code 自带语音——只能在自己的应用内使用,不能跨 App。
中间还切着用了好几个,积分不够就换一个继续。但始终没有一个让我满意的。
三类产品,三种局限
研究了一圈之后,我发现市面上的语音输入工具大概分三类:
第一类:纯 C 端产品(代表:Typeless)
选用市面上最好的 ASR 模型,面向所有人提供服务。优势是体验打磨得好,劣势是很难做行业定制——C 端用户和 B 端用户对文本的需求天然不同,很难在一个产品里兼顾。
第二类:极客工具(代表:闪电说)
把所有选项都暴露给用户:选哪个 ASR 引擎、配什么 API Key、设什么提示词。省了平台的成本,但代价是用户门槛极高。选哪个 ASR 好用、哪个便宜、哪个场景用哪个——这些决策全抛给了用户。
第三类:模型厂商的附属产品(代表:智谱、豆包、通义)
大厂做的语音输入应用,本质目的是推广自家模型。它们不会接入竞品的 ASR,哪怕竞品在某个场景下更准。产品只是模型能力的展示窗口,不是独立的体验闭环。
这三类都有各自的天花板。而我想做的事情刚好在它们的缝隙里:帮用户选最好的模型、预置专业热词、不需要任何配置,打开就能用。
为什么自动提取热词是伪命题
很多产品号称能从你的使用习惯中自动学习热词。听起来很智能,但有一个逻辑悖论:
如果你对一个项目名称或人名,语音识别每次都说错,而你从不去纠正它,毕竟有时候影响不大,语音输入就图个快,那"自动提取"学到的就是那个错误的词。
比如你每次说 "Claude Code",ASR 识别成 "cloud code",你懒得改就直接发了。自动学习系统会认为你就是要说 "cloud code"——结果热词越学越错。
所以我选了另一条路:根据行业和时间节点,主动预置热词。
比如 Claude Code 最近很火,我就提前把它加进开发者热词库。PLC 和 PLG 在不同上下文中含义完全不同,靠模型单独判断很容易出错,但如果你告诉 ASR "这个用户是程序员",大概率说的是 PLG。
这些热词不是从用户本地数据里挖出来的,而是我根据行业动态持续更新的。目的很简单:减少用户说完之后还要回头改的次数。 因为每改一次,语音输入的提效就打了一次折扣。
准确优先,不做过度润色
Typeless 有一个功能:当它识别到你在说列表第一点、第二点……会自动把输出格式化成结构化的 Markdown 列表。
这个功能看起来很聪明,但我想了很久,决定不做这么极致。
原因是:语音输入本质上是「快思考」——丹尼尔·卡尼曼在《思考,快与慢》里把人的思维分成快系统和慢系统,键盘输入是慢思考(你会斟酌用词、调整结构),而语音输入天然是快思考(脱口而出,不加修饰)。我们说出来的话本来就是非结构化的,这很正常。而语音输入的下游——无论是什么 AI Agent,往往自带智能。你把一段自然语言丢给 Claude,它自己就能结构化,而且比语音输入工具做得更好。
与其让语音输入工具去猜你想要什么格式,不如让它老老实实地把你说的话准确转成文字。格式化的事情,交给下游更合适。
所以 Xisper 的设计哲学很简单:快和准之间选准,准和润之间选准。 我的使用场景更多是对一个事物做中短描述,而不是下命令。说了三四分钟的话,我愿意多等一两秒来换更高的准确率。
一个小功能:多选合并复制
我的办公环境很吵,经常说一段就得停下来——有人过来问问题,或者旁边突然来了个会议。说完一段按暂停,处理完事情再继续。
问题是中间可能切到了别的应用,用语音输入回了条消息、写了段别的东西。等我想把之前那段话续上的时候,内容已经散落在好几条记录里了。
所以我做了一个多选合并的功能:在历史记录里勾选第 1、3、8、9 条,按时间顺序自动合并成一段完整的文本,一键复制。
这个功能很小,但在被频繁打断的工作环境里,用起来特别舒服。
顺便说一句,这篇文章本身就是我用 Xisper 断断续续说出来的——中间被打断了好几次,切出去干了别的事,最后用多选合并把散落的片段拼回了一篇完整的初稿。
Xisper 是什么
一个专业、精准的跨 App 语音输入工具。
Swift 原生开发,安装包不到 3MB,比一个网页还小。按 Fn 说话,松开就出文字,在任何 Mac 应用里都能用。
它不追求最快的响应速度,不追求花哨的 AI 润色,不追求覆盖所有场景。它只做一件事:让你说出来的专业内容,被准确地变成文字。
不需要配置 API Key,不需要知道市面上哪个 ASR 引擎最好,不需要操心什么时候出了新模型该不该换。这些事情我来做,你只需要说话。
我是一个独立开发者,Xisper 是我解决自己问题的过程中做出来的产品。如果你也被语音输入的准确性困扰过,欢迎试试,也欢迎告诉我你在什么行业、什么场景下使用——这会帮助我决定下一步优先做哪些行业的热词库。
夜雨聆风