Claude Code 语音不支持中文?改用全局听写

Claude Code /voice 文档列的 20 种听写语言里没有中文,音频也要上传。Mac 上把中英混说 prompt 口述进 Claude Code 的做法与代价。

在 Claude Code 里敲了 /voicelanguage 设成 zh,得到的是一句警告和英语听写。麦克风没坏。Anthropic 自己的文档解释了原因,Mac 上也有一条不绕弯的替代路。

/voice 文档列的支持语言:截至 2026-09-18 没有中文

Claude Code 的官方文档有一页语音听写,有简体中文版。截至 2026-09-18,它的支持听写语言表里一共 20 种:

捷克语丹麦语荷兰语英语
法语德语希腊语印地语
印度尼西亚语意大利语日语韩语
挪威语波兰语葡萄牙语俄语
西班牙语瑞典语土耳其语乌克兰语

没有中文,简体繁体都没有。这张表会变,以链接那页为准,这里只是一个标了日期的快照。

同一页还有三句话和这篇直接相关。第一,听写用的是和 Claude 回复语言同一个 language 设置;设的语言不在表里,/voice 启用时会警告,然后听写回退到英语。第二,音频的去向写得很直白:录音流式传到 Anthropic 的服务器转录,「音频不在本地处理」。第三,它要求 Claude.ai 账户和本地麦克风:用 API key、Bedrock 或 Foundry 认证时不可用,SSH 会话和云端会话里也不工作。

现在对 /voice 说中文,会发生什么

两条路殊途同归:不管 language 设成 zh 还是留空,普通话最后都进了一个英语转写器。出来的是什么,文档没写,我也不猜。排障条目对转写乱码或语言不对的情况给的建议是回 /config 设语言,对中文来说这一步会绕回上面的回退。

同一页说点击模式的自动提交,对日语、中文和泰语转录按单词计数。决定 /config 接受什么的,仍然是那张语言表。

真正的缺口:一句话里中英混说

就算明天那张表里多出一行中文,开发者说话也不是单语的。它长这样:

把 header 的 toggle 组件放到右上角,然后 API 层不要动。

中文语法,英文标识符,中间没有停顿。锁在一种语言上的识别器,处理另一半会很吃力:嵌在中文里的 header 回来时变成一个不成词的东西,或者整句被压平成一种语言。港台读者还多一层:就算识别对了,出来的字是简是繁,也得有人说了算。

ListenIn 就是为这种句子做的。机制在中英混说听写那页。

全局听写 App 往 Claude Code 里写字,和敲键盘一样

Claude Code 的输入框,本质上是终端里的一个文本框,贴进去的文字和敲进去的一样处理。所以一个把语音识别成文字、再插到当前光标的 App,不需要插件,也不需要 Claude Code 给任何权限;在 Cursor、VS Code 或邮件里,它的行为完全一样。

ListenIn 做的就是这件事。它是一个 macOS 菜单栏 App:按一下触发键,说话,再按一下,清好的文字落在光标处。识别走 Apple 的两条语音引擎路径,都强制在本机跑,音频不会离开 Mac,也永远到不了 ListenIn 的清稿服务。清稿只发文字,去向三选一:ListenIn 内置的清稿服务,你自带 API key 的模型服务,或者本机的 Ollama(全程不出机器)。按模式拆开的表在安全页

两个终端相关的细节。ListenIn 通过剪贴板粘贴,贴完把原来的剪贴板恢复回去;终端自己开着 Secure Keyboard Entry(安全键盘输入)的时候,它不粘贴,改给你一张复制卡(见终端听写与安全输入)。

两件它不做的事。它不是编程 Agent:它只负责把 prompt 准备好,接下来做什么由 Claude Code 决定。它也不会在路上替你回答:用中文问一个问题,你拿到的是清好的那个问题,不是答案。

Mac 上的设置:触发键、权限、macOS 14–15 的语言包

要求:macOS 14 或更新,Apple Silicon 和 Intel 都行。

触发键。 默认是 fn。如果 macOS 已经把 fn 绑给了表情符号或输入法切换,新装的 ListenIn 会改用右 ⌘ 启动,引导页会写明:「fn 被 macOS 占用——ListenIn 改用 右 ⌘ Command。」想换,去「设置」›「听写」里的「触发键」,点「录制…」;或者在 macOS 键盘设置里把 fn 键设为「无操作」,把它腾出来。取舍在fn 键冲突那篇

