Sopro – 轻量级文本转语音与零样本语音克隆
Sopro – 轻量级文本转语音与零样本语音克隆
Sopro 是一款紧凑、低成本的英语文本转语音模型,它采用扩张卷积网络(类似 WaveNet)以及轻量级交叉注意力层,取代了主导领域的庞大 Transformer 堆栈。该模型由 Samuel Vitorino 作为副项目开发,仅用一块 L40S GPU 进行训练,并以 Apache‑2.0 许可证发布。
Sopro 的显著优势
| 特性 | 重要性 |
|---|---|
| 169 M 参数 | 体积足够小,可在 M3 CPU 上平稳运行(RTF ≈ 0.25),同时提供可听质量 |
| 流式合成 | 适用于对话式 AI 与实时演示的实时生成 |
| 零样本语音克隆 | 仅凭 3–12 秒参考音频即可克隆新声音,无需微调 |
| CPU 快速生成 | 在 M3 基础模型上 30 秒音频约需 7.5 秒,适合边缘设备 |
| 交叉注意力 + 卷积 | 在保持性能的前提下,降低 Transformer 注意力的开销 |
Sopro 并非在所有指标上都处于行业前沿,但它证明了在有限硬件上可以构建可用的 TTS 系统,并将其开源以供社区使用。
安装与快速入门
从 PyPI 安装
pip install sopro
从仓库安装
git clone https://github.com/samuel-vitorino/sopro
cd sopro
pip install -e .
⚙️ 说明:在 Apple Silicon 上,你将受益于
torch==2.6.0并省略torchvision,可实现约 3 倍的加速。
命令行示例
soprotts \
--text "Sopro is a lightweight 169 million parameter text-to-speech model. Some of the main features are streaming, zero-shot voice cloning, and 0.25 real-time factor on the CPU." \
--ref_audio ref.wav \
--out out.wav
Python API – 非流式
from sopro import SoproTTS
# 加载模型
tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
wav = tts.synthesize(
"Hello! This is a non-streaming Sopro TTS example.",
ref_audio_path="ref.wav",
)
tts.save_wav("out.wav", wav)
Python API – 流式
import torch
from sopro import SoproTTS
tts = SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
chunks = []
for chunk in tts.stream(
"Hello! This is a streaming Sopro TTS example.",
ref_audio_path="ref.mp3",
):
chunks.append(chunk.cpu())
wav = torch.cat(chunks, dim=-1)
tts.save_wav("out_stream.wav", wav)
交互式演示
Sopro 附带轻量级 FastAPI 演示,您可以在本地或 Docker 中运行。
pip install -r demo/requirements.txt
uvicorn demo.server:app --host 0.0.0.0 --port 8000
或者使用 Docker:
docker build -t sopro-demo .
docker run --rm -p 8000:8000 sopro-demo
打开 http://localhost:8000 即可聆听克隆声音。
最佳实践建议
- 参考音频 – 选择清晰、安静、背景噪音最小的录音。3–12 秒足够。
- 参数调整 –
--style_strength用于控制 FiLM 的影响;提升可增强声音相似度。 - 停止头 – 对短句子,早停头可能失效;降低
--stop_threshold或--stop_patience可提升可靠性。 - 基于音素的文本 – 如可能,使用完整拼写而非缩写;模型能很好处理 “CPU”“TTS”,但复杂符号可能导致卡顿。
- 非流式优先 – 如需最高音频保真度,建议使用非流式 API;流式主要用于降低 UI 延迟。
未来工作 & 社区
- 扩展至更多语言 – 当前架构支持任何音素表示。
- 通过训练原始音频提升音频嵌入质量,而非预先标记的片段。
- 缓存卷积状态进一步加速重复合成。
- 发布完整训练流水线,鼓励社区贡献。
如果您觉得此项目有帮助,请考虑支持作者:https://buymeacoffee.com/samuelvitorino。
结论
Sopro 展示了在仅需少量资源的情况下,构建功能齐全、快速、开源 TTS 系统的可行性。无论你是在原型化语音助手、为可访问性生成解说,还是在探索声纹克隆研究,Sopro 都提供了一个实用、低成本的起点,能够在大多数现代 CPU 上轻松运行。
祝你克隆愉快!
原创文章:
查看原文