We turned EmbeddingGemma 2 into a speech-to-text model

371 points - today at 11:27 AM

Source

Comments

Shershah1024 today at 1:14 PM
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.

whstl today at 2:30 PM
For people interested in super quick models:

"One cool trick" I like for running those kinds of models very quickly on macOS is converting them to CoreML so they run in the Neural Engine.

I had amazing success with Spleeter, Demucs, MVSEP-MDX23-music-separation, DeepFilterNet, Whisper, Hunyuan3D for 3D mesh generation. Plus a lot of others for both work and leisure.

I also convert the code to Swift without dependencies, but that's a personal preference.

The runtime on some of them went sometimes from 60s to 10s. And since it's just Swift, I can just give them to non-technical co-workers and they don't have to setup a whole Python environment.

If you don't wanna do this by hand, this is something that existing LLM models are good at. Even Luna can do it without much fuss.

sbdaman today at 2:02 PM
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.

saaaaaam today at 1:29 PM
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.
llimllib today at 12:17 PM
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

andai today at 9:31 PM
Nice. Would love to see a comparison with Parakeet and the recent Needle. Are there any benchmarks for transcription speed and accuracy?
bigtex today at 12:48 PM
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.
armcat today at 7:20 PM
I applaud you on the experiment, this is a great showcase in how the latent space is shared between modalities and a great performance achieved.

You stated WER of 5% - against which benchmark?

Whistle [1] for example is a 16MB STT model but WER varies between 4-26% depending on the benchmark.

[1] https://cactuscompute.com/blog/whistle

fdb today at 12:00 PM
Is it open source? They mention something about the Apache License but I can't seem to find a link to GitHub or something.
raajg today at 5:56 PM
This approach is interesting. Does this mean that I can limit the the words to the ones I actually use and build a tiny model that finds the closest match to only those words I use in 99% of my conversations?
drakirus today at 4:35 PM
I'd be curious to see the WER on out of vocabulary words, seems like this cannot generalize to unseen word's given this step: 'The closest of ~229,000 English words wins, and the slices become a transcript'
samuelbalogh today at 1:15 PM
Fantastic! Any plans to support other languages?
alberth today at 11:49 AM
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?

deleted today at 12:37 PM
motoboi today at 3:21 PM
A nice side effect is that it transcribes in English an audio in Portuguese. And it actually make sense.

But the overall transcription quality is very low.

p0w3n3d today at 4:49 PM
The downloaded model is stored in

  Library/Application\ Support/ai.haku.eg2demo
lukko today at 12:20 PM
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?
mrkn1 today at 4:41 PM
yapsnap is faster on CPU and uses a zipformer https://github.com/kouhxp/yapsnap/
yaanfpv today at 12:56 PM
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 !
martianvoid today at 11:36 AM
Pretty cool application of an embedding model
chronogram today at 11:38 AM
What about the quality of the transcription?
cabarltos today at 3:56 PM
You should add in a more comprehensive Audio Input selection - for example, selecting "Input 3" on my audio interface microphone
amelius today at 12:34 PM
Sounds great if you could use it as a server. Otherwise, why would you want this?
vladimirralev today at 12:17 PM
Any info on the param size and quantization of each part and in total?
mikemzz1 today at 11:39 AM
interesting approach. But training ctc head on top of gemma's audio encoder will most likely produce better results and faster inference
spiderfarmer today at 12:30 PM
So Marco Arment can sell some more of his Mac Minis.
guigoguedes today at 4:40 PM
Does it work for portuguese?
jdw64 today at 12:05 PM
It would be nice if Korean also worked. Iโ€™d like to experiment with a Korean model too.
Imustaskforhelp today at 11:49 AM
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...

bbor today at 3:21 PM
Ok let's talk about the really important stuff here: that model name is atrociously long for such a game-changing model, and "embedding" is already an awkward phrase. I propose... Embedda?
arbor-group today at 2:05 PM
[flagged]
octowatch today at 11:39 AM
[flagged]
mengyuxuan today at 12:23 PM
[flagged]
bawana today at 12:39 PM
I wonder if this approach can be used to transcribe the soounds made by dolphins and whales