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 的步骤:

  1. 下载 Ollama 0.40.11 或更高版本。
  2. 拉取模型:
ollama pull phonon

Ollama 引用的其他文档:

为什么这很重要

向 Ollama 添加语音模型将本地模型运行器转变为本地语音管道。两个特性对构建者来说值得注意:

  • 本地执行。文本转语音通过 Ollama 在用户自己的 Apple Silicon 硬件上运行,而不是托管的语音 API。
  • 可组合性。由于 Phonon 读取标准输入并将音频写入标准输出,它可以与同一 CLI 中的任何聊天模型链接,也可以通过兼容 OpenAI 的 HTTP 端点访问,现有 SDK 代码已经知道如何调用该端点。

公告中所述的注意事项是平台覆盖范围(发布时仅限 macOS)和许可(40M 多语言变体为 CC BY-NC 4.0,因此非商业用途,而基础英语 phonon 模型为 Apache 2.0)。

Sources