An hour of audio transcribed in about 13s on MacBook Air
212 points by amrrs 4 hours ago | 52 comments

Shershah1024 2 hours ago
Hi all. I am Shahir. This was my experiment. First of all - Thanks to whoever posted this on HN. It came as a surprise.

Just to clarify - This started as just an experiment to see if we can use the fact that text and audio share a vector space in Embedding Gemma 2 to convert audio to text. Had to hack around a few things, but, it worked. Speed was just a side benefit. Was not aiming for it.

The accuracy is good, but not in the range of cloud models, but decent enough for everyday use, and this is just a couple of days work. The WER can improve a lot with more training on varied data. Will try that next.

I will opensource the whole thing soon. Might need a few days though. Also, releasing the TTS version for this soon.

Happy to answer any questions you have.

reply
xnx 27 minutes ago
Cool experiment. It will be amazing if this can match the WER of the best open weight models at better speed.

People aren't paying enough attention to how great EmbeddingGemma 2 and Gemma 4 are.

reply
cabarltos 33 minutes ago
Thanks for putting this out there!
reply
prodigycorp 41 minutes ago
can you turn this into a decision model
reply
drakythe 38 minutes ago
What would a decision model add to and audio transcriber?
reply
sbdaman 28 minutes ago
Maybe it's just a COVID time blending together effect but it still blows my mind how quickly we went from "automatic audio transcriptions are not even worth having on" to "an hour of audio transcribed in 13s locally."

Pre-pandemic it seemed like even the very best in class auto-transcription features were just unusably bad. I guess that was like 7 years years ago though.

reply
gambiting 6 minutes ago
I'm just waiting for someone to tell the YouTube team. Hopefully 10 more years and someone over there will realize it's a thing.
reply
f6v 25 minutes ago
[dead]
reply
saaaaaam 2 hours ago
I recently swapped to using Parakeet v3 on my old M1 Macbook Air, using MacWhisper. It was so fast I thought it had failed. As in, by the time I clicked "transcribe" and looked at my screen again a few seconds later the transcript had finished. Absolutely insanely fast.
reply
llimllib 3 hours ago
Apple's on-device transcription model is about 3x slower than their reported results on my more powerful computer, with a similar error rate in my test (which I consider pretty good results)

I'll test theirs too if I get around to it

Here's a sample CLI wrapping the apple model and providing a simple benchmark: https://github.com/llimllib/transcribe

update: doesn't seem like they provide their model and I don't feel like trying to dig it out of their app bundle, so I'm not going to test this one

reply
s3p 2 hours ago
Is it even worth using apple's? Maybe they have improved it but when they first started using it to transcribe voice memos it was laughably bad (in my experience). I defaulted to whisper.cpp
reply
ChrisMarshallNY 6 minutes ago
I suspect Apple's strengths are in multi-language support.

I use their on-device translation in my apps. Works pretty well. ChatGPT's context-aware translation is better, but it's not on-device.

reply
llimllib 2 hours ago
apple's is 5x faster than `large-v3-turbo` with whisper.cpp and in my test had somewhat worse performance, so it's a tradeoff
reply
bigtex 2 hours ago
With MacWhisper you can select the Apple models, it took almost 4x as long to transcribe the same file versus this software and MacWhisper/Parakeet3.
reply
llimllib 59 minutes ago
interesting! I only tested against Parakeet v2 because my agent suggested it would be faster for English transcription (v3 is multilingual but somewhat slower, it suggested)

On my bench, parakeet-tdt-0.6b-v2 is 2x slower

I wonder if you're using different Apple models when you go through that app? I don't know

reply
bigtex 2 hours ago
I tested a 33 minute local audio only file on a M4 Mac Mini with 24GB of Ram and it took 6.75 seconds to transcribe it using this software. Using MacWhisper/Parakeet3 it was about 7.5 secs using a stopwatch.
reply
fdb 3 hours ago
Is it open source? They mention something about the Apache License but I can't seem to find a link to GitHub or something.
reply
cstever 3 hours ago
I only see that EmbeddingGemma 2 is Apache 2.

"EmbeddingGemma 2 is made by Google DeepMind and released under Apache 2.0. This is an independent project, not affiliated with or endorsed by Google."

reply
ghboo0927 2 hours ago
The reference to Apache 2.0 on the page refers to Google's base model, not this app. Based on the page alone, the app is free, but the source code is not open-source.
reply
samuelbalogh 2 hours ago
Fantastic! Any plans to support other languages?
reply
Shershah1024 60 minutes ago
Yes. Planning to train a multilingual reader. Have not done a prototype yet.Will do one once I have the right dataset
reply
samuelbalogh 54 minutes ago
Awesome work, thank you!
reply
alberth 3 hours ago
As someone who knows nothing on how this works, does this mean they have to pay the audio at 200x playback speed to transcribe this fast.

Or is there another approach?

reply
treyd 3 hours ago
It's not being played through a desktop audio stack, they're operating on the waveform decoded from the audio file. There's no constraints relative to the "natural speed" of the source, just like for video transcoding, it's limited by compute.
reply
radlad 2 hours ago
Yes but... Frame rate matters with video, which is arguably the video's speed.
reply
sorou 3 hours ago
during transcription, nothing is actually "playing" the file in the way a human would to listen to it. the audio is stored as a sequence of bytes representing the amplitude of the physical sound waves over time (the recording device measures, or "samples", the amount that its microphone is vibrating and records that amount, some tens of thousands of times per second) with some metadata and compression applied so that other software knows how to interpret the bytes correctly. this can be given to an audio program to convert the bytes back to physical sound waves using your speakers, but it's just bytes at the end of the day, so any software that can read bytes out of the file can do so at whatever speed it wants, regardless of how long the actual recording is.

