{
  "schema_version": 1,
  "family": "sortformer_diar_v2",
  "display_name": "Sortformer Diarization v2.1",
  "description": "NVIDIA Sortformer v2.1 streaming speaker diarization model with four speaker channels, AOSC state, stable arrival-order speaker identities, and bounded-context offline and streaming execution. The model has no published language whitelist: it was trained primarily on English speech, includes non-English meeting data such as AISHELL-4 and AliMeeting, and may degrade on other languages. The checkpoint is governed by the NVIDIA Open Model License and is local-use only until redistribution approval.",
  "category": "speech_analysis",
  "status": "community",
  "tasks": [
    "diar"
  ],
  "modes": [
    "offline",
    "streaming"
  ],
  "languages": [
    "multilingual"
  ],
  "capabilities": {
    "diar": [
      "speaker_turns"
    ]
  },
  "dependencies": [],
  "options": {
    "request": [
      {
        "name": "speaker_threshold",
        "type": "float",
        "description": "Speaker activity threshold used for turn decoding; default 0.5.",
        "required": false,
        "min": 0.0,
        "max": 1.0,
        "default": 0.5
      },
      {
        "name": "speaker_min_frames",
        "type": "int",
        "description": "Minimum decoded turn duration in 80 ms model frames; default 0.",
        "required": false,
        "min": 0,
        "default": 0
      },
      {
        "name": "speaker_pad_frames",
        "type": "int",
        "description": "Padding applied to decoded turns in model frames; default 0.",
        "required": false,
        "min": 0,
        "default": 0
      }
    ],
    "session": [
      {
        "name": "graph_arena_mb",
        "type": "int",
        "description": "Inference graph arena size in MiB; default 1024.",
        "required": false,
        "min": 1,
        "default": 1024
      },
      {
        "name": "weight_context_mb",
        "type": "int",
        "description": "Weight context size in MiB; default 1024.",
        "required": false,
        "min": 1,
        "default": 1024
      },
      {
        "name": "geometry",
        "type": "enum",
        "description": "Streaming geometry preset; default uses the checkpoint geometry.",
        "values": [
          "model",
          "streaming",
          "very_high_latency",
          "high_latency",
          "low_latency"
        ],
        "required": false,
        "default": "model"
      },
      {
        "name": "weight_type",
        "type": "enum",
        "description": "Default storage type for all model weights; default f32.",
        "preset": "weight_type_full",
        "required": false,
        "default": "f32"
      },
      {
        "name": "matmul_weight_type",
        "type": "enum",
        "description": "Matmul weight storage type; defaults to weight_type.",
        "preset": "weight_type_full",
        "required": false
      },
      {
        "name": "conv_weight_type",
        "type": "enum",
        "description": "Convolution weight storage type; defaults to weight_type.",
        "preset": "weight_type_conv",
        "required": false
      }
    ],
    "load": []
  },
  "runtime": {
    "tags": [
      "gguf",
      "stream"
    ]
  },
  "ui": {
    "recommended_package": "sortformer_diar_v2_1_f32_gguf_local",
    "tags": [
      "Diar",
      "Stream",
      "GGUF"
    ],
    "docs": [
      "docs/community_models/sortformer_diar_v2.md",
      "docs/speech_analysis.md",
      "docs/gguf.md"
    ]
  },
  "package_defaults": {
    "download": {
      "kind": "unsupported",
      "reason": "NVIDIA Open Model License checkpoint: convert or stage locally until redistribution approval is complete."
    }
  },
  "packages": [
    {
      "id": "sortformer_diar_v2_1_f32_local",
      "display_name": "Sortformer Diar v2.1 F32 local package",
      "format": "safetensors",
      "precision": "f32",
      "target_directory": "Sortformer-Diar-v2.1-local",
      "files": [
        "Sortformer-Diar-v2.1-local/config.json",
        "Sortformer-Diar-v2.1-local/processor_config.json",
        "Sortformer-Diar-v2.1-local/model.safetensors"
      ],
      "strip_prefix": "Sortformer-Diar-v2.1-local"
    },
    {
      "id": "sortformer_diar_v2_1_f32_gguf_local",
      "display_name": "Sortformer Diar v2.1 F32 GGUF local package",
      "default": true,
      "format": "gguf",
      "precision": "f32",
      "target_directory": "Sortformer-Diar-v2.1-local",
      "files": [
        "Sortformer-Diar-v2.1-local/sortformer-v2.1-f32.gguf"
      ],
      "strip_prefix": "Sortformer-Diar-v2.1-local"
    },
    {
      "id": "sortformer_diar_v2_1_f16_mixed_gguf_local",
      "display_name": "Sortformer Diar v2.1 mixed F16/F32 GGUF local package",
      "format": "gguf",
      "precision": "f16",
      "target_directory": "Sortformer-Diar-v2.1-local",
      "files": [
        "Sortformer-Diar-v2.1-local/sortformer-v2.1-f16-mixed.gguf"
      ],
      "strip_prefix": "Sortformer-Diar-v2.1-local"
    }
  ],
  "sources": [
    {
      "format": "gguf",
      "roots": {
        "model": ".",
        "weights": "$gguf"
      },
      "files": {
        "config": "model:config.json",
        "processor": "model:processor_config.json"
      },
      "tensors": {
        "weights": "weights:"
      }
    },
    {
      "format": "safetensors",
      "roots": {
        "model": "."
      },
      "files": {
        "config": "model:config.json",
        "processor": "model:processor_config.json"
      },
      "tensors": {
        "weights": "model:model.safetensors"
      }
    }
  ]
}
