Speaker Diarization and Voice ID
OpenASR treats speaker diarization and Voice ID as two related but separate stages:
- Diarization answers who spoke when inside one recording. Unknown people
receive session-relative labels such as
SPEAKER_00andSPEAKER_01. - Voice ID compares those speaker tracks with people you chose to enroll, so a later transcript can show a display name. It is a labeling convenience, not authentication or legal identity verification.
Both stages run locally by default.
Desktop: one switch for every local file model
Section titled “Desktop: one switch for every local file model”The Voice ID switch in file transcription works with every local ASR model. The app chooses the speaker source without exposing a second workflow:
- A model with native speaker tracks (currently MOSS) keeps those tracks.
- Every other ASR model uses OpenASR’s shared external diarization pipeline.
- ReDimNet2-B6 supplies the shared speaker-embedding space used for enrollment, cross-recording matching, and external diarization.
You can enable Voice ID before enrolling anyone. The transcript will still be split into anonymous speakers, and you can assign or create identities on the completed-transcript page. Future recordings can then reuse those names.
Voice ID is deliberately limited to local file transcription in Desktop. Desktop Dictation, Live Captions, and Remote Compute do not expose or enable it.
External diarization pipeline
Section titled “External diarization pipeline”For ASR models without native speaker tracks, OpenASR composes four independent components around the recognizer:
- Built-in FireRedVAD finds speech regions.
pyannote segmentation-3.0detects speaker activity, changes, and overlap.- ReDimNet2-B6 extracts speaker embeddings.
- Automatic clustering and overlap reconstruction map speakers back to the ASR timeline.
segmentation-3.0 is the permissively licensed baseline and default provider.
OpenASR also has an optional enhanced-provider path pinned to the FP16
DiariZen Large-s80-md-v2 package, but it is not currently offered for
download in the public catalog. If it is offered later, its CC BY-NC 4.0
weights will require a separate, explicit acknowledgement that they are for
personal, non-commercial use; OpenASR will never download them automatically.
After an explicitly installed and enabled package is present, the Auto policy
selects it automatically. Disabling or removing it deliberately returns to
segmentation-3.0; an invalid installed DiariZen package fails the Voice ID job
instead of silently changing providers.
The selected ASR model remains independent of this pipeline. Marketplace cards that say Built-in speaker separation identify native one-pass speaker tracks; they do not limit which local file models can use Voice ID.
CLI diarization
Section titled “CLI diarization”The open-core CLI exposes anonymous diarization through --diarize:
openasr transcribe --diarize recording.wavopenasr live --diarizeFor offline file transcription, an exact cluster count can be supplied when it is known:
openasr transcribe --diarize --speakers 3 recording.wav--speakers requires --diarize and is not available on live. Required
capability packs must be installed or explicitly approved for installation. In
--offline mode, or when a required pack/provider is unavailable, OpenASR
fails closed rather than inventing speaker labels.
The CLI does not have an openasr speaker enroll command. Cross-recording
identity management is exposed through the local server’s operator-only Voice
ID API and through the Desktop product flow.
Enrollment and storage
Section titled “Enrollment and storage”One enrollment sample must contain at least 10 seconds of effective speech.
Desktop and the from-audio API routes accept common source formats through
the normal local conversion path; the source media is only temporary.
OpenASR stores embeddings, consent records, and identity metadata in SQLite at
$OPENASR_HOME/diarize/voice-id.db. Set OPENASR_VOICE_ID_DB to override the
path. Raw enrollment audio is not persisted in the Voice ID store.
An enrolled person is named only when the available speech clears the matching
evidence gates. Otherwise the transcript safely retains its anonymous
SPEAKER_NN label.
Server API
Section titled “Server API”All routes below are operator-only when pairing authentication is active. Paired Remote Compute device credentials cannot read or mutate the operator’s Voice ID data.
| Method | Path | Purpose |
|---|---|---|
GET, POST | /v1/voice-id/persons | List people or enroll from prepared clips |
GET, PATCH, DELETE | /v1/voice-id/persons/{person_id} | Read, edit, or delete a person |
POST | /v1/voice-id/persons/from-audio | Enroll from common source audio |
POST | /v1/voice-id/persons/{person_id}/samples | Add a prepared sample |
POST | /v1/voice-id/persons/{person_id}/samples/from-audio | Add a sample from common source audio |
POST | /v1/voice-id/persons/{person_id}/consent/revoke | Revoke consent and disable matching |
PATCH, DELETE | /v1/voice-id/samples/{sample_id} | Rename or remove one sample |
POST | /v1/voice-id/export | Export Voice ID metadata |
PUT | /v1/history/{id}/speaker-assignments | Save reviewed speaker assignments |
See Server API for the full endpoint table and authentication model, and Live transcription for the separate anonymous CLI live-diarization surface.
Privacy and license boundaries
Section titled “Privacy and license boundaries”- Processing and matching run locally by default; there is no telemetry.
- Raw enrollment audio is not retained in the Voice ID database.
- Model downloads are explicit and use the signed catalog.
- DiariZen’s non-commercial license boundary is independent from the
permissive
segmentation-3.0default. - Voice ID must not be used as authentication, access control, or proof of identity.