The Model Catalogue put the same decision on two axes: an Engines pane with TTS/ASR/LLM tabs and a Models pane with TTS/ASR/Dictation/Diarisation sections, dictation shown in both, plus storage stats, the HF token and the voice-preview toggle parked on the model list. Settings → Voice still carried Engines and Models entries that only pointed back here. Now the page reads top-down: a SetupSummary (speech, transcription, dictation, language model — engine, device, one status word, Change), the engine list for one family, and that family's downloadable weights under it (TTS under TTS; offline ASR, streaming dictation and diarisation under ASR; nothing for LLM, whose engines bring their own). One storage line points at Settings → Storage. - ModelStoreTab takes a `family` and scopes sections and the recommendation preset to it (scopeReco); stats strip, HF-token toolbar and previews panel removed from it. - Settings: Engines/Models categories and CataloguePointer removed; models directory → Storage, HF mirror → Network (both restart-flagged), voice previews → Storage. "Manage models" in disk usage opens the catalogue. - Store: openCatalogue takes a family (pane key tolerated, ignored); pendingCatalogueTab gone. - Engine matrix title is now the locale's plain "Engines". - i18n: catalogue.* summary keys in all 21 locales; pane/pointer keys dropped. - Docs: "Model Catalogue → Engines" is "Model Catalogue"; "→ Models" is "→ Downloaded weights".
4.9 KiB
VoiceStudio — dots.tts Engine
dots.tts (rednote-hilab) is a 2B fully-continuous autoregressive TTS, widely cited as one of the strongest open zero-shot voice-cloning models. It covers 24 languages, emits 48 kHz audio, and is released under Apache-2.0 (code + checkpoints).
It runs in its own subprocess and its own Python venv with
transformers==4.57.0, isolated from the VoiceStudio parent process which
pins transformers>=5.3 — the same isolation primitive used by
IndexTTS-2 and MOSS-TTS-v1.5.
Opt-in, and never a default. dots.tts is selected explicitly in Model Catalogue (or
OMNIVOICE_TTS_BACKEND=dots-tts). It is not part of the default install.
Platform support
- Linux / macOS only. dots.tts's upstream package declares Linux and macOS classifiers and has no Windows install path. On Windows the engine reports itself unavailable in Model Catalogue with a clear reason — run VoiceStudio under WSL2 or use a Linux/macOS host.
- No MPS. Upstream device selection is CUDA-or-CPU with no Metal branch, so on Apple Silicon the official package runs on CPU (slow but correct). A faster Apple-Silicon path exists only via community MLX ports, which VoiceStudio does not auto-wire.
- VRAM: ~9 GB checkpoint; a 12–16 GB CUDA GPU is the realistic target.
Install
dots.tts is not bundled (large checkpoint + conflicting transformers).
-
Clone the dots.tts repo on disk:
git clone https://github.com/rednote-hilab/dots.tts.git -
Install the editable package into a fresh venv with the upstream constraints. Use
uv pip install -e . -c constraints/recommended.txt— neveruv sync --all-extras, which would overwrite VoiceStudio's lock file withtransformers==4.57and break the parent process:cd dots.tts uv venv .venv uv pip install -e . -c constraints/recommended.txt -
The ~9 GB checkpoint downloads from HuggingFace on first synthesize. The parent forwards
HF_HOME/HF_HUB_CACHEto the sidecar so the cache is shared with the rest of VoiceStudio's downloads. -
Set
OMNIVOICE_DOTS_TTS_DIRto the repo root (the directory that containspyproject.tomlandconstraints/):# macOS / Linux echo 'export OMNIVOICE_DOTS_TTS_DIR=$HOME/code/dots.tts' >> ~/.zshrc source ~/.zshrc -
Restart VoiceStudio. dots.tts appears in Model Catalogue with
available: trueandisolation_mode: subprocess.
Venv resolution order
VoiceStudio probes for a usable dots.tts Python interpreter in this priority
order (see backend/engines/dots_tts/bootstrap.py):
${OMNIVOICE_DOTS_TTS_DIR}/.venv/— your existing clone's venv.backend/engines/dots_tts/.venv/— VoiceStudio's own venv, created on demand by step 3.- Lazy bootstrap —
uv venvthenuv pip install -e <clone> -c <clone>/constraints/recommended.txt. RequiresOMNIVOICE_DOTS_TTS_DIR.
Voice cloning
For best fidelity ("continuation cloning"), pass both a reference clip
(ref_audio) and its exact transcript (ref_text). A reference clip alone
does x-vector-only cloning. Keep the reference ~10 s. Upstream requires the
reference audio whenever a transcript is given, so VoiceStudio drops a stray
ref_text that arrives without ref_audio.
Optional env knobs
| Variable | Default | Purpose |
|---|---|---|
OMNIVOICE_DOTS_TTS_DIR |
— | Path to the dots.tts clone (required). |
OMNIVOICE_DOTS_TTS_MODEL |
rednote-hilab/dots.tts-soar |
Checkpoint override (-base, -soar, -mf). |
OMNIVOICE_DOTS_TTS_PRECISION |
bfloat16 (CUDA) / float32 (CPU) |
Inference precision. |
OMNIVOICE_DOTS_TTS_OPTIMIZE |
0 |
1 enables torch.compile (slower first call, faster after). |
Using the
dots.tts-mf(MeanFlow-distilled) checkpoint? It's tuned for 4 flow-matching steps — passnum_step=4.
Common errors
dots.tts is not supported on Windows ...
Upstream is Linux/macOS only. Use WSL2 or a Linux/macOS host.
dots.tts venv not found. Set OMNIVOICE_DOTS_TTS_DIR ...
You haven't pointed VoiceStudio at a dots.tts clone yet. Follow Install.
License
Apache-2.0 (code and checkpoints). See the upstream README.
dots.tts runs in a dedicated sidecar venv (it pins transformers==4.57,
which conflicts with the parent's transformers>=5.3). For why that adds
disk and how uv keeps the cost down, see
Engine venvs & disk usage.
The upstream runtime selects CUDA or CPU internally. Automatic precision follows
that selection: bfloat16 on CUDA, float32 otherwise, including XPU/NPU/MPS hosts
where this runtime executes on CPU. OMNIVOICE_DOTS_TTS_PRECISION remains an
explicit override. If the CUDA availability probe raises, the automatic precision
default stays float32; upstream remains responsible for its device selection.