Skip to content

Releases: zeroweight-ai/ZeroTTS

v0.1.1 — PyPI page fixes

Choose a tag to compare

@zeroweightai zeroweightai released this 18 Aug 18:18

Packaging fix only — no code changes. The library, the CLI and the weights
are byte-for-byte what 0.1.0 shipped, so there is no reason to upgrade except a
readable project page.

Fixed

  • Broken banner and images on the PyPI project page. PyPI renders the
    README without any repository context, so relative paths like
    docs/assets/banner.png resolved against pypi.org and 404'd. Every image
    and in-repo link is now an absolute URL.
  • Blank sample players on PyPI. PyPI sanitizes the README against a tag
    allowlist that has no <video> in it, so the three sample clips rendered as
    empty table cells. Each player now carries a fallback .mp3 link inside it —
    GitHub still shows the video players, PyPI shows playable audio links.

Install

pip install --upgrade zerotts
zerotts say "Xin chào" --voice maichi -o out.wav

Full changelog: v0.1.0...v0.1.1

v0.1.0 - first public release

Choose a tag to compare

@zeroweightai zeroweightai released this 18 Aug 18:09

First public release of ZeroTTS — Vietnamese zero-shot text-to-speech that runs
on ONNX Runtime. No PyTorch, no GPU, faster than real time on a laptop CPU.

Why it's worth a look

4× fewer word errors than the next-best open Vietnamese system, and the
fastest of the four on CPU. Measured on
ZeroBench-TTS,
every system reading the same normalized text:

ZeroTTS OmniVoice XTTS-v2-vietnamse viXTTS
WER 0.56 % 2.12 % 7.27 % 8.61 %
Naturalness (UTMOS) ↑ 2.91 2.75 2.49 2.34
Dead air 0.029 s 0.386 s 0.568 s 0.215 s
RTF, CPU 0.50× 6.12× 0.71× 0.73×
Time to first audio, CPU ~70 ms ~34 s ~6.1 s ~5.1 s
Size 202 M params, 0.86 GB fp32, CPU 3.1 GB, GPU 1.9 GB, GPU 1.9 GB, GPU

The gap is widest in latency: the two XTTS fine-tunes also beat real time, but
need seconds before the first sample. ZeroTTS streams its first audio frame in
about 70 ms.

What's in it

  • Real-time streaming on CPU — RTF 0.50×, first chunk in ~70 ms, 8 threads,
    no GPU anywhere in the path.
  • Vietnamese text normalization built in — dates, times, numbers, %, @
    and abbreviations expanded to Vietnamese words before synthesis, so
    31/12/2026 and ZeroTTS are read the way a person would read them.
  • Code-switched English handled inside Vietnamese sentences.
  • Eight voice packs shipped with the weights: maichi, baotrang,
    kimoanh, hamy, giahuy, huuduc, quangminh, tiendat.
  • Long-form chunking — sentence-aware splitting with the audio joined back
    into one continuous take.
  • Three ways to run it — Python API, the zerotts CLI, a Gradio web UI
    (pip install "zerotts[webui]"), plus a fully in-browser WebAssembly demo
    under js/ that downloads the weights once and synthesizes locally.

Install

pip install zerotts
zerotts say "Xin chào" --voice maichi -o out.wav
from zerotts import ZeroTTS

tts = ZeroTTS.from_pretrained("zeroweight-ai/ZeroTTS")
audio = tts.synthesize("Xin chào các bạn, mình là ZeroTTS.", voice="maichi")
tts.save_audio(audio, "out.wav")

Weights are pulled from
🤗 zeroweight-ai/ZeroTTS on first
use. Python 3.9+, MIT licensed.

Known limits

  • Voice cloning from your own audio is not in this release. The voice
    encoder is not published — a voice here is a precomputed latent array shipped
    with the weights, so you get the eight packs above and no way to add a ninth.
    See docs/VOICES.md, or
    zeroweight.ai if you need latents for your own voice.
  • CFG above 1.0 doubles inference cost — it runs a second unconditional branch
    per frame. The default of 1.0 is what the benchmark numbers were produced
    with.
  • Unconditioned mode (no voice pack) does not keep a consistent speaker between
    segments; it is a quality check, not a usable voice.

Speech codec: MOSS-Audio-Tokenizer-Nano
by the OpenMOSS team (Apache-2.0) — see NOTICE.