feat(dots-tts): ship OpenAI-compatible dots.tts TTS stack on irv-ml1:8198

Thin FastAPI wrapper over DotsTtsRuntime (soar, optimize=True, RTF ~0.22),
serialized single-consumer; OpenAI /v1/audio/speech (stream + non-stream),
voices from the voices/ corpus derived set. Live + healthy alongside
chatterbox-fast on the 3090; nothing repointed. Dockerfile needs
build-essential (torch.compile/inductor JITs via gcc at runtime) + persisted
inductor cache. Remaining Phase-2: ratatoskr client cutover.
This commit is contained in:
vh
2026-08-10 01:07:37 -07:00
parent fca1a545f1
commit c8acf60449
6 changed files with 325 additions and 1 deletions
+27
View File
@@ -0,0 +1,27 @@
# dots-tts stack tunables. Copy to `.env` on irv-ml1 before deploying.
# ── image ────────────────────────────────────────────────────────────
DOTS_TAG=v1
# ── network ──────────────────────────────────────────────────────────
DOTS_BIND=0.0.0.0
DOTS_PORT=8198
# ── GPU ──────────────────────────────────────────────────────────────
# 0 = 3090 in Docker (PCI order), co-resident with chatterbox-fast. soar needs
# ~6GB; the 3090 has headroom with Zonos parked down.
DOTS_GPU_DEVICES=0
# ── model / inference ────────────────────────────────────────────────
DOTS_MODEL=dots-studio/dots.tts-soar
DOTS_DEFAULT_VOICE=donut
DOTS_NUM_STEPS=10 # 10 = full quality @ RTF ~0.22; lower = faster/rougher
DOTS_GUIDANCE_SCALE=1.2
# ── host mounts ──────────────────────────────────────────────────────
# HF cache holding the downloaded soar snapshot (~5GB). Reuse the burn-in cache.
DOTS_HFCACHE_DIR=/home/lkraven/dots-tts/hf_cache
# dots-derived voice references (derive.py dots -> derived/dots/<name>.{wav,txt}).
# Burn-in points at the corpus output directly; for a durable deploy, copy the
# derived set to /opt/docker/conf/dots-tts/voices and point here.
DOTS_VOICES_HOST_DIR=/home/lkraven/voice-corpus/derived/dots