Hear it on Hugging Face
Listen to separated speakers in our interactive demo.
Read the announcement
What’s new in Multi-Speaker Separation and the benchmarks behind it.
Create a Task
Setresidual: true if you also want the background (non-speech) audio as its own track.
numSpeakers to pin it:
Outputs
A completedmulti_voice target returns one file per detected speaker, plus a results file:
All tracks are time-aligned with the input and with each other; regions where a speaker is silent are silence in their track. Speaker numbering matches the
SPEAKER_XX labels in the results file, and is local to each task — SPEAKER_01 in one recording is not the same person as SPEAKER_01 in another.
The results file
Theresults output ties the audio tracks to a timeline:
results.json
results.diarization:
segments— one entry per speech segment, withspeaker(matching thespeaker_XXaudio outputs) andstart/endin seconds. The timeline is overlap-aware: segments from different speakers can overlap, asSPEAKER_01andSPEAKER_02do between 11.921s and 12.672s above. Nothing gets dropped when people talk at once.num_speakers— number of distinct speakers detected.scores.scores_per_frame.<metric>— per-frame confidence values in [0, 1].resolutionis the frame duration in seconds (0.02 = 20 ms); multiply a frame index by it to get the timestamp.scores.scores.<metric>— whole-file confidence values, averaged with weighting by speech activity so silence can’t inflate them.
Confidence scores
Every job returns two scores, at 20 ms resolution and for the whole file:separation_confidence— how confident the model is that it correctly pulled apart overlapping speech. Most informative where speakers actually overlap; on single-speaker frames it saturates near 1.0 unless there is bleed between tracks.assignment_confidence— how confident the model is that speech is attributed to the right speaker. Treat this as the diarization-quality signal.
- Only
separation_confidencedips — the labels are right, but the audio in that region likely carries bleed from another voice. Still fine for talk-time analytics; exclude it from per-speaker ASR, dubbing, or voice training data. - Only
assignment_confidencedips — the audio is clean, but it may be attributed to the wrong speaker. Fine for identity-independent uses like cleanup; risky for anything routed by speaker. - Both dip together — usually overlapping speech the model couldn’t untangle. Drop the region, or route it to review.
- Both high — trust the region. Note that silence also scores high, so check the region against
segmentsbefore treating a high score as confirmed clean speech.
Use cases
- Transcription and captioning — transcribe each speaker’s track independently so overlapping speech is never assigned to the wrong person or dropped. The diarization timeline is already aligned to the tracks, with no second pass to reconcile.
- Training data for speech AI — turn real multi-party recordings into speaker-isolated tracks with turn boundaries and quality scores attached, and filter a corpus by confidence instead of by ear.
- Post-production — get a track per person in unscripted TV, documentaries, and interviews, and edit one voice without touching another. The residual track keeps room tone and effects available.
- Voice and media pipelines — feed clean per-speaker audio into translation, dubbing, or analysis, on the phone-quality and far-field recordings those pipelines actually receive.
Speech Recovery
Denoise and de-reverb individual speaker stems after separation.
Dialogue Separation
Separate all speech from music and effects instead.