Repository navigation
BMeet 0.6.0: speakers told apart by Nemotron 3 Diarization
Telling the speakers apart with NVIDIA's Nemotron 3 Diarization, on the NPU: far less speech under the wrong person, in Russian first of all.
Changed
- Who speaks when: NVIDIA's Nemotron 3 Diarization (September 2026, OpenMDW-1.1) replaces pyannote segmentation + clustered TitaNet fingerprints, still on the NPU. Measured on real recordings (
transcribe/tests/speakers_test.py):- Russian podcasts (4.1 h, 2-3 people): speech under the wrong person 8.1 % → 2.1 %.
- AMI meetings recorded by one microphone in the room (9 h, 3-4 people): 22.8 % → 8.4 %; diarization error rate 42.3 % → 11.0 %; the right number of people in 15 of 16 meetings instead of 4.
- Someone who says little: a phrase of about 5 s or more usually gets a voice of its own. Before, voices with under 15 s of speech were folded into others.
- Faster: ~16 s per hour of audio on the NPU instead of ~30 s.
- Remembered voices still use TitaNet fingerprints, so the voices you named and your own voice carry over.
- Install: the installer downloads the model (~400 MB) and
transcribe/prepare-diarizationrebuilds it for the NPU without PyTorch (~20 s, once). On the NPU it agrees with NVIDIA's reference code on 99.98 % of the 10 ms frames.NPU_DIARIZATION=pyannoteuses the way of before. - Up to 8 voices per track.
- One person as two voices: over a long recording Nemotron now and then opens a second voice for someone; voices whose fingerprints are at least 0.75 alike become one. That halved the speech under the wrong person on the Russian podcasts, to 2.1 %.
Fixed
- Their last word under You: a word the other side says just as you start talking, which your microphone picks up from the speakers, was kept in your line: the echo filter compares loudness, and you are loud there already. The same word at the same moment on both tracks is now theirs.
- Learning your own voice from long lines: only the middle 4 s of each of your lines counted, so meetings where Whisper joined your sentences into a few long lines could teach nothing (15 s needed). A long line now gives several 4 s pieces.
Tests
transcribe/tests/meeting_test.pyuses real people: four speakers of Russian podcasts (transcribed by GigaAM, as in a meeting) or four LibriSpeech readers, downloaded into the work folder. Every case comes out with 100 % of the words under the right label, in both languages. Nemotron often hears espeak's synthetic voices as one person, so--espeaknow checks only your label, the echo and muting.transcribe/tests/speakers_test.py: who speaks when on the Russian podcasts and (--ami) the AMI meetings.
Install or update:
curl -fsSL https://raw.githubusercontent.com/baakhoff/bmeet/main/install.sh | bashThe update downloads Nemotron 3 Diarization (~400 MB) once and builds it for the NPU (~20 s).