From 9835fd47eb893168090133420f885a09dfdefbb8 Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Mon, 27 Apr 2026 21:54:13 -0700 Subject: [PATCH] qwen3-tts: switch default to -CustomVoice variant; chatterbox: fix paralinguistic tag list in README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit qwen3-tts: deploy was using the -Base checkpoint, which sounds like the right one ("supports voice cloning") but the upstream wrapper's only synthesis path goes through generate_custom_voice. The -Base variant doesn't expose that, so every request — including ones with the wrapper's listed built-in voices like Ryan/Vivian — errored with "does not support generate_custom_voice". The -CustomVoice variant exposes both the cloning machinery and the preset voices, and is what the wrapper actually needs. The .env.example comments had the variant labels backward; fixed in this commit. Live host already updated to -CustomVoice via direct .env edit (model downloaded on container restart). chatterbox README listed [whisper] and [breath] as supported tags — those are in the base Chatterbox tag set but NOT in the Turbo set that's actually loaded. Replaced with the canonical 9-tag list verified against /api/model-info: laugh, chuckle, sigh, gasp, cough, clear throat, sniff, groan, shush. --- stacks/chatterbox/README.md | 12 ++++++++---- stacks/qwen3-tts/.env.example | 23 +++++++++++++++-------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/stacks/chatterbox/README.md b/stacks/chatterbox/README.md index c01b606..42bfbd1 100644 --- a/stacks/chatterbox/README.md +++ b/stacks/chatterbox/README.md @@ -30,12 +30,16 @@ real-time voice-agent use cases. - **Zero-shot voice cloning from ~5 s reference** (base Chatterbox needs ~10 s; Turbo cuts that in half). - **Native paralinguistic tags inline in text** — drop these into your - prompt and the model honors them: + prompt and the model honors them. Turbo ships exactly **9** tags + (verified against the live model at `/api/model-info`): ``` - [laugh] [cough] [sigh] [gasp] [whisper] [breath] + [laugh] [chuckle] [sigh] [gasp] [cough] [clear throat] [sniff] [groan] [shush] ``` - Different shape from IndexTTS-2's 8-vector emotion control: cleaner - for "say it like this" markup directly in the prompt. + Note: base Chatterbox docs list `[whisper]` and `[breath]` — those + are NOT in the Turbo set, ignore them or you'll burn time wondering + why nothing happens. Different shape from IndexTTS-2's 8-vector + emotion control: cleaner for "say it like this" markup directly in + the prompt. - **Mandatory PerTh watermark** on outputs (Resemble policy, cannot be disabled). Non-issue for internal use; mention it if you ever ship Chatterbox-generated audio externally. diff --git a/stacks/qwen3-tts/.env.example b/stacks/qwen3-tts/.env.example index 382c1ed..25f898c 100644 --- a/stacks/qwen3-tts/.env.example +++ b/stacks/qwen3-tts/.env.example @@ -26,15 +26,22 @@ QWEN3_TTS_BIND=0.0.0.0 QWEN3_TTS_BACKEND=official # Model variant. Upstream publishes four checkpoints on HF: -# Qwen/Qwen3-TTS-12Hz-1.7B-Base — flagship, supports voice cloning -# Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice — flagship, preset voices only -# Qwen/Qwen3-TTS-12Hz-0.6B-Base — lightweight, supports voice cloning -# Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice — lightweight, preset voices only +# Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice — flagship, supports voice cloning + preset voices (RECOMMENDED) +# Qwen/Qwen3-TTS-12Hz-1.7B-Base — flagship, foundation only — REJECTS all synthesis through this wrapper +# Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice — lightweight cloning-capable variant +# Qwen/Qwen3-TTS-12Hz-0.6B-Base — lightweight foundation only # 1.7B = ~6–8 GB VRAM bfloat16, best quality. 0.6B = ~2–3 GB. -# `voice="clone:"` only works with the -Base variants — that's -# what the upstream wrapper enforces. Earlier versions of this file -# had the variant labels reversed; corrected 2026-04-24. -QWEN3_TTS_MODEL=Qwen/Qwen3-TTS-12Hz-1.7B-Base +# +# IMPORTANT: the wrapper's only synthesis code path goes through the +# voice cloning machinery. The -Base variants do NOT expose +# generate_custom_voice; they error with "does not support +# generate_custom_voice" on every request, no matter what voice you +# specify (built-ins like Ryan, Vivian etc. count as custom voices). +# Use -CustomVoice. The Base variant is foundation-model territory +# that needs a different harness to be useful. +# (This file had the labels backwards through 2026-04-27 — fixed +# after the 2026-04-27 voice-fleet bench surfaced the failure mode.) +QWEN3_TTS_MODEL=Qwen/Qwen3-TTS-12Hz-1.7B-CustomVoice # Warm the model on container start so the first synthesis request # doesn't pay the load latency. Adds ~30 s to startup. Recommended.