语音狗子 免费下载

用语音给 Claude Code 写 prompt 时,你的音频去了哪里

如果你习惯用说的方式给 Claude Code 下指令,有个问题迟早会冒出来,而且在终端里看不出答案:我刚才说的那段话,录音去哪了?

这个问题有官方答案。下面先把官方文档说了什么逐条列出来,再讲本地识别这条路到底改变了什么、什么没改变——后半部分比前半部分更容易被说过头。

官方文档怎么说

Claude Code 自带 /voice 命令,按住一个键说话,转写结果实时进输入框。官方的语音听写文档把要求写在页面最上方,三条跟本文有关。以下均为截至 2026 年 10 月的官方文档原文:

Voice dictation streams your recorded audio to Anthropic's servers for transcription. Audio is not processed locally.

语音听写把你的录音流式传到 Anthropic 的服务器做转写,音频不在本地处理。

A Claude.ai account: the speech-to-text service is only available when you authenticate with one, and is not available when Claude Code is configured to use an Anthropic API key directly, Amazon Bedrock, Google Cloud's Agent Platform, or Microsoft Foundry.

语音转文字服务只在用 claude.ai 账号登录时可用;直连 Anthropic API Key、Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 这几种配置下都没有。

A local microphone: voice dictation does not work in cloud sessions or SSH sessions.

需要一个本机麦克风;语音听写在云端会话和 SSH 会话中不工作。

这三条都不是被藏起来的东西,就印在官方页面的第一屏。文档同时写明转写不消耗 Claude 的消息额度和 token,也不计入 /usage 里显示的限额。另外,组织管理员可以通过策略关掉这个功能。

先说清楚内置方案强在哪

很容易把这类文章写成「它不行、我们行」,但这里有件事必须给对方信用。官方文档这样描述识别质量:

Transcription is tuned for coding vocabulary in both modes. Common development terms like regex, OAuth, JSON, and localhost are recognized correctly, and your current project name and git branch name are added as recognition hints automatically.

两种模式下的转写都针对编程词汇做过调优,regex、OAuth、JSON、localhost 这类常见开发术语能正确识别,而且你当前的项目名和 git 分支名会被自动加为识别提示。

这是通用语音工具结构上做不到的事——它根本不知道你在哪个仓库、在哪个分支上。语音狗子用的 FunASR SenseVoice 在架构上不支持热词定制,这块是公开的短板,没法靠调参补上。

所以结论先放这里:如果你用 claude.ai 账号、在本地开发、也接受音频由服务端转写,就用内置的 /voice。 它集成更好,识别更懂代码,配置成本是一条斜杠命令。

SSH 那条限制不是产品缺陷

值得单独说一句,因为它常被当成功能缺失。

麦克风是插在你面前这台机器上的物理设备,SSH 转发的是一个终端会话——进出远程 shell 的字节流,不含音频。所以任何「在程序运行的那一侧采集并处理音频」的方案,到了远程主机上都无从采集。官方文档在讲 VS Code 扩展时把原因讲得很清楚:

It is not available in VS Code Remote sessions, including SSH, Dev Containers, and Codespaces, because the microphone is on your local machine and the extension runs on the remote host.

麦克风在你的本地机器上,而扩展跑在远程主机上。就这么简单,没人选择过这件事。

反过来也就说明了什么能用:采集和送字都发生在本地的工具。在你的 Mac 上录音、在你的 Mac 上识别,然后把结果作为键盘事件发给当前聚焦的窗口——远程那头收到的只是 stdin 上的字符,和你手指敲出来的没有区别。窗口里跑的是本地 shell、tmux 还是三跳之外的 SSH,对它完全不可见,也不需要可见。

本地识别改变的是「语音」的去向,不是「prompt」的去向

这一节最容易被写成营销话术,所以把精确版本放在这里。

它换来的是: 录音不离开你的机器。没有上传、路径里没有第三方语音服务、不存在原始音频被保留多久的问题,断网也能识别,不需要 API Key,也没有账号可以把音频关联过去。

这件事比听起来重要,因为原始音频不等于你的 prompt。它还包含你说了一半放弃的那句、背景里同事的对话、旁边还在进行的半通电话。如果你口述的内容涉及未发布的项目、客户数据或内部代码库,真正让人不安的恰恰是这部分多出来的内容——而这部分在什么都不传输时会完全消失。

它换不来的是: 你的 Claude Code 会话本身的私密性。文字进了输入框、你按下回车,这段 prompt 就要发给 Anthropic,和你手打的完全一样——同一个模型、同一个网络请求、同一套数据处理。本地识别只是从流程里拿掉了一跳。它不会让一个 AI 编程工具变成本地工具。

所以诚实的说法很窄:它改变的是你的声音去哪,不是你的 prompt 去哪。对一部分团队来说——尤其是那些走 Bedrock、Agent Platform、Foundry 的,这类团队对「哪个厂商碰到哪类数据」的规定通常最严——这个很窄的差别仍然决定了语音输入能不能用。

两条路各自适合什么

Claude Code /voice 系统层 + 本地识别
音频去向 Anthropic 服务器(官方文档明写) 留在本机
断网可用 否 是
SSH / 云端会话 文档明确不支持 可以,送的是本地键盘事件
登录要求 需 claude.ai 账号;API Key / Bedrock / Agent Platform / Foundry 下没有 无
代码词汇 已调优,含项目名与分支名提示 不支持热词
作用范围 Claude Code 任意聚焦窗口
配置成本 一条斜杠命令 两项系统权限

语音狗子 是后一类的一个实现:长按右 Option 说话,松开后识别结果作为键盘输入送进当前聚焦的窗口;识别用 FunASR SenseVoice 在本机完成,音频不出设备,无需 API Key、无账号、永久免费。它不跟任何工具集成,这也正是它不会在任何工具上失效的原因。

装之前该知道的限制有三条。仅支持 Apple Silicon + macOS 13 及以上,Intel Mac 不支持。需要辅助功能和输入监听两项权限——模拟键盘和监听热键各要一项,这两项权限能力不小,值得花一分钟确认工具拿它做什么。安全键盘输入会让它静默失效:Terminal 和 iTerm2 都有这个选项,开启后 macOS 进入 Secure Event Input 状态,热键根本到不了,没有任何报错,看起来就像 App 坏了。完整排查见系统听写为什么在终端失效。

最后一条限制决定了该怎么用它:说意图和结构,打标识符和路径。「把处理登录回调那个函数拆出来,改掉三个调用方,补一个测试」转写得很好,逐字念 handleAuthCallback 不行,而且手打更快。关于口述 prompt 的具体写法和其他几条技术路线,见在 Claude Code、Codex CLI 里用语音口述需求;想先搞明白 macOS 自带听写怎么用,见macOS 听写使用指南。

还有一个跟工具无关的习惯:不要自动回车。说完看一眼文字再按。识别出错很正常,prompt 对错别字很宽容,但终端里已经执行的命令收不回来。