666f7f31e0
dia: Nari Labs dialogue TTS (Dia 1.6B / Dia2-1B / Dia2-2B) via devnen/Dia-TTS-Server — OpenAI-compat, fills the multi-speaker dialogue-scene slot for skaldsong. Port 8200 on irv-ml1. zonos: Zyphra Zonos-v0.1 (Apache-2.0, 44kHz, emotion sliders) via the official Gradio interface. Audition surface only — no OpenAI-compat endpoint yet (needs the FastAPI fork to become skaldsong-pluggable). Port 8199 on irv-ml1. Both follow the chatterbox/fish-s2 convention: local image built from a pinned wrapper SHA via buildx git-context, .env-driven port/GPU, python healthcheck, homepage labels.
66 lines
2.8 KiB
Markdown
66 lines
2.8 KiB
Markdown
# Zonos
|
|
|
|
Zyphra's expressive multilingual open-weight TTS
|
|
([Zyphra/Zonos](https://github.com/Zyphra/Zonos)) — 44 kHz output,
|
|
zero-shot voice cloning, and explicit emotion/conditioning controls —
|
|
served via the **official repo's Gradio interface**.
|
|
|
|
Models ([`Zonos.from_pretrained()`](https://github.com/Zyphra/Zonos)):
|
|
|
|
| Variant | HF repo | Notes |
|
|
|---|---|---|
|
|
| transformer | [Zyphra/Zonos-v0.1-transformer](https://huggingface.co/Zyphra/Zonos-v0.1-transformer) | ~3.6 GB, no special kernels (default) |
|
|
| hybrid | [Zyphra/Zonos-v0.1-hybrid](https://huggingface.co/Zyphra/Zonos-v0.1-hybrid) | Mamba-SSM; needs Ampere+ GPU + extra build deps |
|
|
|
|
**Server:** irv-ml1 (Irvine, WireGuard-only)
|
|
**Port:** 8199 (container Gradio listens on 7860)
|
|
**GPUs:** pins to device 0 (RTX 3090) by default; ~6 GB VRAM
|
|
**Image:** `local/zonos:v1` — built locally from a pinned git SHA of the
|
|
upstream repo via docker buildx's git URL context
|
|
**Upstream:** [Zyphra/Zonos](https://github.com/Zyphra/Zonos) (Apache-2.0),
|
|
trained on 200k+ hours; multilingual EN/JA/ZH/FR/DE
|
|
|
|
## Why this stack exists
|
|
|
|
A different *control surface* from the rest of the bench: Zonos exposes
|
|
**emotion/conditioning sliders** plus pitch/rate conditioning and 44 kHz
|
|
output, where Chatterbox/Dia use inline tags and Fish uses
|
|
natural-language paralinguistic tags. Worth A/B-ing by ear against
|
|
Chatterbox-Turbo (the research that prompted this stack explicitly said
|
|
"benchmark Zonos against Chatterbox before choosing").
|
|
|
|
## ⚠️ Audition surface, not skaldsong-pluggable (yet)
|
|
|
|
The official repo ships a **Gradio WebUI + Python SDK only** — there is
|
|
**no OpenAI-compatible `/v1/audio/speech` endpoint**. So this stack is
|
|
for *auditioning quality*, not for wiring into skaldsong's engine
|
|
router as-is. To promote Zonos to a real engine slot we'd need either:
|
|
|
|
- the community FastAPI fork ([Zyphra/Zonos PR #73](https://github.com/Zyphra/Zonos/pull/73), adds REST + basic streaming), or
|
|
- a thin OpenAI-compat adapter in front of the Python SDK.
|
|
|
|
Both are a follow-up if Zonos earns a slot in the ear test.
|
|
|
|
## Deploy
|
|
|
|
```bash
|
|
# from this workstation (irv-ml1 is WG-only — routes via ana-wg):
|
|
scripts/deploy-stack.sh irv-ml1 zonos
|
|
# then on irv-ml1, first run builds the image from the pinned SHA:
|
|
# docker compose up -d --build
|
|
```
|
|
|
|
Open `http://10.100.79.3:8199/` for the Gradio UI. First boot pulls the
|
|
model (~3.6 GB) into `ZONOS_CACHE_DIR`; the 600 s `start_period` covers
|
|
it.
|
|
|
|
## Notes
|
|
|
|
- **Pin `ZONOS_SHA`** to a full 40-char commit before relying on this —
|
|
`.env.example` ships `main`, which is not reproducible.
|
|
- The upstream image bundles **espeak-ng** (required for Zonos's
|
|
phonemization) via its Dockerfile.
|
|
- `GRADIO_SERVER_NAME=0.0.0.0` is set so the in-container Gradio binds
|
|
all interfaces and the host port-map reaches it. If a future upstream
|
|
hardcodes `server_name`, the API fork above is the cleaner path.
|