Skip to main content
PromptQuorum
主页/本地LLM进阶/Ollama最佳TTS引擎(2026):为本地LLM添加语音输出
Voice, Speech & Multimodal

Ollama最佳TTS引擎(2026):为本地LLM添加语音输出

·阅读约12分钟·Hans Kuepper 作者 · PromptQuorum创始人,多模型AI调度工具 · PromptQuorum

Ollama没有内置文本转语音功能——它只生成文本,因此需要把该文本接入一个独立的本地TTS引擎才能获得语音输出。 对大多数Ollama环境来说,Piper是最容易搭配的选择:仅用CPU即可、能实时运行(即便在Raspberry Pi上),并且在已运行的LLM之外几乎不增加额外资源负担。如果你想要在仍然较小的8,200万参数、Apache-2.0许可模型上获得明显更高的语音质量,可以选择Kokoro。只有在确实需要语音克隆、并且能在LLM之外分出一块GPU时,才选择XTTS v2Chatterbox

Ollama在本地运行大语言模型并返回文本——它没有内置的文本转语音或音频输出功能,而一项要求添加原生TTS支持的请求(GitHub issue #11021)截至本文撰写时仍未解决,已作为一个更早的、仍处于开放状态的请求的重复项被关闭。要让Ollama模型开口说话,你需要把它的文本输出接入一个独立的本地TTS引擎:Ollama的REST API返回JSON响应,你的代码从response字段中提取文本,再把这段字符串传给某个TTS引擎的CLI或Python API来合成音频。本指南按照TTS引擎与已在运行的LLM共享同一台机器时真正重要的标准——资源占用、延迟、接入难易度和许可证——对现实可用的候选本地TTS引擎进行排名:PiperKokoroXTTS v2Coqui TTSBarkChatterbox

Ollama最佳TTS引擎(2026):为本地LLM添加语音输出

关键要点

  • Ollama只生成文本;一项原生TTS的功能请求(GitHub issue #11021)截至本文撰写时仍未解决。
  • Piper是资源成本最低的搭配:仅用CPU,即便在Raspberry Pi上也能实时运行,采用GPL-3.0-or-later许可证。
  • Kokoro(8,200万参数,Apache-2.0许可证)用少量速度换取明显更好的感知语音质量。
  • XTTS v2和Chatterbox都能从简短参考片段克隆声音,但XTTS v2的许可证为非商业性质,Chatterbox则采用MIT许可证。
  • Bark可以增加笑声、叹息等非语音音频,但其GitHub代码仓库自2024年4月5日起没有新的提交。
  • 各方案的流程结构都相同:Ollama的REST API返回JSON格式文本,你的代码提取出来,再把这段文本传给TTS引擎的CLI或Python API。

📍 简单一句话

Ollama没有内置文本转语音功能,添加语音输出意味着把它的文本回复接入一个独立的本地TTS引擎——资源成本最低选Piper,追求相近体量下更高音质选Kokoro,需要语音克隆选XTTS v2或Chatterbox,只需富有表现力的非语音音频选Bark。

💬 简单来说

Ollama负责思考并写出回复,TTS引擎是一个独立的程序,把这段书面回复转换成朗读音频。你需要自己用几行代码把两者连接起来——不存在一个按钮就能同时完成这两件事。

📌: 本文只涵盖语音流程中TTS的部分。若需要一套在输入侧同时加入语音识别(Whisper)的完整搭建方案,请参阅PromptQuorum的本地语音助手指南

Ollama是否内置文本转语音功能?

不——Ollama没有内置的文本转语音或音频输出功能。 Ollama是一个面向大语言模型的本地运行环境:它加载模型,通过本地REST API和CLI对外提供服务,并返回文本。它不合成语音,也不附带任何TTS模型。

一项请求添加原生TTS支持的GitHub issue,#11021,提议直接加载音频生成模型,并新增一个兼容OpenAI的POST /v1/audio/speech接口。该issue作为一个更早的、仍处于开放状态的请求(issue #5424)的重复项被关闭——截至本文撰写时,Ollama尚未推出原生TTS,也没有确定的时间表。

这正是为什么每一个基于Ollama构建的本地语音环境——语音助手、LLM输出的有声读物旁白、或无障碍朗读工具——都会把Ollama连接到一个独立的TTS引擎,而不是依赖某种单一的"Ollama TTS模式"。已有社区连接项目演示了这种做法:maudoin/ollama-voice在本文撰写时拥有378个GitHub星标,它把用于转录的Whisper、用于生成回复的Ollama以及用于输出的pyttsx3(操作系统内置语音的封装库,而非神经网络TTS模型)串联起来。这个项目展示的是连接模式本身,并不代表对pyttsx3音质的推荐——它的音质落后于本指南比较的所有神经网络引擎。

Ollama有官方的文本转语音功能吗?

没有。Ollama只生成文本。一项要求添加原生TTS支持的社区功能请求(GitHub issue #11021)截至本文撰写时仍未解决,已作为一个更早的、仍处于开放状态的请求的重复项被关闭。语音输出需要把Ollama的文本回复接入一个独立的TTS引擎。

如何把Ollama输出接入本地TTS引擎

每一套Ollama加TTS的流程都遵循相同的四个步骤:向Ollama请求文本、从JSON响应中提取该文本、把它传给一个TTS引擎、播放或保存生成的音频。 Ollama与任何TTS引擎之间都没有官方集成——这是你自己编写的连接代码,通常不到20行。

  • Ollama的API并不知道、也不关心它的文本输出之后会发生什么。 没有任何回调、Webhook或插件机制把Ollama和某个TTS引擎连接起来——只有你的代码才能把两者连接在一起。
  • 流式模式("stream": true)通过在生成时逐步返回token来降低感知延迟, 让你能在模型完成完整回复之前就开始合成第一句话的音频——这对交互式语音助手很有用,但比上面的非流式示例实现起来更复杂。
  1. 1
    启动Ollama并拉取一个模型
    Why it matters: 在能够通过REST API响应请求之前,Ollama必须已经在运行(`ollama serve`,或桌面应用),并且至少已拉取一个模型(`ollama pull llama3.1`)。
  2. 2
    向Ollama的REST API发送提示
    Why it matters: 带上`"stream": false`向`http://localhost:11434/api/generate`发送POST请求,会返回一个包含完整回复的单一JSON对象,回复内容在`response`字段中——这是TTS流程中最容易解析的方式,不过流式模式也可用于缩短首个音频的响应时间。
  3. 3
    提取文本并传给你的TTS引擎
    Why it matters: `response`字符串是纯文本——可通过标准输入直接传给TTS引擎的CLI(Piper),或传给其Python API(Kokoro、XTTS v2、Chatterbox、Bark或Coqui TTS工具包)。
  4. 4
    播放或保存生成的音频
    Why it matters: 大多数TTS的CLI和API会直接写出一个`.wav`文件;若需要实时播放,可将原始音频传给`aplay`(Linux)之类的播放器,或使用Python音频库。
bash
# 1. 向Ollama请求文本回复(为简化起见不使用流式传输)
RESPONSE=$(curl -s http://localhost:11434/api/generate -d '{
  "model": "llama3.1",
  "prompt": "Explain quantum entanglement in two sentences.",
  "stream": false
}' | python3 -c "import sys, json; print(json.load(sys.stdin)['response'])")

# 2. 把这段文本传给Piper的CLI来合成音频(资源成本最低的方案)
echo "$RESPONSE" | piper --model en_US-lessac-medium --output_file response.wav

# --- 等效的Python示例,用Kokoro替代Piper ---
import json
import requests
import soundfile as sf
from kokoro_onnx import Kokoro

reply = requests.post(
    "http://localhost:11434/api/generate",
    json={"model": "llama3.1", "prompt": "Explain quantum entanglement in two sentences.", "stream": False},
).json()["response"]

kokoro = Kokoro("kokoro-v1.0.onnx", "voices-v1.0.bin")
samples, sample_rate = kokoro.create(reply, voice="af_heart")
sf.write("response.wav", samples, sample_rate)

哪款TTS引擎最适合搭配Ollama?

Piper最适合大多数Ollama搭配场景,因为它在已经占用CPU或GPU显存的LLM旁边造成的资源竞争最小。 下表专门按每个候选方案与Ollama共享机器的表现来打分——资源占用、延迟、接入所需的代码量以及许可证——而不仅仅是原始音质。

Piper

许可证:
GPL-3.0-or-later
资源占用:
仅用CPU,非常轻量
延迟:
实时,即便在Raspberry Pi上
接入难易度:
一次CLI调用,通过标准输入传文本

Kokoro

许可证:
Apache-2.0
资源占用:
支持CPU,轻量(8,200万参数)
延迟:
较快;无与GPU引擎对比的公开实时数据
接入难易度:
Python API(kokoro-onnx),几行代码即可

XTTS v2

许可证:
CPML(非商业性质)
资源占用:
较重;建议使用GPU
延迟:
据Coqui文档,GPU上流式延迟低于200毫秒
接入难易度:
Python API,配置更多(需接受许可条款)

Coqui TTS工具包

许可证:
MPL-2.0(仅工具包)
资源占用:
取决于加载的模型
延迟:
取决于加载的模型
接入难易度:
一个Python API支持多个模型

Bark

许可证:
MIT
资源占用:
较重;建议使用GPU,CPU下较慢
延迟:
并非为实时流式设计
接入难易度:
Python API,简单但较慢

Chatterbox

许可证:
MIT
资源占用:
中等;实时使用建议配备GPU
延迟:
尚无公开确认的实时数据
接入难易度:
Python API(chatterbox-tts pip包)

与Ollama并行运行时,哪款TTS引擎占用的资源最少?

Piper。它仅用CPU,即便在Raspberry Pi上也能实时运行,并且无需与Ollama模型共享GPU显存——是本比较中资源成本最低的选项。

谁应该使用哪款引擎?

应根据自己的硬件和语音需求来匹配引擎,而不是单纯挑选原始音质最高的那一款。

  • 🏆 Ollama搭配的最佳总体选择:Piper ——资源成本最低,在CPU上即可实时运行,接入Shell脚本或Python子进程调用最为简单。
  • 相近体量下更高音质的最佳选择:Kokoro ——依然小巧到无需GPU即可运行,根据其自身发布时的基准测试,感知语音质量明显优于Piper。
  • 允许商业用途的语音克隆最佳选择:Chatterbox ——MIT许可证,可从约5秒参考音频克隆声音,实时使用时需要在Ollama之外配备GPU。
  • 非商业或研究用途语音克隆的最佳选择:XTTS v2 ——可从6秒音频克隆声音,并支持17种语言,但其CPML许可证在没有单独协议的情况下禁止商业使用——详见PromptQuorum的XTTS v2许可证解析
  • 富有表现力的非语音音频最佳选择,但不适合作为主力语音:Bark ——仅凭文本提示即可生成笑声、叹息和简单的环境音,但其代码仓库自2024年4月5日起没有新的提交,不要依赖它构建需要持续维护的生产流程。
  • 🧭 在Raspberry Pi或其他仅有CPU的硬件上,运行小模型的Ollama → Piper。本指南中没有其他引擎被确认能在无GPU的情况下实时运行。
  • 🧭 桌面或服务器在Ollama之外还有闲置GPU,希望获得克隆声音,并需要商业使用权 → Chatterbox。
  • 🧭 桌面或服务器有闲置GPU,属于研究或个人项目,追求最高的克隆质量 → XTTS v2。
  • 🧭 希望用一个工具包随时加载多种不同模型(包括XTTS v2) → 使用Coqui TTS工具包,而不是分别为每个模型单独安装依赖。

什么情况下不应使用这些引擎

将本地TTS与Ollama搭配并非适用于所有语音输出需求——有些情况需要云端API或完全不同的工具。

  • 如果你需要开箱即用、数十种高度打磨且情感丰富的声音 ——托管式云端API,如ElevenLabs,提供比本文任何模型都更丰富的精选音色库和更强的表现力控制;权衡取舍详见PromptQuorum的ElevenLabs与本地TTS对比
  • 如果你的硬件在Ollama已占用之外没有多余的RAM或VRAM ——在同一块性能有限的GPU上同时运行Ollama和XTTS v2、Bark这类耗费GPU的TTS引擎,可能导致两者都资源不足;可改用Piper或Kokoro,或把TTS迁移到第二台机器上。
  • 如果你需要发布商业产品,却尚未独立确认许可条款 ——XTTS v2的CPML明确为非商业性质,而其背后的公司Coqui AI已于2023年12月停止其付费许可服务;在把这些引擎中的任何一款用于付费产品之前,请自行核实许可条款。
  • 如果你要克隆真人的声音却未获得其同意 ——这会引发与许可证无关的同意和冒充问题,无论是在个人用途还是商业用途中都同样适用。

常见问题

Ollama是否内置文本转语音功能?

没有。Ollama只生成文本,没有原生音频输出。一项要求原生TTS的GitHub功能请求(issue #11021)截至本文撰写时仍未解决。语音输出需要把Ollama的文本回复接入一个独立的本地TTS引擎。

与Ollama搭配的最佳TTS引擎是什么?

对大多数搭建来说是Piper——仅用CPU、采用GPL-3.0-or-later许可证,即便在Raspberry Pi上也能实时运行,因此不会与Ollama争抢GPU显存。如果你想在相近资源占用下获得更高的感知音质,可选择Kokoro;若确实需要语音克隆,则选XTTS v2或Chatterbox。

如何把Ollama的输出接入TTS引擎?

带上"stream": false向Ollama的REST API(http://localhost:11434/api/generate)发送POST请求,从返回的JSON中提取response字段,再把这段文本传给你选定的TTS引擎的CLI(Piper可通过标准输入接收文本)或其Python API(Kokoro、XTTS v2、Chatterbox、Bark和Coqui TTS工具包均提供)。可运行的命令请参见上方的流程演示。

与Ollama一起运行TTS引擎需要GPU吗?

不一定。Piper和Kokoro都支持CPU运行,不需要GPU。XTTS v2、Bark和Chatterbox都能从GPU中受益,甚至需要GPU才能获得实时性能,这意味着在只有一块GPU的机器上,它们会与Ollama争抢GPU显存。

我能在基于Ollama的产品中商业使用XTTS v2吗?

没有单独协议是不可以的。XTTS v2采用Coqui Public Model License(CPML)许可,属于非商业性质。发布该模型的公司Coqui AI已于2023年12月停止其付费服务,PromptQuorum无法确认目前是否存在有效的商业许可途径。在发布付费产品之前,请查阅完整的XTTS v2许可证解析

为搭配Ollama的Raspberry Pi语音助手应该选哪款TTS引擎?

Piper。它是本比较中唯一被确认能在Raspberry Pi这类仅有CPU的硬件上实时运行的引擎,而这恰恰是Pi在同时运行或与Ollama通信时所面临的限制。

Ollama与任何TTS引擎之间存在官方集成吗?

没有。没有任何官方插件、回调或内置桥接机制把Ollama与某个TTS引擎连接起来。本指南描述的每一种搭配都是你自己编写的连接代码——通常不到20行,先调用Ollama的REST API,再调用TTS引擎自身的CLI或Python API。

在Ollama流程中,Kokoro和Piper有什么区别?

两者都支持CPU运行,且都可免费商用(Kokoro采用Apache-2.0许可证,Piper采用GPL-3.0-or-later许可证)。Kokoro是更大的模型(8,200万参数),根据其自身发布时的基准测试,能带来明显更高的感知语音质量;而Piper更轻量,并且在Raspberry Pi这类非常有限的硬件上实时运行的记录更久。

我能克隆自己的声音来朗读Ollama的输出吗?

可以,使用XTTS v2(6秒参考音频,非商业性质的CPML许可证)或Chatterbox(约5秒参考音频,MIT许可证,允许商业用途)均可实现。Piper和Kokoro都不支持语音克隆——两者都使用固定的预训练声音。

结论

Ollama缺少原生文本转语音功能,并不是一个需要靠插件绕开的缺陷——这是一种设计选择,让Ollama专注于语言模型推理,而在此基础上构建的每一套语音流程都会连接一个独立的引擎。对大多数读者来说,这个引擎应该是Piper:在已运行的LLM旁边几乎不消耗额外资源,一行代码即可接入Shell脚本或Python子进程,并且能在Raspberry Pi这样简陋的硬件上实时运行。如果Piper的音质不够,Kokoro是资源占用相近情况下的下一个选择。只有在语音克隆确实是刚需时,才考虑XTTS v2Chatterbox,为此预留一块GPU,并且——尤其对XTTS v2而言——在动手构建之前先确认其非商业性质的CPML许可证是否符合你的使用场景。如果拿不定主意,先安装Piper:这是听到Ollama模型开口说话最快的方式,之后再切换到更重的引擎,也比一开始就用它要容易得多。

资料来源

← 返回 本地LLM进阶