Mac 语音输入专有名词识别错误怎么办:改一次就记住
macOS 听写没有词库,「语音控制」的词条是另一个功能。Apple 两条路的代价,以及 ListenIn 怎么在清稿阶段用个人词典修回 Claude Code,改一次就记住。
你对着 Mac 说「把这个 header 的高度往下调一点」,落下来的是「Ahader」。说「帮我把 Claude Code 那边的记忆导过来」,落下来的是「clocode」。手动改掉,明天同一个词还是错。Mac 听写确实加不了词,但错的那个词有别的地方可以修,而且修一次就够。
先分清:macOS 听写没有词库,「语音控制」的词条不是给它的
Apple 的《在 Mac 上听写信息和文稿》讲的是在「系统设置」→「键盘」→「听写」里打开它,以及去哪里查看你的语音是否「在设备上处理且未发送到 Siri 服务器」。查阅于 2026-09-18,整页没有一处讲加词:没有输入框,没有导入,没有「学会这个词」。
搜索结果里出现的「自定义词条」属于「语音控制」,论坛把两者混在一起。Apple 的《使用「语音控制」命令与 Mac 交互》写得明白:「语音控制」打开后,「标准 macOS 听写不可用」(查阅于 2026-09-18)。词条是「语音控制」的词条,Apple 的听写文档没有一句话说键盘触发的听写会去读它。
本文的系统设置名称照 Apple 简体中文文档写,繁体系统请对照你机器上的字样。
Apple 给的两条路,代价各是什么
第一条:用「语音控制」代替听写。 《在 Mac 上配合「语音控制」使用自定义词条》的步骤:「系统设置」→「辅助功能」→「语音控制」→「词条」,键入你希望输出的字词或短语,录一遍自己的读法,保存。可以「从每个词汇单行列出的文本文件导入」,也能导出(查阅于 2026-09-18)。能用,代价是它开着时替代听写,不是扩展听写:「语音控制」是给用语音操作整台 Mac 的辅助功能。
第二条:把名字加进通讯录。 Apple 的《Siri、听写与隐私》页写明,使用 Siri 和听写时设备可能会发送「联系人的姓名、昵称和关系」等信息,帮设备更好理解你、识别你说的话(查阅于 2026-09-18)。所以同事加进联系人,名字可能就对了。Apple 没有承诺这一点;就算有效,覆盖的也是人名,不是 kubectl、Supabase,或者你们项目的代号。
一句话:词加不进 Mac 听写,只能加进另一个功能。
为什么偏偏是专有名词和中文里的英文词
识别器把声音变成最可能的词序列,「最可能」正是罕见词输掉的地方。「Claude」和「clock」只差一个音,clock 常见,clock 赢。这是我们 2026-07-28 记录的一条真实误听。
中英混说更难:中文识别器在句子中间撞上一个英文词,得先判断这几个音是哪种语言,再挑词。下面是我们自己转写里的样本:
| 你说的 | 转写写的 |
|---|---|
| header | Ahader |
| toggle | talgo |
| Node.js | no js |
| Vercel | versal |
| Claude Code | clocode |
| 搭建 | 大件 |
最后一行来自我们语料里的一条真实转写:「我刚说搭建你理解成了大件」。中文同音、英文近音,机制一样:识别器听对了声音,写成了另一个更常见的词。
这也是修复的入口:近音替换可以事后修,前提是有东西知道你要说哪个词。
清稿阶段能修什么:词典是清稿的输入
ListenIn 不碰 Apple 的识别器。识别在本机完成,音频不离开 Mac;你能指望的修复在识别之后那一道文字处理,ListenIn 叫它清稿。清稿模型收到识别出的文字,加上你的词典,外加一条规则:只有转写里某个词明显是词典里某个词的误听,声音相近、语境合适,才改成它。走内置服务、自带 key 还是本地 Ollama,词典都跟着清稿请求走;每种模式发出什么、发到哪里,见什么会离开你的 Mac。
规则自带例子,也是边界:
- 声音是门。 词典里有 Vercel,「Next.js 加 Halloween 部署」里的 Halloween 照留:部署的语境换不来一次替换,声音必须对得上。
- 声音过了门,就大胆修。 词典里有 Ollama,「本地模型用 lama 跑」是 Ollama,少了一个音节而已。中文同音一样:词典里有「久期」,「九七风险」是「久期风险」;「短期」发音对不上,再合理也不换。
- 看着像真词的错词,输给它像的那个名字。 词典里有 Vercel,「First 那边 preview 环境自动就 deploy 了」是 Vercel:f 和 v 差一点口音,那个位置要的是平台名。词典里有 sync,「你帮我 think 一下进度」是 sync,修回英文词本身,不是「想」。
- 不同音的产品名不互换。 clocode 按声音是 Claude Code,写成 Cursor 是在替你编事实;找不到同音的真名,就原样留着乱码,你看得见就改得了。
- 漏掉的词不补。 识别器把词整个丢了,句子就在那里停下:「然后 deploy 到」到此为止。词典修的是一个在场的坏词,不供应一个不在场的词。管住去语气词不变成改写的,是同一条规则。
加词的位置:菜单栏点「词典」,或「设置」→「清稿」→「管理个人词典…」,到的是同一份列表,只存本机:把词填进「新词」输入框,回车,一次一个。窗口里写的是它该收什么——「常说的人名、术语、产品名」。只放你真会说的词:它是修复候选,不是拼写检查。Claude、Cursor、Figma、GitHub、SwiftUI、OAuth 这类常见开发词汇在内置技术词库里,不用你加;中英混说页面列了更多。
改一次就记住:纠错学习
手工维护词表撑不了多久。撑得住的是这个闭环:你在刚粘进去的文字里把词改对,ListenIn 从这次改动里学。
粘贴落地后,ListenIn 记住那个输入框,接下来约 180 秒里每 2.5 秒经 macOS 辅助功能重读一次,下次听写开始前再读一次,把粘进去的文字和框里现在的内容做 diff。终端和 Electron 应用(Claude Code、Cursor、VS Code)的辅助功能树常常晚一拍才就绪,粘贴那一刻读不到,1.5 秒后会再抓一次。
diff 出来的词对要过一道发音相似测试:gethub → GitHub、lama → Ollama、大件 → 搭建 留下;你顺手重写的一个从句两边毫无声音关系,丢掉。留下的每一对做两件事:右边进词典,屏幕上闪一句「已加入词典」;词对本身作为纠错记录存在本机,左边是识别器写的,右边是你要的。之后:
- 左边是拉丁字母拼出的非真词(gethub),清稿开始前就被确定性替换掉,没有模型参与。
- 左边是个真词(think 之于 sync),这个词对在你改过两次之后才随清稿请求发出,只限拉丁字母、每边不超过三个词,两者都适用时优先级高于词典。一次手滑不该变成规则。
同一个错词还留在别处时,ListenIn 会问要不要一并改掉:输入框能通过辅助功能写回的,按「全部替换」就地修;写不回去的(Electron 和浏览器里的输入框常见),按钮是「复制修正全文」,改好的全文进剪贴板,你粘贴覆盖一次。
限制:学习需要一个能读回来的输入框,有些 App 不暴露;词对每边最多 20 个字符;改动超过粘贴内容三成,一个词都不学。
词典跟着你走:导出导入,以及繁体用户的字形锁
词典和纠错记录是本机文件,ListenIn 没有账号系统,不会自己跟你到新 Mac。词典窗口的「备份」下,「导出…」把词和纠错记录写进一个 JSON 文件,「导入…」读进来。导入是合并,不删这台机器上已有的,也保留每条纠错的次数。注意清空听写历史会连纠错记录一起清掉。
港台用户还有一项:「设置」→「清稿」→「中文字形」,三档:「自动(跟随语音)」「锁定简体」「锁定繁体」。口述繁体就锁定繁体,清稿不会把「數據」在句子中间改成「数据」;拉丁字母不受这个锁影响,繁体句子里的 Claude Code 照旧。展开见繁体听写与字形锁定。
它做不到的:识别器本身没有被教
Apple 的引擎下个月仍会在原始转写里写 clocode。从菜单栏打开「听写记录」,点「显示原始转写」,看到的是没动过的原文。靠得住的仍然是清稿这一层。
没有清稿就没有修复。本周免费额度用完(见方案),或清稿服务连不上,原始转写照样落到光标处,气泡会标明:「本周额度用尽,已插入原文 · 升级 Pro 解除」或「清稿失败,已插入原文(检查网络或 Key)」。这份原文,词典不作用。
被整个丢掉的词、听成完全不像的词,修不了:没有匹配对象。挡住误换的那道门,同样挡住这类修复。
词典也不是风格指南。它把误听改成你的拼写,不展开缩写,不改写句子,不回答你口述的问题。真想让识别器本身变,Mac 上只有「语音控制」的词条,代价在前面。
往终端或 Claude Code 里口述的开发者,答案很短:照常用触发键听写,词错了在原地改一次,剩下的交给纠错学习。
在自己的 Mac 上试一下
免费档不用注册;音频不出本机。