Repository navigation
v0.9.0 - Speaker diarization & real segments 🗣️
What's new
Who spoke when. Parakeet can now do speaker diarization as an opt-in extra. It runs NVIDIA Nemotron-3-Diarization as a second ONNX model next to the main one, attributes every transcribed word to a speaker, and returns speaker-tagged turns. Off by default: enable it with -enable-diarization (or PARAKEET_ENABLE_DIARIZATION=true) and add diarize=true to a request. The model is bundled by make models and in the Docker images.
Real segments, real timestamps. verbose_json, srt and vtt used to return a single made-up segment spanning the whole file, with placeholder values and a duration guessed from the file size. They now return sentence-level segments whose start and end times come from the model's own decoding clock (80 ms granularity), plus an honest avg_logprob and compression_ratio. Subtitle formats emit one cue per segment. No VAD, no extra alignment model: this is timing the model was already computing and we were throwing away.
Long audio got a lot more accurate. We found the real reason long recordings transcribed worse than short clips: mel features were normalized once over the entire file, which skewed the numbers away from what the model expects and made it silently drop whole sentences in the middle of a window. Normalizing each window on its own fixes it. On a 7-minute English recording, word error rate fell from 5.4% to 3.4%, matching the model's own short-clip accuracy; Spanish and Portuguese improved as well. The default chunk window also moved from 300s to 60s (overlap stays 15s), putting it well clear of the model's single-pass limit.
A NeMo-faithful mel frontend. The filter bank now matches NVIDIA's NeMo preprocessing (Slaney filter bank, same pre-emphasis and normalization), closing a subtle drift that quietly hurt non-English languages.
How to use it
# speaker diarization (opt-in)
./parakeet -enable-diarization
# then add diarize=true to a request
# real segments come with verbose_json, srt and vtt
curl -F "file=@meeting.mp3" -F "response_format=verbose_json" \
http://localhost:5092/v1/audio/transcriptions