Mac 语音输入接 Ollama:全本地配置与取舍

Apple 本机识别加 localhost 上的 Ollama 清稿,Mac 语音输入可以全程不出本机。这篇讲怎么配、怎么关掉 Wi-Fi 自己验证,以及要付出的代价。

自己拼的本地语音输入通常是这一套:一个 Whisper 编译版、一段脚本、再接一个本地大模型做润色。能用,但每一段都要自己维护。ListenIn 走的是同一条链路,只是打包好了:识别用 Apple 自带的本机引擎(不用 Whisper),清稿接 localhost 上的 Ollama,切到离线模式后,Mac 语音输入就全程不出本机。

链路:麦克风 → 本机识别 → 文字 → localhost 的 Ollama → 光标

ListenIn 把一次听写拆成两段,故意分开。

第一段是识别。麦克风音频交给 Apple 语音引擎,并且强制本机识别:macOS 26 上走新一代引擎,macOS 14–15 走经典回落,两条路识别都留在 Mac 上,经典引擎不能调用 Apple 的云端语音服务。任何配置下,音频都不会到 ListenIn 的清稿服务。

第二段是清稿。识别出来的文字交给一个语言模型:去掉嗯啊和说错重来的部分,修同音识别错误,整理格式。规则只有一条:只重排,不发明。它不会替你补内容,也不会回答你口述的问题——你说「这个 API 怎么鉴权」,落下来的就是这句话,不是答案。

云端通常在第二段进来。默认情况下,文字发给 ListenIn 内置的清稿服务。把这一段改指向 localhost 上的 Ollama,并把「模式」切到「离线」,整条链路就没有任何东西离开这台 Mac。每种模式各会发出什么,安全页有一张逐行的表。

本文只讲语音输入(听写)模式,翻译、Ask Anything 不在范围内。

开始之前

macOS 14–15:先确认听写语言已下载。 因为识别被强制在本机,语言包不在的时候它不会悄悄改走云端,而是直接失败,ListenIn 会提示「听写语言不可用」。Apple 的《在 Mac 上听写信息和文稿》(2026-09-18 查阅)给的路径是系统设置 → 键盘 → 听写,点「语言」旁的「编辑」,选语言和地区。macOS 26 上,ListenIn 会请新引擎自行安装所需的语言资源。如果听写完全没有输出,先看语言包那篇

装好 Ollama,至少拉一个模型。 安装看 Ollama 官方 quickstart,模型用 ollama pull <model> 拉下来。ListenIn 会在默认地址 http://localhost:11434 找 Ollama,并通过 OpenAI 兼容端点 http://localhost:11434/v1 与它通信。本地服务不需要 API Key。

选哪个模型?看你的 Mac 内存装得下多大的、你愿意等多久。这篇不排名。

把 ListenIn 的清稿指向 Ollama

打开「设置 → 模型」。这个标签页分三块:

  • 顶部一个「模式」选择器:「Hybrid」或「离线」。
  • 「云端(在线)」区:里面有「内置」(ListenIn 自己的服务),以及你用「添加云端模型」加进来的模型。
  • 「本机(离线)」区:列出 Ollama 里有什么。

标签页打开时先显示「正在查找本地模型…」,去问 Ollama。接下来看到什么,取决于这台机器的状态:

你看到的意思怎么做
「装 Ollama 即可离线跑模型」这台 Mac 上没装 Ollama点「获取 Ollama」去下载页;装完点「重新检测」
「Ollama 没在运行」装了,没启动点「启动 Ollama」,起来后列表自动填上
一排模型名,每个标着「本机运行 · 可离线」Ollama 在运行点选一个
多出几行带「下载」按钮的ListenIn 可以替你拉的模型可选

选中一个本机模型,把「模式」切到「离线」。选择器下方那行说明写得很直白:「离线——清稿只用你的本机模型,什么都不出这台 Mac;云端关闭。」云端区会变灰;离线期间菜单栏里的「检查更新」也会消失,因为检查更新本身就是一次对外请求。

还有两条限制。第一,没有选中本机模型时离线打不开,选择器会拒绝。第二,「本机」的定义很窄:localhost127.0.0.1::1,或以 .local 结尾的主机名。离线模式下,指向其他任何地址的模型档案都会被当成「没配」,你拿到的是原始转写,而不是一次发往远端的请求。

关掉 Wi-Fi,不联网验证

