Ollama v0.40.11 补齐 macOS 语音合成:Phonon 三平台可用,同版收录 d3 决策模型
Ollama 的语音合成能力在一周内补完了三块拼图:10 月 22 日 v0.40.9 引入 Speech,接入 Gradium 的 Phonon TTS 家族;10 月 24 日 v0.40.11 把 macOS 补齐——此前发布说明只标注 Apple Silicon,macOS 用户装上后并不能直接出声。到 v0.40.11,Linux、Windows、macOS 三个桌面平台都能用 ollama run 让模型边生成边出声。
Phonon:31M/40M 两档,暂无中文
| 项目 | 数值 |
|---|---|
| 模型来源 | Gradium 的 TTS 模型家族 |
| 参数档位 | 31M(英文)/ 40M(多语种) |
| 体积 | 104MB(31M 英文档)/ 123MB(40M 档) |
| 上下文窗口 | 8K(文本输入) |
| 语种 tag | en、de、es、fr、pt、multilingual(暂无中文) |
| 内置声音 | Zoey、Easton、Freya 等,未指定时用 default |
| 输出 | WAV/PCM,16-bit 单声道 24kHz |
模型在生成过程中直接把文本转成语音,不需要先等全文转写完。官方文档说明默认 tag 走 Gradium 的 31M 英文 checkpoint,ollama show phonon 列出全部声音,声音名大小写与重音符不敏感;/api/show 会把模型能力标注为 speech。截至 2026-10-25,HuggingFace 上检索不到 Phonon/Gradium 的官方权重仓,模型库页也未标注权重许可,想核对原始权重的只能以 Ollama 库的分发版为准。
终端用法:macOS 现在真可用了
# 朗读一句话
ollama run phonon "Hello from Ollama."
# 指定声音
ollama run phonon --voice Zoey "Hi, this is Zoey."
# 把对话模型的回复读出来(管道逐句播放)
ollama run gemma4 --hidethinking "Tell me a fun fact about owls in two sentences." | ollama run phonon
# 重定向即导出 WAV(无扬声器服务器可用)
ollama run phonon "Save this to a file." > speech.wav
管道输入是流式的:对话模型的回复出来头一两句就开始播,不用等全文生成完。ollama run phonon 不带文本进入交互模式,回车一行读一行,Ctrl+C 停止当前朗读、Ctrl+D(或 /bye)退出。播放走系统自带播放器:macOS 用 afplay,Linux 按序尝试 paplay、pw-play、aplay、ffplay,Windows 用 PowerShell。管理远程服务器时设 OLLAMA_HOST 指过去,音频在执行命令的本机播放——这条链路 v0.40.9 起就可用,v0.40.11 补齐的是 macOS 本机直跑的场景。
API:OpenAI 兼容,边生成边推流
/v1/audio/speech 接 model、input、voice 三个主要参数,response_format 支持 wav(默认)与 pcm,均为 16-bit 单声道 24kHz。响应随生成进度推流:
curl -sN http://localhost:11434/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "phonon", "input": "Playback starts while the rest is still being generated."}' \
| ffplay -nodisp -autoexit -loglevel error -
Python/JavaScript 的 openai SDK 把 base_url 指到 http://localhost:11434/v1,即可复用 client.audio.speech 接口。两个工程细节值得注意:
- 流式 WAV 的头部特殊:响应头在音频长度未知时就要写出,size 字段填的是最大值——适合边收边播,把响应直接落盘成 .wav 再用普通播放器解析,长度信息可能不对;
- voice 填错不静默:未知 voice 返回 400,错误信息会列出全部可用声音名。
文本处理口径:按原文读,不自动展开
官方文档当前的口径是「文本按写出的样子读」:数字、日期、缩写不会自动展开成单词,想读得自然要自己拼写——写 twenty-one 而不是 21。emoji、列表符号和 markdown 标记会被跳过;不支持的参数(其他格式、语速、instructions)返回 400 而不是静默忽略;语音模型不接受 chat、completion、embedding 请求,同样返回 400。单次请求 input 上限 4096 字符,ollama run 会自动按段落和句子切分长文。
同版收录:d3 决策模型家族
v0.40.11 同时把 d3 决策模型家族纳入模型库:来自 vLLM Semantic Router 项目,2B/4B/9B/27B 四档。给一段文本、一份结构化状态或一张图,它输出的是判断而不是生成内容——分类标签、是/否概率,或按序数标准打分。官方文档在 Decision 页给的能力描述就是三件事:文本分类、估计是/否概率、按序数标准打分。
ollama run d3 "A customer says their card was charged twice." --ask "Is this a billing issue?"
这类模型的用途是把「判断」从生成模型里拆出来单独跑:客服工单分流、内容审核初筛、结构化数据校验这类任务,用小模型出概率比让大模型生成一段话再解析更快也更稳定。d3 之前,Ollama 库里已有 Nimble、Tev1、Clef 等决策模型,d3 是这个家族新增的选项。
平台支持现状
| 平台 | 语音合成可用版本 |
|---|---|
| Linux / Windows | v0.40.9(2026-10-22) |
| macOS | v0.40.11(2026-10-24) |
| 远程播放(OLLAMA_HOST) | v0.40.9 起 |
中间的 v0.40.10(10 月 23 日)上是 NVIDIA Nemotron 3.5 Bolt E4B 视觉模型,与语音无关。要用语音合成认准 0.40.9 及以上,macOS 认准 0.40.11 及以上。
参考链接
- GitHub Release v0.40.11(macOS Speech 与 d3 更新说明)— https://github.com/ollama/ollama/releases/tag/v0.40.11
- GitHub Release v0.40.9(Speech 首次引入,当时仅标注 Apple Silicon)— https://github.com/ollama/ollama/releases/tag/v0.40.9
- Ollama 官方文档:Speech — https://docs.ollama.com/capabilities/speech
- Ollama 官方文档:Decision — https://docs.ollama.com/capabilities/decision
- Ollama 模型库:phonon — https://ollama.com/library/phonon
- Ollama 模型库:d3 — https://ollama.com/library/d3