Alkd/Sortformer-Diarization-CoreML
24
Sortformer Diarization (CoreML)
CoreML port of NVIDIA Sortformer for end-to-end streaming speaker diarization on Apple Silicon.
Runs on the Neural Engine via CoreML. No separate embedding extraction or clustering — the model directly predicts per-frame speaker activity for up to 4 speakers.
Model Details
- Architecture: Sortformer (Sort Loss + 17-layer FastConformer encoder + 18-layer Transformer)
- Base model:
nvidia/diar_streaming_sortformer_4spk-v2.1(117M params) - Task: Speaker diarization (up to 4 speakers)
- Input: 128-dim log-mel features, streamed in chunks
- Output: Per-frame speaker activity probabilities (sigmoid)
- Format: CoreML
.mlmodelc(compiled pipeline, 2 sub-models) - Size: ~230 MB
Streaming Configuration
Input/Output Shapes
Inputs:
Outputs:
Usage
Used by speech-swift for speaker diarization:
audio diarize meeting.wav --engine sortformerlet diarizer = try await SortformerDiarizer.fromPretrained()
let result = diarizer.diarize(audio: samples, sampleRate: 16000)
for segment in result.segments {
print("Speaker \(segment.speakerId): \(segment.startTime)s - \(segment.endTime)s")
}Pipeline Architecture
The model is a CoreML pipeline with two sub-models:
- PreEncoder (model0) — Runs
pre_encodeon the mel chunk, concatenates with speaker cache and FIFO state - Head (model1) — Full FastConformer encoder + Transformer + sigmoid speaker heads
State management (FIFO rotation, speaker cache compression) is handled in Swift outside the model.
License
CC-BY-4.0
