Ollama 语音模型:Ollama 0.40.11 中的 Phonon 文本转语音
TL;DR
Ollama 现在支持文本转语音,其首批推出的语音模型是 Phonon,这是来自 Gradium 的一系列小型文本转语音模型。该功能在 macOS 上运行,需要 Ollama 0.40.11 或更高版本,在 Apple Silicon 上由 Apple 的 MLX 框架加速,Ollama 报告称其 Phonon 实现在配备 M5 Max 的 MacBook Pro 上比 Gradium 自己的运行时快 35%,同时与参考实现的词错误率相匹配。
Ollama 宣布了什么
Ollama 现在可以将文本转换为语音。Ollama 中可用的第一个语音模型是 Phonon,Ollama 将其描述为来自 Gradium 的一系列小型、最先进的文本转语音模型。
语音模型在发布时可用于 macOS。Windows 和 Linux 支持据称即将推出。
最简单的调用方式是通过模型运行文本提示并生成语音音频:
ollama run phonon "Hello from Ollama."
使用 --voice 标志选择特定语音:
ollama run phonon --voice Zoey "So I went through the whole thread. Short version? Everyone agrees, and nobody wants another meeting."
Ollama 表示其发布的示例音频是 Ollama 0.40.11 在配备 M5 Max 的 MacBook Pro 上未经编辑的输出。
Apple Silicon 上的性能
Ollama 报告称,在配备 M5 Max 的 MacBook Pro 上,其 Phonon 实现比第二快的引擎(即 Gradium 自己的运行时)快 35%。
关键的技术声明是,Ollama 在 Apple Silicon 上由 MLX(Apple 的机器学习框架)加速,Ollama 称其提供了最先进的吞吐量。
Ollama 所述的测量细节:
- 硬件:配备 M5 Max 的 MacBook Pro。
- 工作负载:生成 45 秒的语音。
- 统计量:10 次运行的中位数。
- 报告的指标:以比实时快多少倍表示的吞吐量。
- 基线:Gradium 自己的运行时
ptts,在 CPU 上使用 8 位权重,在神经引擎上使用 fp16,在 GPU 上使用 f32。 - Ollama 的配置:模型以 bf16 运行。
由于基线运行时在 CPU、神经引擎和 GPU 上混合了不同的精度,因此该比较不是同类数值精度的比较;Ollama 通过 MLX 以单一的 bf16 配置运行模型。
准确性:与参考实现相匹配
Ollama 表示其实现与 Hugging Face Transformers 中的参考实现一样准确,词错误率相匹配。
Ollama 所述的测量细节:
- 指标:词错误率(WER),越低越好。
- 测试集:来自 Seed-TTS 英语测试集的 200 个句子。
- 转录:Whisper large-v3。
这意味着在 Apple Silicon 上的速度优势并未被描述为在所述测试集上以输出质量为代价。
语音
语音通过命令行上的 --voice 标志或 API 中的 voice 字段选择。
ollama run phonon --voice Hadley "Hello from Ollama."
这些语音来自 Gradium 的语音目录。Ollama 发布的示例列出了四种语音及其示例时长:
- Zoey,美式,0:06
- Easton,美式,0:04
- Freya,英式,0:04
- Hugh,英式,0:07
运行 ollama show phonon 可列出所有可用语音。
语言和许可
Phonon 以多种模型变体形式提供,具有不同的语言覆盖范围和不同的许可证。
| 模型 | 语言 |
|---|---|
phonon |
英语 |
phonon:40m-fr |
法语 |
phonon:40m-de |
德语 |
phonon:40m-es |
西班牙语 |
phonon:40m-pt |
葡萄牙语 |
phonon:40m-multilingual |
全部五种 |
基础模型和 40M 变体之间的许可不同:
phonon根据 Apache 2.0 发布。- 40M 模型根据 CC BY-NC 4.0 发布,这将其限制为非商业用途。
任何计划在 40M 语言变体上构建商业产品的人都需要考虑非商业限制。
将聊天模型输出流式传输到语音
Phonon 可以直接从聊天模型管道接收输入,这使得语音输出成为两个现有 Ollama 命令的组合,而不是一个单独的应用程序。
ollama run gemma4 --hidethinking "Tell me a fun fact about owls in two sentences." | ollama run phonon
Ollama 表示文本在到达时即被朗读,因此回复在第一句话后就开始播放。这种流式行为对感知延迟很重要:听众不必等待完整生成完成就能听到答案的开头。
Phonon 也可以交互式运行。运行不带文本的 ollama run phonon 会打开一个提示符,可以在其中输入行,并且可以重定向输出以保存 WAV 文件:
ollama run phonon "Save this to a file." > speech.wav
API:兼容 OpenAI 的语音端点
Phonon 适用于兼容 OpenAI 的 /v1/audio/speech 端点。根据 Ollama 的说法,使用 OpenAI SDK 的现有代码只需要一个新的基础 URL。
curl http://localhost:11434/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "phonon",
"voice": "Zoey",
"input": "Hello from Ollama."
}' --output speech.wav
Ollama 表示响应在音频生成时进行流式传输,因此可以立即播放。文档中的示例将 curl 响应直接管道传输到播放器:
curl -sN http://localhost:11434/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{"model": "phonon", "input": "Playback starts right away."}' \
| ffplay -nodisp -autoexit -loglevel error -
Ollama 所述的音频格式细节:
- 采样率和通道:24 kHz 单声道。
- 默认容器:WAV。
- 原始输出:当请求
"response_format": "pcm"时为 16 位样本。
流式示例中的 -sN 标志禁用 curl 的进度计和缓冲,以便音频字节在生成时流向播放器。
入门和要求
语音模型在 Apple Silicon Mac 上运行。Windows 和 Linux 支持据称即将推出。
在本地运行 Phonon 的步骤:
- 下载 Ollama 0.40.11 或更高版本。
- 拉取模型:
ollama pull phonon
Ollama 引用的其他文档:
- Phonon 模型页面:https://ollama.com/library/phonon
- 语音文档:https://docs.ollama.com/capabilities/speech
- OpenAI 兼容性:https://docs.ollama.com/api/openai-compatibility
- Gradium 的语音目录:https://huggingface.co/gradium/phonon-voices
为什么这很重要
向 Ollama 添加语音模型将本地模型运行器转变为本地语音管道。两个特性对构建者来说值得注意:
- 本地执行。文本转语音通过 Ollama 在用户自己的 Apple Silicon 硬件上运行,而不是托管的语音 API。
- 可组合性。由于 Phonon 读取标准输入并将音频写入标准输出,它可以与同一 CLI 中的任何聊天模型链接,也可以通过兼容 OpenAI 的 HTTP 端点访问,现有 SDK 代码已经知道如何调用该端点。
公告中所述的注意事项是平台覆盖范围(发布时仅限 macOS)和许可(40M 多语言变体为 CC BY-NC 4.0,因此非商业用途,而基础英语 phonon 模型为 Apache 2.0)。
Sources
- OriginalSpeech models in Ollama