NeuTTS Air:小到能装进树莓派的声音克隆模型
真正轻量、对 CPU 友好的 TTS 模型大多会做出一种明确取舍:用放弃声音克隆换取更小的体积,转而依赖一组固定的预设音色。Neuphonic 推出的 NeuTTS Air 拒绝了这种取舍。它的参数不足 10 亿,经过量化后可以在手机或树莓派上从容运行,同时仍能仅凭 3 秒参考音频克隆目标声音。Neuphonic 将这种组合描述为:首个在如此体量下实现即时克隆、真正逼真且完全在设备端运行的 TTS 语音语言模型。
NeuTTS Air 是什么?
NeuTTS Air 是 Neuphonic 于 2025 年 10 月发布的开源文本转语音模型,采用 Apache 2.0 许可证。它以基于 Qwen2 的语言模型为骨干(官方模型卡标注为 7.48 亿参数,通常称为“0.5B 级”),并搭配 Neuphonic 自研的神经音频编解码器 NeuCodec。整个设计的核心就是端侧部署——完全在本地硬件上运行,除非你主动选择发送,否则任何音频或文本都无需离开设备。
NeuTTS Air 的功能优势
- 仅需短至 3 秒的参考音频即可即时克隆声音,这在同等体量的模型中确实少见,因为其中大多数只能使用一组固定的预设音色。
- **GGUF 量化(Q4 和 Q8)**专为边缘部署而构建,通过
llama.cpp/llama-cpp-python在手机、笔记本电脑以及树莓派等单板计算机上运行。 - NeuCodec 是一种高效的音频编解码器,仅用一个码本、以 50Hz 帧率在 0.8kbps 下运行——正是这一设计选择,让模型在整体体量很小的情况下依然保持较高的输出质量。
- 在配置确实不高的硬件上实时生成;公开基准显示,它在 AMD Ryzen 9 CPU 上的吞吐量超过 2 倍实时速度,在 Samsung Galaxy A25 智能手机上也能达到接近实时的速度。
- 内置 Perth 水印,默认自动嵌入每个生成的音频文件,而不是一个可选设置。
- 以 Apache 2.0 完全开放,无需单独签订许可协议即可商用。
架构如何兼顾真实感与小体积
NeuTTS Air 基于 Qwen2 的骨干负责音素化(通过 espeak-ng 前端)、韵律建模,以及同时基于输入文本与参考说话人风格对输出进行条件控制——本质上,完整的语言和表达推理工作都被装进一个参数不足 10 亿的语言模型,而不是体量大得多的模型中。声学部分则由 NeuCodec 处理:它只用一个码本压缩音频,而不是依赖许多神经音频编解码器采用的多个堆叠码本,因此能实现非常高效的压缩(24kHz 输出下约为 0.8kbps),同时避免使用较少码本通常带来的质量损失。模型的 2,048 token 上下文窗口可覆盖约 30 秒音频,其中包括参考提示——用于短篇对话绰绰有余;但如果你计划制作长篇旁白而不是助手式对话,这确实是一项需要注意的限制。
NeuTTS Air 入门
- 安装 GGUF 扩展以进行量化 CPU 推理。
uv sync --extra gguf会拉取运行 Q4/Q8 GGUF 检查点所必需的llama-cpp-python;如果想使用 ONNX 解码器作为 GGUF 的替代选项或与其并用,也可以加入uv sync --extra onnx。 - 从 Hugging Face 选择骨干检查点。
neuphonic/neutts-air是全精度模型;neuphonic/neutts-air-q4-gguf和neuphonic/neutts-air-q8-gguf是专为边缘部署和 CPU 部署构建的量化版本。 - 准备参考音频片段及其转录文本。 NeuTTS Air 既需要干净的单声道参考 WAV 文件(文档建议的理想区间是 3 到 15 秒),也需要与之匹配的转录文本;自然、连续且停顿较少的语音,比经过截断或重度编辑的样本效果更好。
- 运行基础示例脚本以确认设置。
python -m examples.basic_example --input_text "your text here" --ref_audio samples/dave.wav --ref_text samples/dave.txt是文档给出的首次测试方式(需要根据所选检查点调整--backbone标志)。 - 直接使用 Python API 进行集成。 先执行
from neuttsair.neutts import NeuTTSAir,再使用选定的backbone_repo和codec_repo(标准编解码器选择是neuphonic/neucodec)完成实例化;对参考音频调用tts.encode_reference(),然后将结果与目标文本一起传入tts.infer()。 - 先查看 NeuTTS-Air 的 Hugging Face collection 中是否有其他骨干选项,不要认定默认检查点是唯一选择——其中记录了面向不同部署需求的多个变体。
获得更好效果的技巧
- 保持参考音频干净、自然,像真实对话一样。 停顿较少的自然独白或对话样本有助于模型准确捕捉语气;背景音乐、重叠语音或经过重度制作的音频会明显损害克隆质量。
- 规划内容时不要超出 2,048 token 的上下文窗口。 这一窗口包含参考提示在内约可覆盖 30 秒,因此应把较长内容拆成多次生成,而不是期望一次处理完整的长篇文本。
- 在资源最受限的设备上使用 Q4 GGUF,余量稍多时使用 Q8。 量化级别会直接用少量质量换取速度和更小的内存占用;应根据具体目标硬件选择,而不是默认使用某个级别。
- 如果连 7.48 亿参数也太大,可以考虑 NeuTTS Nano。 Neuphonic 这款更小的同系列模型共有 2.29 亿参数(1.2 亿活跃参数),面向比 NeuTTS Air 更受限的边缘部署环境。
NeuTTS Air 与其他轻量级端侧模型对比
| NeuTTS Air | Piper | Kokoro-82M | |
|---|---|---|---|
| 参数量 | 约 7.48 亿(基于 Qwen2) | 约 1,500 万 | 8,200 万 |
| 声音克隆 | 支持,约 3 秒参考音频 | 不支持,固定音色列表 | 不支持,固定音色列表 |
| 部署格式 | 通过 llama.cpp 运行 GGUF(Q4/Q8) | ONNX | PyTorch / ONNX |
| 在智能手机级硬件上实时运行 | 支持(有 Galaxy A25 基准记录) | 支持 | 并非主要设计目标 |
| 内置水印 | 支持(Perth) | 不支持 | 不支持 |
| 语言 | 英语(效果最强)、西班牙语、德语、法语 | 35+ | 8 |
| 许可证 | Apache 2.0 | MIT(原版)/ GPL-3.0(当前 fork) | Apache 2.0 |
在轻量级端侧模型这一类别中,NeuTTS Air 的特定定位,是成为少数能在如此体量下保留零样本声音克隆的选择之一——这个体量的大多数模型都会用彻底放弃克隆来换取更小的体积,而 NeuTTS Air 的设计目的正是避免这种取舍。
常见问题
NeuTTS Air 需要 GPU 吗?
不需要。它通过 GGUF 量化针对 CPU 推理进行了优化,可以在现代笔记本电脑或树莓派 4 等设备上良好运行;如果需要,也可以通过 llama-cpp-python 使用 CUDA 或 Metal 获得 GPU 支持,但 GPU 并非必需。
NeuTTS Air 进行声音克隆需要多少参考音频?
短至 3 秒即可。文档给出的实用理想区间是 3 到 15 秒干净的单声道音频,同时还需要与参考片段匹配的转录文本。
NeuTTS Air 可以免费商用吗?
可以。它采用 Apache 2.0 许可证,无需单独签订许可协议即可商用。
NeuTTS Air 为什么需要 espeak?
它使用 espeak-ng 在预处理阶段把输入文本转换成音素——这是语言模型骨干理解需要生成哪些声音的关键环节。
使用参考音频生成相似音色语音
如果你希望在浏览器中完成目标相近的声音克隆流程,可以使用 Echora 的声音克隆。上传你自己的声音或已获明确授权使用的参考音频,输入最多 5,000 个字符的新文本,即可生成与参考音色相近的新语音。