Spaces:
Sleeping
Hugging Face Token Setup
OmniVoice uses a single HF token for every model download, license-gate
check, and whoami ping. This page covers the three places OmniVoice will
look for a token and the recommended path for v0.3+.
Three sources (cascade)
OmniVoice resolves the active HF token by walking three sources in priority
order β the first source that has a token and survives a live whoami
call wins:
- App β encrypted in OmniVoice's SQLite settings store. Set via the in-app Settings β API Keys panel.
- Env β
HF_TOKEN(or the legacyHUGGING_FACE_HUB_TOKEN) environment variable visible to the OmniVoice process. - HF CLI β the canonical
~/.cache/huggingface/tokenfile written byhuggingface-cli login.
The active source is surfaced live in Settings β API Keys: each row shows
set/unset, a masked preview (hf_β¦3jw), the whoami username + green check
when valid, and an "Active" badge on whichever source is currently
serving the cascade.
Setting via the app (recommended)
- Open Settings β API Keys.
- Paste your HF token (get one from huggingface.co/settings/tokens β the "read" scope is enough).
- Click Save. The token is encrypted at rest (Fernet symmetric AEAD,
key derived per-install from machine-id) and also written to the
canonical
huggingface_hubtoken location so subprocess engines pick it up automatically. - The row's
whoamiindicator flips green and the Active badge moves to "App".
Known limitation (honest disclosure): the encryption key is derived per-install from the machine identifier. If you copy
omnivoice_data/across machines, the token row insettingswill fail to decrypt on the new machine β the resolver logs a warning and falls back to the env / CLI source. Re-save the token on the new machine to re-encrypt with the new install's key.
Setting via environment variable (power users)
If you launch OmniVoice from a terminal or CI and prefer env-var management,
export HF_TOKEN from your shell's startup file:
# macOS (zsh β default since 10.15)
echo 'export HF_TOKEN=hf_yourtokenhere' >> ~/.zshrc && source ~/.zshrc
# Linux (bash)
echo 'export HF_TOKEN=hf_yourtokenhere' >> ~/.bashrc && source ~/.bashrc
Windows PowerShell β write to user-scope environment:
[Environment]::SetEnvironmentVariable("HF_TOKEN","hf_yourtokenhere","User")
That persists for new shells. Close and reopen PowerShell or your terminal to see it.
Don't use
setx.setx HF_TOKEN "hf_..."writes the variable but doesn't propagate to the current shell β a common source of "I set it but it's empty" bug reports. Use the in-app Settings β API Keys path or the[Environment]::SetEnvironmentVariableone-liner above.
Setting via huggingface-cli
If you already use the HuggingFace CLI:
pip install --upgrade huggingface_hub
huggingface-cli login
# paste token at the prompt
That writes to ~/.cache/huggingface/token. OmniVoice reads via
huggingface_hub.get_token() and picks it up automatically β you'll see the
HF CLI row in Settings β API Keys flip to "set".
Accepting model licenses
Some models need both a token and a license acceptance click before downloads work. Visit each page while signed in with the same HF account:
pyannote/speaker-diarization-3.1β required for diarization. See docs/features/diarization.md.pyannote/segmentation-3.0β required transitively by the above.IndexTeam/IndexTTS-2β required if you use IndexTTS for voice cloning.Supertone/supertonic-3β required if you enable the Supertonic-3 engine.
After clicking "Agree and access repository" on each page, restart any in-flight OmniVoice job (the gated check is cached for the lifetime of the process).
Troubleshooting
- HF 401 even though a token is set β visit the model's HuggingFace page and accept the license (see above). The token is fine; the license gate is separate.
- Token row stays red after Save β the
whoamicall failed. Check the token is valid at huggingface.co/settings/tokens and has at least the "read" scope. - Token didn't survive a reboot β open Settings β API Keys and check the App row. If it's empty, the SQLite store may have been wiped β re-save. If it's set but the active source is "Env" or "HF CLI", that's the cascade working as intended (App is highest priority).