Soprano: Instant, Ultra-Realistic Text-to-Speech
2026.01.14 - Soprano-1.1-80M released! 95% fewer hallucinations and a 63% preference rate over Soprano-80M.
2026.01.13 - Soprano-Factory released! You can now train/fine-tune your own Soprano models.
2025.12.22 - Soprano-80M released! Model | Demo
Soprano is an ultra‑lightweight, on-device text‑to‑speech (TTS) model designed for expressive, high‑fidelity speech synthesis at unprecedented speed. Soprano was designed with the following features:
https://github.com/user-attachments/assets/525cf529-e79e-4368-809f-6be620852826
pip install soprano-tts[lmdeploy]pip install soprano-ttsTo get the latest features, you can install from source instead.
git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .[lmdeploy]git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .⚠️ Warning: Windows CUDA users
On Windows with CUDA,
pipwill install a CPU-only PyTorch build. To ensure CUDA support works as expected, reinstall PyTorch explicitly with the correct CUDA wheel after installing Soprano:pip uninstall -y torch pip install torch==2.8.0 --index-url https://download.pytorch.org/whl/cu128
Start WebUI:
soprano-webui # hosted on http://127.0.0.1:7860 by defaultTip: You can increase cache size and decoder batch size to increase inference speed at the cost of higher memory usage. For example:
soprano-webui --cache-size 1000 --decoder-batch-size 4
…Tip: You can increase cache size and decoder batch size to increase inference speed at the cost of higher memory usage.
Note: The CLI will reload the model every time it is called. As a result, inference speed will be slower than other methods.
Start server:
uvicorn soprano.server:app --host 0.0.0.0 --port 8000Use the endpoint like this:
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.wavNote: Currently, this endpoint only supports nonstreaming output.
from soprano import SopranoTTS
model = SopranoTTS(backend='auto', device='auto', cache_size_mb=100, decoder_batch_size=1)Tip: You can increase cache_size_mb and decoder_batch_size to increase inference speed at the cost of higher memory usage.
…https://github.com/KevinAHM/soprano-web-onnx
https://github.com/jo-nike/ComfyUI-SopranoTTS
https://github.com/SanDiegoDude/ComfyUI-Soprano-TTS
Soprano is currently English-only and does not support voice cloning. In addition, Soprano was trained on only 1,000 hours of audio (~100x less than other TTS models), so mispronunciation of uncommon words may occur. This is expected to diminish as Soprano is trained on more data.
Soprano uses and/or is inspired by the following projects:
This project is licensed under the Apache-2.0 license. See LICENSE for details.
No open issues yet, or sync has not completed.