Batch transcription with diarization, entirely offline. No API keys, no upload, no monthly bill, and no terms of service that quietly changed while you were asleep.
Every other tool hands you SPEAKER_00 and SPEAKER_01 inside
one recording, then cheerfully starts over at zero on the next one. That is fine for
one file and useless for four hundred, because the question you actually have is
never "how many people are in this clip". It is "where else does this person show
up".
So the first time a voice appears, it gets a durable identity. Every later file matches into it. Name it once and every transcript that person appears in says their name. There is no enrolment step and no sitting there recording reference clips of your coworkers like a weirdo. The corpus enrols itself.
You can still enrol somebody by hand, and for the handful of people who turn up in everything it is worth twenty seconds. Not because the automatic path needs help naming them, but because diarization sometimes splits one person into four speakers inside a single recording, and a rule that is otherwise correct then forces three of those to become new identities. Reference audio of a known person is the one piece of evidence strong enough to overrule that, and it is the difference between five speakers and ninety.
ffmpeg and ffprobe ship with the installer so there is nothing to go find.run walks folders recursively, so pointing it at the same tree twice is cheap rather than a second full pass.isolate = "auto" strips music and background with a UVR model, and measures the noise floor first so it skips clean speech instead of degrading it.scribble run D:\recordings # walk the tree, skip what is already done scribble speakers # everybody, with file count and speech time scribble name 12 "Will" # label one identity scribble enroll "Will" clips\will-*.wav scribble render # rewrite transcripts, transcribe nothing scribble dupes # identity pairs too close to call scribble recluster # regroup every voiceprint in one pass
dupes reports identity pairs that are close but not close enough to
merge without asking. Usually that is one person on two different devices, which no
threshold anywhere fixes, so you get a shortlist instead of a guess.
recluster exists because incremental matching assigns identities in
arrival order, so the same corpus ingested in a different order groups differently.
One pass removes that, and keeps every name you typed. Run it once after a big batch.
Once.
There is a GUI with the same functions and a live transcript view, if you would rather click.
auto. The biggest single win on broadcast, field recordings and anything with a music bed.large-v3, with large-v3-turbo giving most of the accuracy at several times the speed when there is a lot to get through.
Acceleration defaults to auto and is decided per stage from your actual
hardware. On a Ryzen 9 7950X with an RTX 4090, over five and a half minutes of audio,
vocal isolation takes 38 seconds on the GPU against 113 on the CPU, and Parakeet
transcription is a dead heat.
Diarization and voiceprints go the other way: 153 seconds on the GPU against 112 on
the CPU. Those are small models run over hundreds of short windows, so launch
overhead dominates and a 16 core part eats it alive. On a four core laptop the GPU
wins that stage comfortably, which is why auto counts your cores rather
than treating one benchmark as scripture.
scribble gpu install fetches it for you, about 1.2 GB into local app data. Until you do, those stages run on CPU and say so out loud.scribble.toml, next to the executable or in %LOCALAPPDATA%\Scribble. Unknown keys are rejected rather than ignored, so a typo stops the program with a message instead of quietly doing something else for an hour.Free and open source under the GPLv3. The documentation starts with what the four intimidating toolbar buttons do, in the order you will need them, because the person who built this still could not remember what Recluster did.