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 即可聆听克隆声音。


最佳实践建议

  1. 参考音频 – 选择清晰、安静、背景噪音最小的录音。3–12 秒足够。
  2. 参数调整--style_strength 用于控制 FiLM 的影响;提升可增强声音相似度。
  3. 停止头 – 对短句子,早停头可能失效;降低 --stop_threshold--stop_patience 可提升可靠性。
  4. 基于音素的文本 – 如可能,使用完整拼写而非缩写;模型能很好处理 “CPU”“TTS”,但复杂符号可能导致卡顿。
  5. 非流式优先 – 如需最高音频保真度,建议使用非流式 API;流式主要用于降低 UI 延迟。

未来工作 & 社区

  • 扩展至更多语言 – 当前架构支持任何音素表示。
  • 通过训练原始音频提升音频嵌入质量,而非预先标记的片段。
  • 缓存卷积状态进一步加速重复合成。
  • 发布完整训练流水线,鼓励社区贡献。

如果您觉得此项目有帮助,请考虑支持作者:https://buymeacoffee.com/samuelvitorino


结论

Sopro 展示了在仅需少量资源的情况下,构建功能齐全、快速、开源 TTS 系统的可行性。无论你是在原型化语音助手、为可访问性生成解说,还是在探索声纹克隆研究,Sopro 都提供了一个实用、低成本的起点,能够在大多数现代 CPU 上轻松运行。

祝你克隆愉快!

原创文章: 查看原文

分享本文