Top
Best
New

Posted by sebjones 2 days ago

Transcribe.cpp(workshop.cjpais.com)
762 points | 163 commentspage 4
luciana1u 2 days ago|
three separate people in this thread independently remembered Dragon NaturallySpeaking and I think that is the funniest possible review of the state of speech recognition in 2026
0xnyn 2 days ago||
handy has been invaluable in my workflow, and having a fast, local, c++-based transcription library with first-party ts bindings is incredibleee

tysm for shipping this, keep up the great work OP

l-albertovich 2 days ago||
Thanks CJ, you've put some pretty cool things out there!
SamPentz 2 days ago||
Is there a way to add speaker identification easily?
sipjca 2 days ago||
Hey! It’s actually in progress right now, probably will come this week :)
semiquaver 2 days ago||
That would be Diarize.cpp, not Transcribe.cpp.
vardalab 1 day ago||
One thing I find that's missing a lot or at least I haven't come across other than commercial offerings like AquaVoice is a decent injected technical vocabulary so that the initial transcript requires minimum cleanup afterwards. Because I mostly use these tools to essentially ramble at the command line with coding agents. So there's a lot of technical terms that don't translate well. Like OpenBao comes out as open bowel sometimes,lol. That necessitates significant cleanup prompt or background text available to the cleanup llm, usually in the form of screenshot or something that gets converted to text but that in turn requires good hw for speed to be almost imperceptible. For example m5 max turns cleanup into a noticeable delay while 5090 is decent.

Only way I have found that's relatively easy to inject technical vocab is to use whisper, but limited, I think to about 220 or so tokens. Whisper has sort of like a priming prompt where one can put in a bunch of technical words and it will try to recognize those. But again, that's limited to small number tokens. And that limits one use a relatively slow, by today's standards, whisper.cpp.

I benchmarked it across a bunch of different hardware that I have available, and Whisper gives decent performance as far as speed goes only on a pretty top-end GPU, such as a 5090 or 4070, like for example on Strix Halo, it's still relatively slow for longer transcriptions because I prefer just a stream of consciousness ramblings for minutes and then that being transcribed and cleaned up versus short sentences. So in that scenario something like 5090 really is good because the cleanup prompt runs fast using usually Qwen 3.6 MOE model. Whisper on 4070 itself is about 0.7 seconds for two or three minute transcription. So the total wait time for a three-minute transcription is roughly a second, or a little bit more than a second, so totally acceptable. But it does take decent hardware, and it grows to be double that on if running totally local. Well, in my case, it's all local, but it's my own hardware all over the place, but truly running on laptop, it's much faster using Parakeet, but then the cleanup is the bottleneck.

Anyway, it's just my experience messing around with this for the last year. I did start using AquaVoice, but their speed was exceptional, and tech vocab was exceptional, but they would have some annoying delays occasionally, and I didn't like paying the money and sending sensitive topics and screenshots into the cloud, and I had hardware, so my local solution is basically almost as good as commercial one. But I think they train their own model. So what I'm doing is I collect all the samples of my transcriptions, and I am slowly building my own data set that hopefully at some point when I get energy I will find some way to fine tune something.

eliasmocik 1 day ago|
[dead]
paweladamczuk 2 days ago||
I've been using this one for a week for local transcription, working pretty well so far
dostick 2 days ago||
Does this support filtering of “umm”,”err”, “ugh”, or that is nit yet possible with open source models?
sipjca 2 days ago|
Not in the library itself, it’s pure inference. Some models have this trained out of them anyhow. Otherwise this is a post processing task which is not really inference
dostick 2 days ago||
So it looks like something that app would be doing, or run another model over the output to smoothen out and remove these things?
sipjca 2 days ago||
Yep, could do simple things like literal regex or all the way up to LLM cleanup, tons of options
hackrmn 2 days ago||
Is transcription a form of _inference_ though? I mean I see the word being thrown around and I understand what it means (or at least I think I do) in context of LLMs doing the thing that they do -- intelligently predict the next token, but do speech-to-text models do that?
yorwba 2 days ago|
Speech-to-text models predict the next token of text from the preceding tokens of text and the current tokens of speech.
hackrmn 1 day ago||
Thanks, I did some learning and it fell more into place.
fenix1851 1 day ago||
thanks man! Been searching for solution like yours :)
bazzingadev 2 days ago|
Hey, thanks for this.
More comments...