Skip to content

feat(app): add Sortformer diarizer mode for overlap-aware speaker diarization#78

Merged
pasrom merged 1 commit intomainfrom
feat/lseend-diarizer
Apr 1, 2026
Merged

feat(app): add Sortformer diarizer mode for overlap-aware speaker diarization#78
pasrom merged 1 commit intomainfrom
feat/lseend-diarizer

Conversation

@pasrom
Copy link
Copy Markdown
Owner

@pasrom pasrom commented Apr 1, 2026

Summary

  • Add Sortformer (NVIDIA) as alternative diarizer mode alongside existing Offline (Clustering)
  • Sortformer handles overlapping speech better than clustering-based diarization
  • Settings: segmented picker for diarizer mode when diarization is enabled
  • Default remains Offline (produces speaker embeddings for cross-meeting matching)

Inspired by @execsumo's work in #70.

Stacked on #77 (Vocab) → #76 (VAD)

Test plan

  • 4 unit tests (mode defaults, labels, FluidDiarizer init)
  • Build passes
  • Lint clean (0 violations)
  • Manual: switch to Sortformer in Settings, record a meeting, verify speaker labels

@github-actions github-actions bot added the enhancement New feature or request label Apr 1, 2026
Base automatically changed from feat/custom-vocabulary to main April 1, 2026 08:01
…rization

Add DiarizerMode enum (.offline / .sortformer) as an alternative to the
existing OfflineDiarizerManager. Sortformer uses NVIDIA's streaming
diarization model via FluidAudio, which handles overlapping speech
better than clustering-based offline diarization.

Changes:
- DiarizerMode enum in AppSettings with UserDefaults persistence
- FluidDiarizer refactored to support both modes with shared result
  conversion via buildResult()
- Sortformer path uses processComplete(audioFileURL:) which handles
  audio resampling internally
- Settings UI adds segmented picker when diarization is enabled
- AppState passes settings.diarizerMode to FluidDiarizer factory
- FluidAudio updated from 0.12.4 to 0.13.4 (required for Sortformer
  API compatibility)

Inspired by @execsumo's work in #70.
@pasrom pasrom force-pushed the feat/lseend-diarizer branch from bfd637f to c099952 Compare April 1, 2026 08:02
@pasrom pasrom merged commit 4e5440e into main Apr 1, 2026
8 of 14 checks passed
@pasrom pasrom deleted the feat/lseend-diarizer branch April 1, 2026 08:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant