OmniVoice-Studio / docs /features /diarization.md
LΓͺ Phi Nam
Deploy to HF Space
94004a2
|
Raw
History Blame Contribute Delete
2.87 kB

OmniVoice Studio β€” Speaker Diarization

Diarization splits a single audio stream into per-speaker tracks: who said what, and when. OmniVoice uses pyannote + WhisperX under the hood β€” the same stack the original WhisperX paper used.

What diarization buys you

  • Multi-speaker dubbing: each detected speaker gets its own voice clone in the target language.
  • Subtitle styling: speaker labels (SPEAKER_00:, SPEAKER_01:, …) on the exported SRT/VTT files.
  • Audio editing: per-speaker tracks in the timeline view.

License acceptance flow

The diarization model β€” pyannote/speaker-diarization-3.1 β€” is gated on HuggingFace. A valid HF token alone is not enough: you also need to accept the model's license once.

  1. Get a HF token if you don't have one β€” see docs/setup/huggingface-token.md.
  2. Set the token via Settings β†’ API Keys (or any of the other supported paths).
  3. While signed in to HuggingFace with the same account, visit:
  4. Restart the dub job. The first run downloads ~600 MB of model weights.

If you skip the license acceptance, the HF API returns 401 Unauthorized for the download β€” the same error class the in-app "Open docs for this error" button deeplinks to.

Fallback behaviour

When diarization is unavailable (no HF token, license not accepted, model download failed mid-run), OmniVoice's dub pipeline falls back to a silence-gap heuristic that splits speakers on long quiet stretches. You'll see a warning toast and the dub_core.py reason string surfaces in the job log:

  • "diarization_skipped:no_token" β€” no token resolved from the cascade.
  • "diarization_skipped:401" β€” token present but unauthorised on the gated model (license not accepted).
  • "diarization_skipped:network" β€” model download interrupted.

The heuristic is not as accurate as pyannote β€” speakers with similar pitch or rapid turn-taking conversation get merged β€” but it lets the dub finish end-to-end instead of erroring.

HF token requirement

Diarization is the one OmniVoice feature where a HF token is required, not just recommended. See docs/setup/huggingface-token.md for the three-source cascade and how the in-app Settings β†’ API Keys panel works.

Troubleshooting

  • HF 401 β†’ see troubleshooting.md#2-hf-401--pyannote-license-not-accepted.
  • Model download stuck β†’ check ~/.cache/huggingface/hub/models--pyannote--* size grows during the dub; if it stalls at 0 bytes, your token isn't being read β€” confirm in Settings β†’ API Keys that the active source has a green checkmark.