EchoraEchora
返回模型列表

OuteTTS:这个声音模型其实只是一个 LLM

2026年9月5日
•
7 分钟阅读

把文字和录音,做成能听的作品

配音、分轨、翻唱和音效,都在浏览器里完成。

  • 文字转语音,也能克隆音色
  • 分离音轨,或直接生成翻唱
  • 注册就能试听,先听再决定
免费开始创作

大多数 TTS 模型都需要专门的推理管线——一种懂得如何处理声码器、梅尔频谱图和音频架构特有细节的专用运行时。OuteAI 推出的 OuteTTS 完全绕开了这套做法:它把语音生成仅仅视为语言建模,也就是预测下一个 token,只不过这些 token 代表的是音频而非文字。因为它底层做的确实只有这件事,所以 OuteTTS 可以直接通过 llama.cpp 运行——也就是运行其他 GGUF 语言模型所用的同一个轻量级引擎——完全不需要 TTS 专用运行时。

什么是 OuteTTS?

OuteTTS 是一个实验性的文字转语音项目,完全构建在标准大语言模型架构之上。它使用精心构造的提示和音频 token,而不是采用挂载外部适配器或声码器专用组件的特殊 TTS 管线。早期版本建立在定制的 LLaMA 基础模型(Oute3-350M-DEV)之上;后续版本改用成熟的主干模型——0.2 版本采用 Qwen-2.5-0.5B,当前旗舰 Llama-OuteTTS-1.0-1B 则采用 Llama 架构。所有版本贯穿着同一个思路:只要能运行语言模型,就能运行 OuteTTS,因为从架构上看,它确实就是语言模型。

版本沿革

  • OuteTTS-0.1-350M——最初的概念验证,证明纯语言建模无需定制 TTS 架构也能实现可用的语音合成。它只有 350M 参数,足够小巧,几乎可以在任何设备上运行,但代价也很明显:模型经常会改动、插入或漏掉单词,导致输出质量显著不稳定。
  • OuteTTS-0.2-500M——基于 Qwen-2.5-0.5B 构建,并使用超过 50 亿个音频提示 token 训练;它新增了带有两个码本的 DAC(Descript Audio Codec)音频编码器,显著改善音频重建质量,同时也提升了声音克隆效果。
  • OuteTTS-0.3-500M——一个调整了提示格式的中间改进版本;这也解释了为什么社区工具和 llama.cpp 集成有时需要逐个版本检查兼容性。
  • Llama-OuteTTS-1.0-1B——当前旗舰版本,新增自动单词对齐(可直接输入原始文本,无需预处理),并显著扩大多语言覆盖范围,同时仍把整体规模控制在紧凑的 10 亿参数。

为什么偏偏是 llama.cpp

这并不是随意做出的兼容性选择——它是 OuteTTS 纯语言建模设计的直接结果,而且 OuteTTS 所支持的后端中,llama.cpp 能带来最可靠的结果还有一个具体的技术原因。

OuteTTS 1.0 的采样要求把重复惩罚应用于最近 64 个 token 的窗口,而不是整个上下文窗口——对完整上下文施加惩罚会造成输出损坏或质量下降。llama.cpp 默认就能正确处理这种窗口化惩罚,这也是它一直能在受支持后端中提供最稳定输出质量的部分原因。包括标准 Hugging Face Transformers 在内的其他后端最初并未原生实现这种窗口化方式;此后,outetts Python 库专门为 Transformers 后端加入了补丁,复现同样的窗口化惩罚,以弥合这一质量差距,但 llama.cpp 的原生处理方式仍是更可靠的默认选择。

除了这一特定的采样细节,以标准 GGUF 模型运行还意味着 OuteTTS 能继承更广泛的 llama.cpp 生态已经具备的一切:用于缩小内存占用的量化选项、通过 n_gpu_layers 实现的 GPU 层卸载,以及与围绕 GGUF 格式语言模型构建的现有工具保持兼容,而不需要从头搭建一套 TTS 专用部署方案。

声音克隆与多语言支持

Llama-OuteTTS-1.0-1B 只需 10 秒参考音频即可进行单样本声音克隆,并支持 23 种语言;文本对齐由模型自动处理,其中也包括没有清晰单词边界的语言——对于这些语言,自动对齐比英语这类以空格分隔的语言更加重要。音频重建通过从早期版本继承的 DAC 编码器完成,这也是多语言覆盖扩大后质量仍能保持、而没有随着新增语言而下降的部分原因。

