ekwek1/soprano
GitHub: ekwek1/soprano
Soprano 是一款 80M 参数的超轻量级端侧文本转语音模型,以极低延迟和极小内存占用实现高保真英语语音合成。
Stars: 1341 | Forks: 115
# Soprano:即时、超逼真的文本转语音
[](https://huggingface.co/ekwek/Soprano-1.1-80M)
[](https://huggingface.co/spaces/ekwek/Soprano-TTS)
### 📰 最新消息
**2026.01.14 - [Soprano-1.1-80M](https://huggingface.co/ekwek/Soprano-1.1-80M) 已发布!幻觉减少了 95%,并且相比 Soprano-80M 偏好率提升了 63%。**
2026.01.13 - [Soprano-Factory](https://github.com/ekwek1/soprano-factory) 已发布!您现在可以训练/微调您自己的 Soprano 模型。
2025.12.22 - Soprano-80M 已发布 | [演示](https://huggingface.co/spaces/ekwek/Soprano-TTS)
## 概述
**Soprano** 是一款超轻量级的端侧文本转语音 (TTS) 模型,旨在以前所未有的速度实现富有表现力、高保真的语音合成。Soprano 在设计时具备以下特性:
- 在 CPU 上实现高达 **20 倍** 的实时生成速度,在 GPU 上实现高达 **2000 倍** 的实时生成速度
- **无损流式传输**,在 CPU 上的延迟 **<250 毫秒**,在 GPU 上的延迟 **<15 毫秒**
- 采用紧凑的 80M 参数架构,内存占用 **<1 GB**
- 支持自动文本切分,实现**无限长度生成**
- 具备极高的表现力,可生成 **32kHz** 的清晰音频
- 广泛支持在 Windows、Linux 和 Mac 上的 CUDA、CPU 和 MPS 设备
- 支持 OpenAI 兼容的 endpoint、ONNX、WebUI、CLI 和 ComfyUI,实现简单且可用于生产的推理
https://github.com/user-attachments/assets/525cf529-e79e-4368-809f-6be620852826
## 目录
- [安装](#installation)
- [用法](#usage)
- [WebUI](#webui)
- [CLI](#cli)
- [OpenAI 兼容的 endpoint](#openai-compatible-endpoint)
- [Python 脚本](#python-script)
- [使用技巧](#usage-tips)
- [路线图](#roadmap)
## 安装
### 通过 wheel 安装 (CUDA)
```
pip install soprano-tts[lmdeploy]
```
### 通过 wheel 安装 (CPU/MPS)
```
pip install soprano-tts
```
为了获取最新的功能,您可以选择从源码安装。
### 从源码安装 (CUDA)
```
git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .[lmdeploy]
```
### 从源码安装 (CPU/MPS)
```
git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .
```
## 用法
### WebUI
启动 WebUI:
```
soprano-webui # hosted on http://127.0.0.1:7860 by default
```
### CLI
```
soprano "Soprano is an extremely lightweight text to speech model."
optional arguments:
--output, -o Output audio file path (non-streaming only). Defaults to 'output.wav'
--model-path, -m Path to local model directory (optional)
--device, -d Device to use for inference. Supported: auto, cuda, cpu, mps. Defaults to 'auto'
--backend, -b Backend to use for inference. Supported: auto, transformers, lmdeploy. Defaults to 'auto'
--cache-size, -c Cache size in MB (for lmdeploy backend). Defaults to 100
--decoder-batch-size, -bs Decoder batch size. Defaults to 1
--streaming, -s Enable streaming playback to speakers
```
### OpenAI 兼容的 endpoint
启动服务器:
```
uvicorn soprano.server:app --host 0.0.0.0 --port 8000
```
像这样使用 endpoint:
```
curl http://localhost:8000/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"input": "Soprano is an extremely lightweight text to speech model."
}' \
--output speech.wav
```
### Python 脚本
```
from soprano import SopranoTTS
model = SopranoTTS(backend='auto', device='auto', cache_size_mb=100, decoder_batch_size=1)
```
```
# 基础推理
out = model.infer("Soprano is an extremely lightweight text to speech model.") # can achieve 2000x real-time with sufficiently long input!
# 将输出保存到文件
out = model.infer("Soprano is an extremely lightweight text to speech model.", "out.wav")
# 自定义 sampling 参数
out = model.infer(
"Soprano is an extremely lightweight text to speech model.",
temperature=0.3,
top_p=0.95,
repetition_penalty=1.2,
)
# 批量推理
out = model.infer_batch(["Soprano is an extremely lightweight text to speech model."] * 10) # can achieve 2000x real-time with sufficiently large input size!
# 将批量输出保存到目录
out = model.infer_batch(["Soprano is an extremely lightweight text to speech model."] * 10, "/dir")
# 流式推理
from soprano.utils.streaming import play_stream
stream = model.infer_stream("Soprano is an extremely lightweight text to speech model.", chunk_size=1)
play_stream(stream) # plays audio with <15 ms latency!
```
### 第三方工具
#### ONNX
https://github.com/KevinAHM/soprano-web-onnx
#### ComfyUI 节点
https://github.com/jo-nike/ComfyUI-SopranoTTS
https://github.com/SanDiegoDude/ComfyUI-Soprano-TTS
## 使用技巧:
* 在引用时,请使用双引号而不是单引号。
* 当每个句子的长度在 2 到 30 秒之间时,Soprano 的效果最好。
* 尽管 Soprano 能够识别数字和某些特殊字符,但偶尔也会出现发音错误。将这些内容转换为它们的发音形式(音标)可以获得最佳效果。(例如 1+1 -> one plus one 等)
* 如果 Soprano 生成了不满意的结果,您可以轻松地重新生成,以获得新的、可能更好的结果。您也可以更改采样设置以获取更多样化的结果。
## 路线图
* [x] 添加模型和推理代码
* [x] 无缝流式传输
* [x] 批量推理
* [x] 命令行界面 (CLI)
* [x] CPU 支持
* [x] 服务器 / API 推理
* [ ] ROCm 支持(参见 [#29](/../../issues/29))
* [ ] 额外的 LLM 后端
* [ ] 语音克隆
* [ ] 多语言支持
## 局限性
Soprano 目前仅支持英语,且不支持语音克隆。此外,Soprano 仅使用了 1,000 小时的音频进行训练(比其他 TTS 模型少约 100 倍),因此可能会出现生僻字发音错误的情况。随着 Soprano 在更多数据上进行训练,预计这种情况会逐渐减少。
## 许可证
本项目基于 **Apache-2.0** 许可证授权。有关详细信息,请参阅 `LICENSE`。
标签:CNCF毕业项目, 人工智能, 凭据扫描, 大模型推理, 文本转语音, 用户模式Hook绕过, 端侧推理, 系统调用监控, 语音合成, 逆向工具