Mac 语音转文字说「不上传」:指音频还是文字
听写分两步:先语音转文字,再由 AI 清稿,「不上传」常常只说了第一步。关掉 Wi-Fi 测音频去向,看清清稿请求里有什么,七个问题问任何厂商,附 ListenIn 逐条回答。
「不上传」少了一个宾语。听写 App 的产品页写「本地识别」「隐私优先」「数据不出设备」,都没说清不上传的是什么:是你的声音,还是识别出来的文字?这两样走的是两条路,答案可以完全不同。把这一点拆开,「Mac 听写会不会上传」和「公司里能不能用」才有办法回答。
一次听写,机器做了两件事
拿一句中英混说的话做例子。你对着 Cursor 说:
嗯那个……把 auth 那个 middleware,呃,改成用 JWT 校验,然后把旧的 session 那套删掉。
第一步是识别:引擎把这段音频变成文字,大致是「嗯那个把 auth 那个 middleware 呃改成用 JWT 校验然后把旧的 session 那套删掉」。有的引擎会顺手加标点,但「嗯」「那个」「呃」都还在,说错重来的半句也在。macOS 自带听写停在这一步,说什么写什么。
第二步是清稿:一个语言模型拿到这段文字,删掉语气词,修同音听错,补标点,输出「把 auth middleware 改成用 JWT 校验,然后删掉旧的 session 那套。」
两步之间有一条清楚的分界线:第一步的输入是音频,第二步的输入只是文字。「本地」「不上传」可以只修饰其中一步。识别在本机、文字发到云端清稿,是一种;音频发到云端识别、根本没有清稿,是另一种。两种都能在产品页上写「隐私」。所以问「是不是本地」没用,要拆成两问。
第一问:音频出没出这台 Mac
音频比文字敏感得多。它带着你的声纹、旁边同事的声音,还有你按取消之前说过的每一句话。文字发出去之前你可以先看一眼,音频不行。
关掉 Wi-Fi 试一句。 断网,点进任何输入框,说一句带「嗯」「那个」的话,看结果:
| 你看到的 | 说明 |
|---|---|
| 没有字,或提示需要联网 | 识别在云端,音频出去了 |
| 出来一段原始文字,「嗯」「那个」都在,可能附带清稿失败的提示 | 识别在本机,清稿在云端 |
| 出来一段干净的文字 | 两步都在本机(仍要去厂商的数据页确认) |
Apple 的识别引擎自己就会加标点,所以有没有标点不算判据,看语气词。
这个测试只能证明「断网时能用」,证明不了「有网时从不用网」。Apple 自己的语音引擎就是例子:视 macOS 版本和语言,它可以在设备上处理,也可以用 Apple 的服务端处理,除非 App 明确禁止。有网时走哪条路,只有厂商的数据流向文档能回答。没有这份文档,本身就是答案。
ListenIn 的答案:识别交给 Apple 语音引擎,并强制本机处理;macOS 26 上的新一代引擎和 macOS 14–15 上的经典回落引擎都是这样,经典引擎不被允许使用 Apple 的云端语音服务。任何模式下,音频都到不了 ListenIn 的清稿服务。安全页按模式列出了每一项会离开本机的内容,没有一行是音频。
第二问:清稿请求里装了什么,寄给了谁
这一问多数隐私页跳过,因为诚实的回答是「文字会发给某家大模型」,还得说清是哪家、带了什么。
以 ListenIn 的内置清稿为例,一次请求里有什么、没什么,列清楚:
| 带 | 不带 |
|---|---|
| 识别出的文字 | 音频 |
| 清稿设置(力度、字形等) | 屏幕截图、其他窗口的内容 |
| 可选:个人词典词条、语气提示、光标附近的文字上下文 | 账号名、邮箱(没有账号系统) |
| 词一级的纠错对(gethub → GitHub)和高频词 | 整句、过往的转写 |
| 随机设备 ID(记配额)、可选的 Pro license key | 你的历史记录 |
服务端不存转写数据库,文字转发给配置好的模型提供商,适用该提供商的 API 条款,隐私页写了是哪几家。听写历史和个人词典留在你的 Mac 上,随时可删。
清稿守一条规则:只整理,不发明。它删语气词、修同音错、排版;不替你补内容,你口述的问题也只会被写下来,不会被回答。想让它改动最少,把「清稿力度」调到「忠实(只加标点)」。
如果连 ListenIn 的服务器都不想经过,有两条路:
- 自己的 key。 在「设置 → 模型」里添加你的服务商,文字从 Mac 直连过去,不占内置配额,ListenIn 的服务器不在链路上。公司已经有审批过的模型接口的话,指过去就行。
- 本地 Ollama。 同样在「设置 → 模型」里选一个本机模型,打开「离线模式」。清稿在 Mac 上跑;配上强制本机识别,音频和文字都不出这台机器。步骤见Ollama 全本地配置。
公司里能不能用:拿数据流向对制度
客户名字、源码、合同条款能不能口述,是你公司的规定,不是厂商说了算。你能做的,是选一条数据流向和现有规定对得上的路:
| 路线 | 音频 | 文字去哪 | 对应的制度 |
|---|---|---|---|
| 内置清稿(默认,零配置) | 留在 Mac | ListenIn 服务 → 模型提供商 | 允许贴进网页版 AI 助手的内容 |
| 自己的 key | 留在 Mac | 只到你指定的服务商 | 公司已批准某家模型接口 |
| 本地 Ollama + 离线模式 | 留在 Mac | 不出本机 | 不许碰任何第三方的内容 |
三条路的音频那一列都一样,这是 ListenIn 架构里不变的部分;变的只有文字那一列,而且由你选。
港台同事常问繁体:「中文字形」设为「锁定繁体」是一项清稿设置,跟着识别文字走文字那条通道,不改变音频的边界。三条路对繁体输出同样成立,细节见繁体字形锁定那篇。
问任何厂商的七个问题,附 ListenIn 的回答
换别的 App 也用得上。把「问题」一列贴进厂商的支持表单;认真想过这件事的厂商,一段话就能答完。
| # | 问题 | 清楚的回答长什么样 | ListenIn |
|---|---|---|---|
| 1 | 原始音频会不会离开 Mac?什么条件下会? | 「从不」,或一份点名的例外清单 | 从不。两个识别引擎都强制本机 |
| 2 | 哪些文字会离开?在哪些模式下? | 一张按模式拆开的表 | 识别文字加上面表里的可选项,只在清稿运行时发出;逐模式见安全页 |
| 3 | 会截屏或读其他窗口吗? | 「不会」,并说明辅助功能权限用来做什么 | 不会。辅助功能用于接触发键、在光标处粘贴,以及粘贴后短时间内回读那个输入框以学习你的纠错;回读留在本机 |
| 4 | 服务端保留多久? | 「不存转写」,或一个明确期限 | 没有转写数据库,只留匿名字数统计用于配额 |
| 5 | 音频或文字会用来训练吗? | 厂商与模型提供商分开回答 | ListenIn 从不拿音频训练,也收不到音频;文字按提供商 API 条款处理,用 Ollama 则谁都不给 |
| 6 | 要账号吗?用什么识别我? | 「不要,随机设备 ID」,或列出账号字段 | 没有账号,免费额度按随机设备 ID 计 |
| 7 | 没网时会怎样? | 哪一步还能用,你拿到什么 | 识别照常;清稿不可用时原始转写照样落到光标处;开「离线模式」配本机模型,清稿也能离线 |
断网直接失败,是证据不是 bug
ListenIn 接受的代价在这里:macOS 14–15 上,Apple 的经典识别引擎需要对应的听写语言已经下载到本机。没下载,ListenIn 不会悄悄把音频送去 Apple 的服务器补救,而是直接失败,HUD 提示:
识别持续失败——请确认你说的语言已在「系统设置 › 键盘 › 听写语言」中下载
第一次碰到是烦。但这是唯一和「音频从不离开 Mac」自洽的行为。一个承诺本机识别、断网却从不失败的 App,要么自带了所需的语言模型,要么有一条它没写出来的回落路径。碰到了,下载语言包只要一分钟。
最后一道边界:密码框
不管走哪条路,粘贴前还有一道检查。密码框和开着安全输入的 App,ListenIn 不粘贴,改为弹一张复制卡片,提示写的是「密码框里不粘贴 · 点击复制」或「有 App 开着安全输入,暂时无法粘贴 · 点击复制」。其他地方先粘贴、再核对文字是否落地,确认没落地时同样给复制卡片。在终端里口述的读者,可以看安全键盘输入那篇。
在自己的 Mac 上试一下
免费档不用注册;音频不出本机。