别只信那行字。关掉 Wi-Fi,跑三个目标。

  1. 备忘录。 按触发键,说一句带嗯啊和改口的话,比如「嗯……帮我把这个 endpoint 的 timeout 改成,改成 60 秒」,再按一次。默认是 fn;首次启动时如果 macOS 已占用 fn(切输入法、表情或听写),ListenIn 会改用「右 ⌘ Command」。不确定就看「设置 → 听写」里当前的触发键。落下来的应该是去掉嗯啊和重复之后的那句。如果落下来的是原话,而且气泡提示「清稿失败,已插入原文(检查网络或 Key)」,那是 Ollama 没有应答:确认它在运行,并且你选中的模型还在。
  2. 终端。 口述一条 shell 命令,或者对着 Claude Code 口述一段 prompt:Claude Code 语音输入走的是同一条链路,离线模式下同样不出本机。如果 Terminal 开着 Secure Keyboard Entry,ListenIn 不会粘贴,而是给一张复制卡:「有 App 开着安全输入,暂时无法粘贴 · 点击复制」,文字没有丢,只差一次点击(原因见终端安全输入与听写)。
  3. Quick Prompt。 如果你绑了「Quick Prompt 触发键」,按下它,只说 prompt hint。匹配在本机完成,所以断网也能把存好的 prompt 粘出来。这条路和 Ollama 无关,两种模式下都能用。

冷启动后的第一次请求可能慢,因为 Ollama 要把模型装进内存。ListenIn 给 OpenAI 兼容端点(本地的也算)的请求留了 60 秒,超过才放弃并插入原文。第一次口述停顿一下是正常的;每次都落原文就不正常。

换成小模型之后,什么变了

ListenIn 发给 Ollama 的指令和云端路径用的是同一套,包括你的设置。三样东西原样带过去:

  • 清稿强度。「忠实(只加标点)」「标准(去嗯啊、修口误)」「精炼(整理重组、分点)」。每一档都是 prompt 里的一条指令,所以对任何模型都生效。
  • 中英混说。 不用切模式;「中文字形」里的「锁定简体」「锁定繁体」也是 prompt 指令。港台用户在意的那件事——口述繁体、落下来还是繁体——在本地路径上同样成立,细节见繁体听写与字形锁定
  • 个人词典和纠错学习。 两者都折进同一段 prompt,作为已知术语和「听成→本意」的配对。它们不会重新训练 Apple 的识别器;它们告诉清稿模型你要的是哪种写法。那篇讲学习机制的文章在每条路径上都适用。

变的是模型遵守这些指令的程度。「精炼」要求整理重组,小模型可能重组得少,或者跑偏;一大段中英混说比一句短英文难得多。「精炼」不满意就退到「标准」,它对模型的要求更低。质量现在取决于你的模型和你的机器。

中间选项:自带 API Key

全本地是一个极端。同一个「云端(在线)」区里,「添加云端模型」会弹出一张表:「服务商」选择器、「接口地址(Base URL)」、「API Key」、「模型」,任何 OpenAI 兼容的服务商,或 Anthropic 的 API Key 都行。之后文字从你的 Mac 直达那家服务商,不经过 ListenIn 的服务器。音频依旧不出本机,这一点不变。

适合的情况:你已经有那家的账号和数据协议,或者想用一个比笔记本跑得动的更强的模型。代价:文字现在受那家的条款约束。

Hybrid 让两端配合。「模式」留在「Hybrid」,上面选一个云端模型,下面选一个本机模型。清稿先走云端;那次请求失败,ListenIn 用同一段文字再试一次本机模型,并把结果标为「云端不可达 — 已用本地模型清稿」。Hybrid 下文字会离开 Mac,所以这是可靠性功能,不是隐私功能。

你放弃了什么,以及 Ollama 没在跑时会怎样

安装和维护是你的事。Ollama 要装、要跑、要装着一个模型。ListenIn 能替你启动已安装的 Ollama、能提供下载,但管不了模型常驻内存,也管不了你的磁盘。

离线模式下 Ollama 挂了,ListenIn 做的和任何清稿不可用时一样:Apple 的原始转写照样落到光标处,气泡标出失败。不会改走云端,因为离线模式下不存在云端路径。把选中的模型从 Ollama 删掉,每次请求也会同样失败:落原文、气泡标出失败,直到在「设置 → 模型」里另选一个。

这篇没讲到的,常见问题很短,Mac 听写页讲的是不接 Ollama 的那条路。如果 App 的行为和这篇文章不一致,那是 bug;安全页写了去哪里报。

在自己的 Mac 上试一下

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

下载 Mac 版

← 全部文章