🗣 NeuTTS:5.8k Stars,本地运行的 AI 语音合成,3 秒音频就能克隆你的声音
项目地址:neuphonic/neutts | ⭐ 5,800 Stars | 🛠 Python | 作者:Neuphonic
老实说,市面上的 TTS 方案要么收费(ElevenLabs)、要么质量不行、要么必须联网。NeuTTS 是 Neuphonic 开源的本地 TTS 模型合集,基于 LLM 骨干网络,语音自然、支持即时声音克隆、甚至能在树莓派上跑。
5.8k Stars,模型在 HuggingFace 上开源,Apache 2.0 协议。
一、模型规格
| 规格 | NeuTTS-Air | NeuTTS-Nano |
|------|-----------|-------------|
| 参数量(活跃) | ~360M | ~120M |
| 参数量(含嵌入) | ~552M | ~229M |
| 声音克隆 | ✅ | ✅ |
| 协议 | Apache 2.0 | NeuTTS Open License 1.0 |
| 语言 | 英语 | 英语、法语、德语、西班牙语 |
GGUF 量化版本(Q8、Q4)已发布,可直接用 llama.cpp 加载。
二、安装
# 基础安装
pip install neutts
# 全部依赖(含 onnxruntime + llama-cpp-python)
pip install neutts[all]
硬件加速编译(推荐,性能提升显著):
macOS Apple Silicon:
CMAKE_ARGS="-DGGML_METAL=OFF -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=Apple" \
pip install "neutts[llama]" --force-reinstall --no-cache-dir
Linux(OpenBLAS):
sudo apt-get install libopenblas-dev
CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS" \
pip install "neutts[llama]" --force-reinstall --no-cache-dir
Windows(PowerShell):
$env:CMAKE_ARGS="-DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS"
pip install "neutts[llama]" --force-reinstall --no-cache-dir
ONNX 解码器(可选,降低延迟):
pip install "neutts[onnx]"
三、快速上手
3.1 基础使用
from neutts import NeuTTS
import soundfile as sf
# 初始化 TTS
tts = NeuTTS(
backbone_repo="neuphonic/neutts-nano", # 模型
backbone_device="cpu",
codec_repo="neuphonic/neucodec", # 音频编解码器
codec_device="cpu"
)
# 参考音频(用于声音克隆)
ref_text = open("samples/jo.txt").read().strip()
ref_codes = tts.encode_reference("samples/jo.wav")
# 合成语音
input_text = "My name is Andy. I'm 25 and I just moved to London."
wav = tts.infer(input_text, ref_codes, ref_text)
# 保存
sf.write("output.wav", wav, 24000)
3.2 命令行合成
python -m examples.basic_example \
--input_text "My name is Andy. I'm 25 and I just moved to London." \
--ref_audio samples/jo.wav \
--ref_text samples/jo.txt
3.3 流式合成(边生成边播放)
pip install pyaudio
python -m examples.basic_streaming_example \
--input_text "My name is Andy. I'm 25 and I just moved to London." \
--ref_codes samples/jo.pt \
--ref_text samples/jo.txt
流式模式要求模型为 GGUF 格式,音频会分块生成并实时播放。
四、声音克隆
NeuTTS 的即时声音克隆只需要 3 秒参考音频。
# 预编码参考音频(降低推理延迟)
from neutts import NeuTTS
tts = NeuTTS(backbone_repo="neuphonic/neutts-nano")
ref_codes = tts.encode_reference("your-voice-sample.wav")
# 之后每次 infer 都用这个 ref_codes,不用重复编码
参考音频要求:
| 要求 | 说明 |
|------|------|
| 声道 | 单声道(Mono) |
| 采样率 | 16-44 kHz |
| 长度 | 3-15 秒 |
| 格式 | .wav |
| 背景 | 干净,无噪声 |
| 内容 | 自然连续的语音,像在说话不是读稿 |
项目自带参考音频样例:
| 语言 | 文件 |
|------|------|
| English | dave.wav, jo.wav |
| Spanish | mateo.wav |
| German | greta.wav |
| French | juliette.wav |
五、性能基准
Q4_0 量化版本的推理速度:
| 设备 | NeuTTS-Air | NeuTTS-Nano |
|------|-----------|-------------|
| Galaxy A25 5G (手机 CPU) | 20 tokens/s | 45 tokens/s |
| AMD Ryzen 9 HX 370 (笔记本 CPU) | 119 tokens/s | 221 tokens/s |
| iMac M4 16GB (Apple Silicon) | 111 tokens/s | 195 tokens/s |
| RTX 4090 (GPU) | 16,194 tokens/s | 19,268 tokens/s |
Galaxy A25 是中低端手机,45 tokens/s 意味着实时生成毫无压力。
六、降低延迟的关键配置
要在设备上获得最佳性能:
2. 预编码参考音频:tts.encode_reference() 提前跑,不要每次推理都编
3. 用 ONNX 编解码器:neuphonic/neucodec-onnx-decoder
# 最低延迟方案
tts = NeuTTS(
backbone_repo="neuphonic/neutts-nano-q4-gguf", # GGUF 量化
codec_repo="neuphonic/neucodec-onnx-decoder", # ONNX 解码器
backbone_device="cpu",
codec_device="cpu"
)
# 预编码参考
ref_codes = tts.encode_reference("samples/jo.wav")
# 推理
wav = tts.infer(input_text, ref_codes, ref_text)
七、技术架构
NeuTTS 的核心架构非常简单:
Text → LLM Backbone → Audio Codec → WAV
八、微调
NeuTTS 支持微调,脚本在 examples/finetune.py:
# 详细指导见 TRAINING.md
python examples/finetune.py
可以基于官方模型微调,定制特定说话风格或领域词汇。
九、已支持语言
| 模型 | 语言 |
|------|------|
| NeuTTS-Air | 英语 |
| NeuTTS-Nano | 英语 |
| NeuTTS-Nano-French | 法语 |
| NeuTTS-Nano-German | 德语 |
| NeuTTS-Nano-Spanish | 西班牙语 |
多语言合集 HuggingFace Space:neuphonic/neutts-nano-multilingual-collection
十、总结
如果你的项目需要 AI 语音合成但又不想依赖付费 API,NeuTTS 是目前本地 TTS 方案里质量和性能最均衡的选择。
标签:#TTS #语音合成 #AI #开源 #NeuTTS