OuteTTS 入门

  1. 安装 Python 库。 运行 pip install outetts 即可获得核心接口;如果要专门通过 llama.cpp 使用 GGUF 模型,还需要先按照 llama-cpp-python 针对你所在平台提供的安装说明,手动安装这个库。
  2. 使用自动配置助手完成最简单的设置。 outetts.ModelConfig.auto_config(model=outetts.Models.VERSION_1_0_SIZE_1B, backend=outetts.Backend.LLAMACPP, quantization=outetts.LlamaCppQuantization.FP16) 可以处理模型选择和后端配置,无需手动管理路径。
  3. 需要指定文件路径时再手动配置。 手动创建 ModelConfig 时,既需要 model_path(指向下载好的 .gguf 文件),也需要 tokenizer_path(即使推理后端是 llama.cpp,它也始终基于 Transformers)——混淆这两者是常见的加载错误来源。
  4. 从专用仓库下载 GGUF 权重。 GGUF 格式检查点与标准 safetensors 权重分开托管——如果使用 llama.cpp 后端,请务必从专门带有 -GGUF 的仓库变体中下载。
  5. 需要 GPU 加速时设置 n_gpu_layers。 与任何基于 llama.cpp 的模型一样,将层卸载到 GPU 由这个标准参数控制,而不是通过 OuteTTS 专用设置完成。
  6. 让 outetts 库自动处理采样配置。 窗口化重复惩罚的要求既具体又会显著影响结果,因此除非有明确理由,否则应依赖该库内置的采样器设置,而不是自行重新实现生成参数。

获得更好结果的技巧

  • 默认选择 Llama-OuteTTS-1.0-1B,而不是旧版本。 鉴于最初 350M 版本记录在案的单词准确性问题,以及 0.2 和 0.3 之间不一致的提示格式,当前 1.0 版本是新项目更可靠的起点。
  • 相比自定义实现,更应信任 llama.cpp 的默认采样行为。 除非确实需要自行构建推理封装,否则从头实现时很容易把 llama.cpp 默认就能正确处理的窗口化重复惩罚做错。
  • 克隆时使用干净的 10 秒参考音频。 单样本克隆就是围绕这一特定时长设计的,因此一段时长大致相当且录制良好的音频,比过短或不必要地过长的样本更有可能带来可靠结果。
  • 在 1.0 版本中直接输入原始文本,不要自行预处理。 自动单词对齐是当前版本的一项明确功能,手动预先切分文本反而会妨碍模型已经可以在内部处理的能力。
  • 进行任何商业使用前检查许可证。 OuteTTS 的 GGUF 版本以 CC-BY-NC-SA-4.0 许可证分发——非商业、相同方式共享——与 MIT 或 Apache 2.0 这类宽松许可证的条款有显著区别。在基于它构建商业产品前,请仔细审阅这些条款。

OuteTTS 与其他轻量级及 LLM 相关 TTS 模型的对比

OuteTTSPiperKokoro-82M
核心方法基于音频 token 的纯语言建模VITS + ONNX + espeak-ngStyleTTS 2 + ISTFTNet
在 llama.cpp 上运行是,原生支持(GGUF)否否
声音克隆是,使用约 10 秒音频进行单样本克隆否,固定声音列表否,固定声音列表
语言2335+8
参数量350M–1B,取决于版本约 15M82M
许可证CC-BY-NC-SA-4.0(非商业)MIT(原版)/ GPL-3.0(当前分支)Apache 2.0

OuteTTS 的独特定位,是为已经使用 LLM 工具体系的人提供架构上的简洁性——如果你的基础设施已经围绕 llama.cpp 和 GGUF 模型搭建,新增语音生成时就不需要像大多数其他 TTS 方案那样另行部署一套技术栈。

常见问题

为什么大多数 TTS 模型无法使用 llama.cpp,而 OuteTTS 可以?

因为 OuteTTS 采用纯语言建模构建——它预测音频 token 的方式与标准 LLM 预测文本 token 相同,上面没有叠加专门的 TTS 架构。这意味着它可以兼容任何为运行 GGUF 格式语言模型而构建的工具,其中就包括 llama.cpp。

OuteTTS 进行声音克隆需要多少参考音频?

当前 Llama-OuteTTS-1.0-1B 版本进行单样本克隆大约需要 10 秒。

为什么我的自定义 OuteTTS 实现会生成损坏的音频?

最常见的原因是重复惩罚配置错误。OuteTTS 1.0 要求把这项惩罚应用于最近 64 个 token 的窗口,而不是整个上下文——llama.cpp 默认会正确处理,但自定义实现需要明确复现这种窗口化方式。

OuteTTS 可以免费用于商业用途吗?

未经审查条款不能直接这样做。OuteTTS 的 GGUF 版本使用 CC-BY-NC-SA-4.0 许可证分发,该许可证限制商业使用,并要求衍生作品采用相同方式共享——进行任何商业部署前,请查看当前条款。

我应该使用哪个 OuteTTS 版本?

Llama-OuteTTS-1.0-1B 是当前旗舰,也是新项目更可靠的选择;与早期的 0.1、0.2 和 0.3 版本相比,它提供自动单词对齐和更广泛的多语言支持。

在浏览器中把文字转换为语音

如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。

开始生成语音 →