mirror of
https://github.com/mudler/LocalAI.git
synced 2026-10-03 11:34:35 -04:00
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]