alt.freeweights.speech / Soprano-1.1-80M
From: ekwek <huggingface.co/ekwek>Newsgroups: alt.freeweights.speechSubject:

Soprano-1.1-80M

Date: 2026-11-15Commit: 27b5a5fSigned: 2DC28CC7B26A283B ✓

Text to speech model with 80M parameters. Safetensors weights, 284 MB in all. Published by ekwek under Apache-2.0.

80M params284MBSoprano-1.1-80Msafetensorspermissive
FactsParams80MSize284 MBFormatssafetensorsTasktext to speechLicenseApache-2.0From sourcepermissive
$ fw get ekwek/Soprano-1.1-80M
# manifest sha256 1c1d27cd6a3f… · 284 MB · 9 files
$ fw verify ./Soprano-1.1-80M ekwek/Soprano-1.1-80M
From sourceHosted (signed)ekwek/Soprano-1.1-80MLast check: 2026-11-15 03:22 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Works with

Overview

Size
284 MB
Weights
159 MB (safetensors)
Parameters
80M
Formats
safetensors
Task
text to speech
License
Apache-2.0 (permissive)
Files
9, each with a sha256
Publisher
ekwek
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:22 UTCpassed

Model card

From the publisher at commit 27b5a5f. Shown as plain text with links; images open at the publisher.

Soprano: Instant, Ultra‑Realistic Text‑to‑Speech#

Image: soprano-github

Alt Text Alt Text

📰 News#

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! Code | Demo


Overview#

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:

  • Up to 2000x real-time generation on GPU and 20x real-time on CPU
  • Lossless streaming with <15 ms latency on GPU, <250 ms on CPU
  • <1 GB memory usage with a compact 80M parameter architecture
  • Infinite generation length with automatic text splitting
  • Highly expressive, crystal clear audio generation at 32kHz
  • Widespread support for CUDA, CPU, and MPS devices on Windows, Linux, and Mac
  • Supports WebUI, CLI, and OpenAI-compatible endpoint for easy and production-ready inference

Installation#

Install with wheel (CUDA-only for now)#
pip install soprano-tts

To get the latest features, you can install from source instead.

Install from source (CUDA)#
git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .[lmdeploy]
Install from source (CPU/MPS)#
git clone https://github.com/ekwek1/soprano.git
cd soprano
pip install -e .
⚠️ Warning: Windows CUDA users#

On Windows with CUDA, pip will 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

Usage#

WebUI#

Start WebUI:

soprano-webui # hosted on http://127.0.0.1:7860 by default

Tip: 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
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

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.

OpenAI-compatible endpoint#

Start server:

uvicorn soprano.server:app --host 0.0.0.0 --port 8000

Use 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.wav

Note: Currently, this endpoint only supports nonstreaming output.

Python script#
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.

# Basic inference
out = model.infer("Soprano is an extremely lightweight text to speech model.") # can achieve 2000x real-time with sufficiently long input!

# Save output to a file
out = model.infer("Soprano is an extremely lightweight text to speech model.", "out.wav")

# Custom sampling parameters
out = model.infer(
    "Soprano is an extremely lightweight text to speech model.",
    temperature=0.3,
    top_p=0.95,
    repetition_penalty=1.2,
)


# Batched inference
out = model.infer_batch(["Soprano is an extremely lightweight text to speech model."] * 10) # can achieve 2000x real-time with sufficiently large input size!

# Save batch outputs to a directory
out = model.infer_batch(["Soprano is an extremely lightweight text to speech model."] * 10, "/dir")


# Streaming inference
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!

Usage tips:#

  • Soprano works best when each sentence is between 2 and 15 seconds long.
  • Although Soprano recognizes numbers and some special characters, it occasionally mispronounces them. Best results can be achieved by converting these into their phonetic form. (1+1 -> one plus one, etc)
  • If Soprano produces unsatisfactory results, you can easily regenerate it for a new, potentially better generation. You may also change the sampling settings for more varied results.
  • Avoid improper grammar such as not using contractions, multiple spaces, etc.

Limitations#

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.


License#

This project is licensed under the Apache-2.0 license. See LICENSE for details.

Files

9 files · 284 MBWeights 159 MB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 9 files with their sha256
FileSizesha256
.gitattributes1.52 KB11ad7efa24975ee4b0c3c3a38ed18737f0658a5f75a0a96787b576a78a023361
README.md6.60 KBff7688fe44cddaca6218920b962080af8789d3dc03721b3aef3d854a9f3b88b5
config.json1.12 KBb4e487a7a3bbee21fa0fc3c0faaaf404911e5f843058b3a10d1102170d4c2bb5
decoder.pth121 MB11245487e4588b0f4128d6b4c82035212bad42ffb26f36e059e9c7f861c1f8c4
generation_config.json111 B83e8d44a0cfae1f40801b6f96ba8090286cfd5f707ae7fa3ec64e6f68550828c
model.safetensors159 MB10e8c4223e14115688a1c8a1c5464ebb78826f17fb98ad459da9bce5471866ed
special_tokens_map.json28 Bc68f391a753fa4ff6df6890a62fd584eba54ee5d1773c5f388e80f521ebba942
tokenizer.json1.63 MBeb27ca6c9b55d2f880659a9619d6b8f9b9e6d8553d3ea424f5427788688d7286
tokenizer_config.json1.37 MB06e83fdb0bdf94eef83ebb08f30620c8ab640344babb4d405ff27befd1a4c270
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
27b5a5f5f5 pinned now2026-11-15 03:22 UTC9 files · 284 MB

Use it

$ fw get ekwek/Soprano-1.1-80M
# manifest sha256 1c1d27cd6a3f… · 284 MB · 9 files
$ fw verify ./Soprano-1.1-80M ekwek/Soprano-1.1-80M
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/ekwek/Soprano-1.1-80M.json --dir ./Soprano-1.1-80M $ python3 fw.py verify ./Soprano-1.1-80M ./ekwek__Soprano-1.1-80M.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ekwek/Soprano-1.1-80M --revision 27b5a5f5f541a1db3a51d6fd1b0fc7147b92cd01 --local-dir ./Soprano-1.1-80M

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
ff7688fe44cddaca6218920b962080af8789d3dc03721b3aef3d854a9f3b88b5
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: ekwek <huggingface.co/ekwek>Newsgroups: alt.freeweights.speechSubject: Soprano-1.1-80MDate: 2026-11-15Commit: 27b5a5fSigned: 2DC28CC7B26A283B ✓
Upstream
ekwek/Soprano-1.1-80M
Pinned commit
27b5a5f5f541a1db3a51d6fd1b0fc7147b92cd01
Manifest
Soprano-1.1-80M.json · .minisig
Manifest sha256
1c1d27cd6a3f76f1e0ffa9468741b6085f405543f924942e45d5ccd36500d8db
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:22 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/ekwek/Soprano-1.1-80M.json $ curl -O https://freeweights.allternit.com/manifests/ekwek/Soprano-1.1-80M.json.minisig $ minisign -Vm Soprano-1.1-80M.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

No related models in this catalog.Nothing here lists this model as its parent, and it names no parent.
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download ekwek/Soprano-1.1-80M
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. Soprano-1.1-80M.json. Provenance. Takedown history: none.
From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit