Files
LocalAI/docs/content/reference
Ettore Di Giacinto 86565706c2 feat(parakeet-cpp): add speaker diarization with Nemotron-3-Diarization
parakeet.cpp now runs NVIDIA Nemotron-3-Diarization (Sortformer, up to 8
speakers), matched against NeMo. This wires it into the backend:

- A diarization GGUF loads as its own model and answers Diarize. The
  transcription RPCs return FailedPrecondition on it.
- An ASR model takes a diarization GGUF through the diar_model option,
  the same key nemo-speech-cpp uses. Transcript segments then carry
  their speaker and split at speaker turns; the request's diarize flag
  turns it off. Diarize with include_text fills each segment with the
  words its speaker said.

The backend tells the two apart from the GGUF's parakeet.arch key. Word
to speaker assignment follows parakeet.cpp's own merge rule (largest
overlap, else the nearest segment within 0.5 s), so the labels match the
library's speaker-attributed ASR. Speaker count, clustering and
segment-duration request fields have no Sortformer equivalent and are
logged as ignored.

parakeet_capi_diarize_pcm is probed with Dlsym like the other optional
entry points, so an older libparakeet.so still loads and reports
diarization as unavailable. The pin moves to parakeet.cpp 238057c,
which includes the diarization C-API (ABI 7).

Assisted-by: Claude:claude-opus-5-5 [Claude Code]
2026-09-28 06:51:19 +00:00
..