Model / Voice Management¶
AbstractVoice core is remote-first:
- OpenAI remote audio (default): no local model download in the base install.
- Piper (local): small ONNX voices downloaded/managed by
abstractvoice/adapters/tts_piper.pywhen you selecttts_engine="piper". - There is no legacy Coqui model management in core.
- Heavier engines (torch/transformers) are opt-in via extras (e.g.
abstractvoice[chroma],abstractvoice[audiodit],abstractvoice[omnivoice]).
What gets downloaded, and when?¶
Piper voices are stored as small ONNX files under:
~/.piper/models
Downloads are controlled by allow_downloads:
- Library default:
VoiceManager()uses OpenAI remote audio and does not download Piper models. - Local Piper:
VoiceManager(tts_engine="piper", allow_downloads=True)may download Piper models on-demand. -
REPL default:
python -m abstractvoice cliruns withallow_downloads=False(offline-first), so it will not download implicitly. -
Typical voice size: tens of MB per language
Opt-in engines (HF cache)¶
Some optional engines download weights via Hugging Face and cache under ~/.cache/huggingface by default:
- Chroma cloning:
python -m abstractvoice download --chroma(requiresabstractvoice[chroma]) - AudioDiT (LongCat-AudioDiT-1B):
python -m abstractvoice download --audiodit(requiresabstractvoice[audiodit]) - OmniVoice:
python -m abstractvoice download --omnivoice(requiresabstractvoice[omnivoice])
In offline-first mode (allow_downloads=False) these engines will not fetch missing weights implicitly.
Programmatic introspection¶
vm.list_available_models()returns a dict of known Piper voices and whether they are cached.vm.set_language("<lang>")loads the voice if cached; it will download only ifallow_downloads=True.
CLI¶
- Use
python -m abstractvoice cliand/voices modelsto view available Piper voices (and cache status)./setvoicestill works as a compatibility command. - Prefetch explicitly (offline-first):
python -m abstractvoice download --piper en