Model reference · open weights
diar_sortformer_4spk is an open-weight audio or speech model from NVIDIA. diar_sortformer_4spk-v1 (FP32) weighs 247 MB; the smallest configuration that runs it is RTX 3060 12 GB.
Summary of the nvidia/diar_sortformer_4spk-v1 model card, 2026-10-01
What it is
| Released by | NVIDIA |
|---|---|
| Released | 2024-12-09 |
| Parameters | 124M |
| VRAM | 247 MB for the weights |
What it runs on
| Card | One stream | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
A newer streaming Sortformer is available at huggingface.co/nvidia/diar_streaming_sortformer_4spk-v2.
img { display: inline; }
Sortformer[1] is a novel end-to-end neural model for speaker diarization, trained with unconventional objectives compared to existing end-to-end diarization models.
Sortformer resolves permutation problem in diarization following the arrival-time order of the speech segments from each speaker.
For documentation, deployment guides, enterprise-ready APIs, and the latest open models—including Nemotron and other cutting-edge speech, translation, and generative AI—visit the NVIDIA Developer Portal at developer.nvidia.com. Join the community to access tools, support, and resources to accelerate your development with NVIDIA’s NeMo, Riva, NIM, and foundation models.
What is Nemotron? NVIDIA Developer Nemotron NVIDIA Riva Speech NeMo Documentation
Sortformer consists of an L-size (18 layers) NeMo Encoder for Speech Tasks (NEST)[2] which is based on Fast-Conformer[3] encoder. Following that, an 18-layer Transformer[4] encoder with hidden size of 192, and two feedforward layers with 4 sigmoid outputs for each frame input at the top layer. More information can be found in the Sortformer paper[1].
To train, fine-tune or perform diarization with Sortformer, you will need to install NVIDIA NeMo[5]. We recommend you install it after you've installed Cython and latest PyTorch version.
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install git+https://github.com/NVIDIA/NeMo.git@main#egg=nemo_toolkit[asr]
The model is available for use in the NeMo Framework[5], and can be used as a pre-trained checkpoint for inference or for fine-tuning on another dataset.
from nemo.collections.asr.models import SortformerEncLabelModel
# load model from Hugging Face model card directly (You need a Hugging Face token)
diar_model = SortformerEncLabelModel.from_pretrained("nvidia/diar_sortformer_4spk-v1")
# If you have a downloaded model in "/path/to/diar_sortformer_4spk-v1.nemo", load model from a downloaded file
diar_model = SortformerEncLabelModel.restore_from(restore_path="/path/to/diar_sortformer_4spk-v1.nemo", map_location='cuda', strict=False)
# switch to inference mode
diar_model.eval()
Input to Sortformer can be an individual audio file:
audio_input="/path/to/multispeaker_audio1.wav"
or a list of paths to audio files:
audio_input=["/path/to/multispeaker_audio1.wav", "/path/to/multispeaker_audio2.wav"]
or a jsonl manifest file:
audio_input="/path/to/multispeaker_manifest.json"
where each line is a dictionary containing the following fields:
# Example of a line in `multispeaker_manifest.json`
{
"audio_filepath": "/path/to/multispeaker_audio1.wav", # path to the input audio file
"offset": 0, # offset (start) time of the input audio
"duration": 600, # duration of the audio, can be set to `null` if using NeMo main branch
}
{
"audio_filepath": "/path/to/multispeaker_audio2.wav",
"offset": 900,
"duration": 580,
}
To perform speaker diarization and get a list of speaker-marked speech segments in the format 'begin_seconds, end_seconds, speaker_index', simply use:
predicted_segments = diar_model.diarize(audio=audio_input, batch_size=1)
To obtain tensors of speaker activity probabilities, use:
predicted_segments, predicted_probs = diar_model.diarize(audio=audio_input, batch_size=1, include_tensor_outputs=True)
This model accepts single-channel (mono) audio sampled at 16,000 Hz.
The output of the model is a T x S matrix, where:
Sortformer diarizer models are trained on 8 nodes of 8×NVIDIA Tesla V100 GPUs. We use 90 second long training samples and batch size of 4. The model can be trained using this example script and base config.
To evaluate Sortformer diarizer and save diarization results in RTTM format, use the inference [example script](https://github.com/NVIDIA/NeMo/blob/main/examples/speaker_tasks/diarizat
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.
Benchmarks
As published on the model card: the maker's own numbers, not measured by AxForge.
| Task | Dataset | Metric | Score |
|---|---|---|---|
| Speaker Diarization | DIHARD3-eval | Test DER | 14.760 |
| Speaker Diarization | CALLHOME (NIST-SRE-2000 Disc8) | Test DER | 5.850 |
| Speaker Diarization | CALLHOME (NIST-SRE-2000 Disc8) | Test DER | 8.460 |
| Speaker Diarization | CALLHOME (NIST-SRE-2000 Disc8) | Test DER | 12.590 |
| Speaker Diarization | call_home_american_english_speech | Test DER | 6.860 |