权限。 引导页要两项:「① 麦克风 + 语音识别」和「② 辅助功能」。辅助功能用来把文字粘到光标处,在 Ask Anything 模式里还用来读取你选中的文字;ListenIn 不截屏,也不会把屏幕图像发出去。你的终端不需要麦克风权限,录音的是 ListenIn;而按文档,/voice 第一次启用会向你的终端 App 要麦克风权限。

识别语言。 把「识别语言」设成「中文(含中英混说)」。就这一项,没有按句切换。

语言包。 这是强制本机识别要付的代价。macOS 14–15 上,Apple 的经典引擎只认已经下载了听写语言包的语言。中文没下载的话,ListenIn 不会悄悄改走 Apple 的云端:识别直接失败,你会看到一张「听写语言不可用」卡,上面有「打开听写设置」按钮,点了直达系统设置里的听写语言,下载一次中文就好。macOS 26 上,同一张卡可以直接给「下载语音模型」,原地下载。细节在语言包那篇

prompt 整形。 有一个开关叫「在 AI 编码工具里写成 prompt」。打开后,在 Claude Code、Cursor、VS Code、Xcode 和终端里的口述会被改写成 prompt:目标先行,有序步骤编号,约束单独成块。

一条中英混说的 prompt,清稿前后

下面这段原始转写来自 ListenIn 自己的回归测试集(eval/asr-repair.json 里的 cmd-struct-01),是识别器原样吐出来的口头碎念:

嗯那个我想把这个用户设置页面改一下就是重构一下然后呃大概分三步吧第一个是先把那个表单校验抽成一个 hook第二个是把保存按钮的 loading 状态修好第三个是把那个错误提示统一成 toast然后哦对了不要动那个 API 层然后单元测试要能过

这条用例的回归断言是:必须有编号步骤,hooktoastAPI 原样保留,嗯、呃、哦对了必须消失。能通过的输出长这样:

重构用户设置页面,分三步:
1. 把表单校验抽成一个 hook
2. 修好保存按钮的 loading 状态
3. 把错误提示统一成 toast

不要动 API 层。单元测试要能过。

没有翻译:hook 没变成钩子。没有添加:没有标题,没有第四步,没有截止日期。ListenIn 清稿守的规则是「只重排,不编造」。在 Claude Code 里,这一块落进输入框,你看一眼,按回车。想让它直接发出去,「AI 指令」模式有「说完自动回车执行」选项,配合指定的「目标 App」。

每一次听写都留在本机的「听写历史」里,可以用「显示原始转写」看识别器最初给的是什么。

简体还是繁体,以及放你自己标识符的个人词典

字形。 「设置」里的「中文字形」有三个值:「自动(跟随语音)」「锁定简体」「锁定繁体」。锁定作用在清稿输出上,所以写繁体的人不会因为模型当下的心情拿到一句简体。港台读者直接选「锁定繁体」。展开在繁简锁定那篇

你的标识符。 ListenIn 内置了一份技术词库(Claude、Cursor、GitHub、OAuth、JSON、SwiftUI、Vercel 等),回归测试另外盯着 regex、localhost、kubectl 这类词清稿后不能坏。只有你的代码库才用的名字(比如一个叫智付的产品),打开「管理个人词典…」,一个一个加进去。或者在插入后的文字里把那个词改对一次:ListenIn 会注意到这次修改,提议加进词典,并对其他出现的地方提供「全部替换」。

个人词典和学到的纠错喂给的是文字清稿这一步,在 macOS 14–15 上也会给经典识别器做偏置。ListenIn 不会重新训练 Apple 的新识别器,也不能给它加偏置。词典和纠错能导出成一个文件再导入,导入是合并,不会抹掉已有的,所以能跟着你换 Mac。细节在词典那篇

什么时候 /voice 就够了,用不着这些

如果你口述用的是英语或表里另外十九种语言之一,用 Claude.ai 账户登录,也接受音频上 Anthropic 的服务器,那 /voice 已经内置好了。按文档,它不消耗 token,针对编程词汇调过,会把你的项目名和分支名加进识别提示,还允许在一条 prompt 里混着打字和说话。用它。

下面几条里有一条成立,你才需要一个全局 App:你说中文,或者一句话里中英混说;音频必须留在机器上;你用 API key 或 Bedrock 认证,/voice 在那里不可用;你的 Claude Code 跑在 SSH 上,而 ListenIn 是往本地终端窗口里贴字;或者你想用同一个触发键覆盖 Claude Code、Cursor 和邮件。

如果你在 Claude Code 里试了,发现 App 的行为和这篇写的不一样,那是 bug,告诉我们

在自己的 Mac 上试一下

免费档不用注册;音频不出本机。

下载 Mac 版

← 全部文章