On the subject of whisper being great... A few weeks ago a co-worker commented about the difficulty he'd had editing a work demo, I pointed at various jump-cutting tools that had automated what he did in the past (editing out silences). But I'd also wanted to play with whisper for a while...
So a couple of hours later I'd written a script that does transcription based editing: on the first pass it grabs a timestamped transcript and a plain text transcript for editing; you edit the words into any order you like and a second pass reassembles the video (it's just a couple of hundred lines of python wrapping whisper and ffmpeg). It also speeds up 4x any silences detected that sit within retained sequences in the video.
Matching up transcripts turns out to be not that hard; I normalise the text, split it, and then compare to the sequence of normalised words from the timestamped transcript. I find the longest common sequence, keep that, then recurse on the before/after sections (there's a little more detail, but not much). I also sent the transcription to ffmpeg to burn in as captions, because sometimes it makes the audio choppy and the captions make it easier to follow.
I know, tools have been doing this for years now. I just didn't have one to hand, and now I do, and I couldn't have done this without whisper.
That is absolutely awesome and I love hearing about the tools that people build themselves!
Honestly, the capabilities of whisper is insane, the fact that it's free and open source is really a gift. Some of the things it can do feels almost sci-fi.
If you ever decide to release it publicly please let me know, sounds like a very useful tool.
"release" is maybe too strong a word, it's not a lot of code and I don't plan to put any more effort into the nonexistent interface since it was just built for personal use. But the code:
Couldn't find it on the Play store by searching for the name and the developer's name: if it is not just me then your app is very hard to discover.
So I am installing it through the link you provided, which directed me to a "install success" page saying "your purchase is successful" even if your app is free. Another obstacle to adoption :-)
Last, I was not informed on the page of the app' size. Seeing what it does and the time it takes to download I am afraid it could be huge? Third obstacle :-)
Thank you for the feedback, I really do appreciate you taking the time to check it out and write out the comment! I'll look at adding a note about total app size in the description, it won't hurt.
As for discoverability / the "your purchase is successful" message, I'm not sure what else I can do, I've set it to free, no ads etc in Google Play. Maybe I need to hit a few more keywords for transcription so it surfaces it more.
For me, searching for "whistle" on play store, I get the app as the third result (ignoring sponsored crap). Searching for "blazingbanana" gets me the app as the first result".
App info shows 218MB size, which I suppose is about what I'd expect for a model+app code :shrug:
Good to know, it's hard to know what real users would see in the play store and not Google just showing you what you want. Thank you for checking it out
That's very cool, I've been looking for a fully offline transcription app for quite a while. Thanks for building this! And thanks so much for providing an "import audio file" function, not just "record from mic" -- transcribing voice notes from various messenger apps is my main use case here.
Do you have an idea about supporting languages other than English?
The average model and upwards should support all languages from the whisper models by default.
I haven't tested them all so I'm unsure of the quality, however it should in theory support the following:
---
Albanian
Amharic
Arabic
Armenian
Assamese
Azerbaijani
Bashkir
Basque
Belarusian
Bengali
Bosnian
Breton
Bulgarian
Cantonese
Catalan
Chinese
Croatian
Czech
Danish
Dutch
English
Estonian
Faroese
Finnish
French
Galician
Georgian
German
Greek
Gujarati
Haitian creole
Hausa
Hawaiian
Hebrew
Hindi
Hungarian
Icelandic
Indonesian
Italian
Japanese
Javanese
Kannada
Kazakh
Khmer
Korean
Lao
Latin
Latvian
Lingala
Lithuanian
Luxembourgish
Macedonian
Malagasy
Malay
Malayalam
Maltese
Maori
Marathi
Mongolian
Myanmar
Nepali
Norwegian
Nynorsk
Occitan
Pashto
Persian
Polish
Portuguese
Punjabi
Romanian
Russian
Sanskrit
Serbian
Shona
Sindhi
Sinhala
Slovak
Slovenian
Somali
Spanish
Sundanese
Swahili
Swedish
Tagalog
Tajik
Tamil
Tatar
Telugu
Thai
Tibetan
Turkish
Turkmen
Ukrainian
Urdu
Uzbek
Vietnamese
Welsh
Yiddish
Yoruba
---
Apologies for the formatting, not sure how to make it look nice in the comment.
A new bugfix update for the "Translate to English" toggle (which was functionally always set to on) should be available soon, it's just awaiting Play Store approval.
Whoa cool, so all the transcription is done locally? Have you done any perf monitoring around that on iOS?
I have been using the iOS built in speechTranscriber and it is... not great, was gonna use a whisper API but running it on device would be amazing if it isn't too heavy.
Yes, everything is done locally, stick your phone in airplane mode if you want to be sure!
I'm not an Apple fan, but I have to say I've been testing it on an iPhone 15 and my god, the performance is insanely good, I was seriously blown away. I haven't dug into how much it impacts battery, but the transcription literally takes seconds for a minute of audio so it's not holding up your device.
The iOS version is built, ready to go, there's just some bug with my Apple account and it won't let me pay the £80 fee to signup (support ticket raised and waiting). As soon as that's sorted it'll be out on App Store for free as well.
Very surprised to hear the built in transcription is not great, anything specifically bad about it? The hardware is there.
I really liked wisprflow on my mac but my daily driver is Manjaro KDE. I have stitched together a bash script that copies the transcription (right now I am using the Parakeet TDT 0.6B) to my clipboard. I would give this a try on linux when it becomes available.
Would you be open to sharing your script? I run whisper.cpp in Linux through some stitched together scripts (https://news.ycombinator.com/item?id=44949314), but would be very curious to try Parakeet. I don't believe I can run it through whisper.cpp?
I looked at your script. I am doing basically the same thing just using onnx-asr (installed as a uv tool) with the parakeet model instead of the whisper-cli.
Look Here: https://github.com/istupakov/onnx-asr
Just checked out whisprflow, I must say that looks really nice, kudos to those devs. Shame there isn't a Linux / Android version.
I have added the auto-copy to clipboard functionality that will come with the next Android release and be included in all others. Adding a hotkey / quickbar button is on the roadmap for the desktop versions.
I just tried running this on a 30 minute meeting with some 10 people in. It got to the end, then just bailed without transcribing. I also did not get any errors or anything.
Really sorry about that, longer running audio (~10m+) is something I'm working on along with handling multiple speakers.
I've been focused on getting functional parity across all OS's since the Android release. This is very close to being done and I just need to reach the milestone of it being available on all platforms before I move forward.
Hopefully you will take another look when the next update is out.
I'm capturing the audio first, which was fine for short audio but ended up killing the process when it got too big. The updated fix is out now.
I did a complete overhaul to the pipeline so that it splits and processes at the end, this seems to have sorted it. I'm thinking about doing each transcription segment as it's coming in (with a bit of a buffer / overlap to keep context) much like the live transcription does, but for now performance is ok. Something I'll keep in mind once I've crossed some other things off the list.
Yes absolutely! I'm a GrapheneOS user myself so understand not wanting to have to go through the play store if you can help it.
I believe you have to make the source code public (please correct me if I'm wrong). I'm more than happy to do so, I've used a whole bunch of open source stuff to build the app so it only seems fair, I just need to make it a bit less messy and something I don't mind being public.
Completely free, no ads, no in-app purchases and no accounts / network required offline voice transcription.
I have also built the macOS/Windows/Linux versions which I'll also make free to download and available on my site soon (https://blazingbanana.com/).
iOS version is built and works (extremely well), just waiting for the Apple Developer signup process to complete.
Big shout out to https://github.com/mybigday/whisper.rn and https://huggingface.co/ggerganov/whisper.cpp/tree/main for making this even possible.
Any suggestions are welcome.