so you have a file containing bytes representing the sound wave, and you have existing recordings (read: sound waves represented as sequences of bytes) of people speaking in different languages and contests, and you can feed all those existing recordings into a model along with corresponding transcriptions, and you can get a model out which can identify patterns in recordings of people speaking to then go backwards and see a pattern of sound waves and correctly associate it with a specific token, no need to play anything back. pauses, stutters, etc. are themselves patterns of sound waves that can be identified and worked around to identify just the meaningful parts of speech.

in principle, you could probably learn to do this too, by sitting down for hundreds of hours meticulously starting at waveforms, and this is, very roughly, what signal analysts do: look at waveforms and try to identify patterns. ai just leverages this principle to turn mundane speech into text.

reply
cheschire 3 hours ago
Probably significant parallelism. Split the audio into a lot of slightly overlapping portions to ensure the transitions between words are caught. I’m sure there’s some relatively simple ways to ensure you don’t double up on words.
reply
drob518 3 hours ago
Yea, I was wondering how they dealt with word boundaries and different word audio lengths generally (short and long). Your point about parallelism is interesting. Doing what they say they are doing, this should be ridiculously parallel, possibly with a reduce step at the end to remove redundant words if their slicing algorithm allows for that to happen. But yea, extremely parallel.
reply
satvikpendem 2 hours ago
No more than an AI media generator creating the media in realtime.
reply
yaanfpv 2 hours ago
I think this seems to target English only I believe. Pretty good but thinking os using some of these techniques on our multi-lingual ASR models !
reply
Shershah1024 58 minutes ago
Only English for now. I dont see any roadblocks for at least the major European Languages(Not sure about German though with their compound words)
reply
lukko 3 hours ago
Interesting... is it overkill to use a multimodal model like this on just audio? Could the model size be decreased dramatically, or does the multimodality help the accuracy and speed in some way?
reply
sd9 2 hours ago
Multimodality seems to just help with everything
reply
coldtea 3 hours ago
Correctly transcribing requires context too, no?
reply
ranger_danger 2 hours ago
I suppose it depends on the words in question... language knowledge and general world knowledge may not always both be necessary to transcribe accurately.
reply
amelius 2 hours ago
Sounds great if you could use it as a server. Otherwise, why would you want this?
reply
etienne_l 2 hours ago
[dead]
reply
martianvoid 3 hours ago
Pretty cool application of an embedding model
reply
chronogram 3 hours ago
What about the quality of the transcription?
reply
walrus01 3 hours ago
They say its word error rate is about 5%, so not great. Interesting as a proof of concept. The model this is based on is REALLY tiny.
reply
koolba 2 hours ago
Too bad the errors for things like this are not truly independent.

Otherwise could run two passes to get down to .25% or three passes to .0125%. Or four passes to .000625%!

That’d be .02 seconds of error per hour!

reply
robotswantdata 3 hours ago
WER is not good enough for professional use, fine for hobby projects
reply
vladimirralev 3 hours ago
Any info on the param size and quantization of each part and in total?
reply
mikemzz1 3 hours ago
interesting approach. But training ctc head on top of gemma's audio encoder will most likely produce better results and faster inference
reply
Shershah1024 52 minutes ago
That's close to what this is: the reader is a CTC head on the audio encoder, but its output words are EmbeddingGemma's own text embeddings for ~229k words, instead of a separately learned vocabulary. I also tried a plain letter-level CTC head on the encoder. It did a bit better on clean audiobooks (7.0 vs 8.2 WER at the time) but much worse on harder audio like a lecture (16.5 vs 10.8), mostly from misspellings.
reply
spiderfarmer 2 hours ago
So Marco Arment can sell some more of his Mac Minis.
reply
Aboutplants 2 hours ago
First thing I thought of lol
reply
jdw64 3 hours ago
It would be nice if Korean also worked. I’d like to experiment with a Korean model too.
reply
Imustaskforhelp 3 hours ago
This has come at just the right time.

Does this work for Hindi or other non English languages though?

I wanted to recently transcribe Hindi + English (mixed) Audio and I used this model[0] and created a custom transcribe command which can give text over input of mp4 files

This took me roughly around an hour or more or around this time frame for a 90 minute transcription source. I would consider myself to be slightly bored during this phase.

I would really appreciate it if something like the project could be made native for a lot more languages but I think that the approach of embedding models and using them in such a way is pretty crazy. Kudos for it and I will try it out!

I can think of many such use cases where Speech to text of even large audio files becomes near instant. As I think someone on hackernews once quoted whom I am very paraphrasing

An order of one or two magnitude of an already existing thing stops becoming a quantity upgrade but rather becomes a quality upgrade in it of itself as it provides access to workflows which previously wouldn't have been feasible.

[0]: https://huggingface.co/parismitaglobalsolutions/indicconform...

reply
1970-01-01 2 hours ago
I've been using Whisper with great results; GPU acceleration gets the job done, nothing leaves my box, and the medium model is overkill.

https://openai.com/index/whisper/

https://github.com/openai/whisper

reply
Imustaskforhelp 2 hours ago
Yeah I will have to try whisper as well. I didn't try it because I wanted to tinker more and also I had thought that whisper was an older model but I think that if it gets the job, then it gets the job done and I will be trying it out on the text that I mentioned, thanks for mentioning it as I will give it another go :-D
reply
tinykerneldev 2 hours ago
TrueScribe supports tranlating Hindi transcripts in both directions. Not free though.
reply
arbor-group 26 minutes ago
[flagged]
reply
octowatch 3 hours ago
[flagged]
reply
mengyuxuan 3 hours ago
[flagged]
reply
bawana 2 hours ago
I wonder if this approach can be used to transcribe the soounds made by dolphins and whales
reply