[HN Gopher] MacWhisper: Transcribe audio files on your Mac
       ___________________________________________________________________
        
       MacWhisper: Transcribe audio files on your Mac
        
       Author : cristoperb
       Score  : 174 points
       Date   : 2023-08-22 21:34 UTC (1 days ago)
        
 (HTM) web link (goodsnooze.gumroad.com)
 (TXT) w3m dump (goodsnooze.gumroad.com)
        
       | satvikpendem wrote:
       | While whisper.cpp is faster than faster-whisper on macOS due to
       | Apple's Neural Engine [0], if you have a GPU on Windows or Linux,
       | faster-whisper [1] is a lot faster than OpenAI's reference
       | Whisper implementation as well as whisper.cpp, with the CLI being
       | wscribe or whisper-ctranslate2 as faster-whisper is only a Python
       | library. It's pretty good.
       | 
       | [0] https://github.com/guillaumekln/faster-
       | whisper/discussions/3...
       | 
       | [1] https://github.com/guillaumekln/faster-whisper
        
       | nafizh wrote:
       | The main problem I have faced with the whisper model (large) is
       | when there is silence or a sizable gap without audio, it
       | hallucinates and just puts out some random gibberish repeatedly
       | until the transcription ends. How does this app handle this?
        
       | deegles wrote:
       | Is gumroad a good platform for selling software like this? How is
       | licensing handled?
        
       | masukomi wrote:
       | Here's a multi-platform open source app that does the same thing
       | but uses vosk instead of whisper.
       | 
       | https://github.com/bugbakery/audapolis
        
       | MaxikCZ wrote:
       | Would be nice if it allowed importing mkv files, in the end its
       | just a container..
        
         | [deleted]
        
         | dagaci wrote:
         | The OpenAi CLI does that, follow the instructions
         | https://github.com/openai/whisper
        
       | ycstohley wrote:
       | Seriously great program. Licensing model just fine. I use this
       | all the time, so do my collegues at other companies.
       | 
       | The developer Jordi has a great speech online about product
       | development.
        
       | davidf18 wrote:
       | [dead]
        
       | shawnc wrote:
       | Been using it for a couple months, and Jordi keeps improving on
       | it at a steady clip. It's great!!
        
       | beardedwizard wrote:
       | Seems shady to me to charge for running larger free models you
       | don't provide on hardware your users provide. You are charging
       | for openAi features not yours.
        
         | firloop wrote:
         | They're not charging for the model, they're charging for the
         | UI.
        
           | beardedwizard wrote:
           | The UI is free, the premium features are the model. Read the
           | website.
        
         | michelb wrote:
         | Did you even look at the app?
        
           | beardedwizard wrote:
           | Yes now let me help you read the paid feature:
           | 
           | Supports Tiny (English Only), Tiny, Base, Small, Medium and
           | Large models
           | 
           | Translate audio file into another language through Whisper
           | (use the Medium or Large models, the results will not be
           | perfect and I'm working on more advanced ways to do this)
        
       | _rs wrote:
       | I've used this for a few months to transcribe interviews and it
       | works pretty well. The UI for dealing with multiple speakers is a
       | bit cumbersome, and there are occasional crashes, but overall
       | definitely a great app and worth the money
        
       | simonw wrote:
       | I've been using MacWhisper for a few months, it's fantastic.
       | 
       | Sometimes I'll send a mp3 or mp4 video through it and use the
       | resulting transcript directly.
       | 
       | Other times I'll run a second step through https://claude.ai/
       | (because of its 100,000 token context) to clean it up. My prompt
       | for that at the moment is:
       | 
       | > Reformat this transcript into paragraphs and sentences, fix the
       | capitalization and make very light edits such as removing ums
       | 
       | That's often not necessary with Whisper output. It's great for if
       | you extract captions directly from YouTube though - I wrote more
       | about that here: https://simonwillison.net/2023/Aug/6/annotated-
       | presentations...
        
         | rpastuszak wrote:
         | This is so good! I studied English, then moved to linguistics,
         | then lived in the UK for almost a decade and due to my accent
         | none of the TTS tools are close to the approach you just
         | mentioned (whisper + LLM). Thanks Simon!
        
       | mosselman wrote:
       | I didn't know whisper could differentiate voices for the per
       | speaker transcription. Is that new? Is it also available in the
       | command line whisper builds?
        
         | wahnfrieden wrote:
         | It can't
        
       | mkmk wrote:
       | I've gotten confused between the different whispers. How is this
       | different from the openai api endpoint?
        
         | miki123211 wrote:
         | It runs locally, using Whisper.cpp[1], a Whisper implementation
         | optimized to run on CPU, especially Apple Silicon.
         | 
         | Whisper itself is open source, and so is that implementation,
         | the OpenAI endpoint is merely a convenience to those who don't
         | wish to host a Whisper server themselves, deal with batching,
         | renting GPUs etc. If you're making a commercial service based
         | on Whisper, the API might be worth it for the convenience, but
         | if you're running it personally and have a good enough machine
         | (an M1 MacBook Air will do), running it locally is usually
         | better.
         | 
         | [1] https://github.com/ggerganov/whisper.cpp
        
           | smoldesu wrote:
           | FWIW, I will add that _most_ laptops made in the past 10
           | years are fast enough for real-time transcription. Unless you
           | 're trying to transcribe in bulk, running it locally will
           | usually be the best option.
        
             | miki123211 wrote:
             | This depends on the model being used, if you're doing
             | anything which isn't English, you pretty much need large,
             | and that needs considerable resources.
        
       | Flimm wrote:
       | If you're looking for an alternative that runs on Linux, I just
       | recently discovered Speech Note. It does speech to text, text to
       | speech, and machine translation, all offline, with a GUI:
       | 
       | https://flathub.org/apps/net.mkiol.SpeechNote
       | 
       | https://github.com/mkiol/dsnote
        
       | userhacker wrote:
       | If you want a quick and free web transcription and editor tool,
       | We've built https://revoldiv.com/ with speaker detection and
       | timestamps. Takes less than a minute to transcribe 1 hour long
       | video/audio
        
         | beardedwizard wrote:
         | Yes but the point of this project is that it doesn't require
         | you to share sensitive data with third parties.
        
           | userhacker wrote:
           | Good point but the problem with local hosting is that if you
           | want to use the larger models it will take a long time to
           | transcribe a file. We use multiple gpus and we do speaker
           | detection, sound detection and it is has a rich audio editor.
        
       | patrick91 wrote:
       | I really like this app, I wish there was a way to play a video
       | while editing the subtitles though!
        
       | miki123211 wrote:
       | This basically does the same thing but free:
       | 
       | https://apps.apple.com/us/app/aiko/id1672085276
        
         | Nezteb wrote:
         | That's awesome that the dev released Aiko for free!
         | 
         | Not a deal breaker, but it was last updated 3 months ago and
         | lacks a few QoL features of MacWhisper. Jordi is frequently
         | pushing updates to MacWhisper:
         | https://nitter.net/jordibruin/status/1692133387299864638
        
         | michelb wrote:
         | Hmm that one has a lot less features.
        
       | bilater wrote:
       | If you'd rather use a web app with minimal cost upfront check out
       | PlainScribe :) https://www.plainscribe.com/
        
         | Nezteb wrote:
         | I tried to sign up and got a Clerk error: "You have reached
         | your limit of 500 users. You can remove the user limit by
         | upgrading to a paid plan or using a production instance."
        
       | tornato7 wrote:
       | I have a Python script on my mac that detects when I press-and-
       | hold the right option key, and records audio while it's pressed.
       | On release, it transcribes it with whispercpp and pastes it.
       | Makes it very easy to record quick voice notes. Here it is:
       | https://github.com/corlinp/whisperer/tree/whisper.cpp
       | 
       | I was working on a native version in the form of a taskbar app
       | with customizable prompt and all. However I quickly realized that
       | the behaviors I want the app to do require a bunch of
       | accessibility permissions that would block it from the app store
       | and require more setup steps.
       | 
       | Would anybody still find that useful?
        
         | callalex wrote:
         | Does anyone actually download their Mac software from the App
         | Store?
        
           | Angostura wrote:
           | Yup, sometimes. Sometimes not.
        
           | palmer_fox wrote:
           | I prefer to because it centralizes updates for apps from
           | different makers. Way more convenient than manually checking
           | each piece of software.
        
         | breakfastduck wrote:
         | Not being able to be on the app store isn't an issue, it
         | wouldn't put anyone off using it or downloading it. Majority of
         | my apps arent from there, I imagine most long time users are
         | the same.
        
         | GavinMcG wrote:
         | I haven't used MacOS native dictation, but I thought it could
         | be used anywhere text could be input. Does your script have
         | different functionality?
         | 
         | Edit: looks like Mac native runs locally only with dapple
         | Silicon, and maybe has a more limited geographic/linguistic
         | reach?
        
           | tornato7 wrote:
           | - MacOS native dictation, in my experience, is slow to start
           | up (indeterminate delay after pressing the dictation key)
           | 
           | - The accuracy is decent but the vocabulary is very limited.
           | With Whisper, you can customize the prompt to include
           | industry-specific terms and acronyms.
           | 
           | See my example from the repo. Apple recognizes:
           | 
           | > Popular Linux distributions include Debby and Fed or Linux,
           | and do Bantu. You can use windowing systems such as X eleven
           | or Weiland with a desktop environment like KD plasma.
           | 
           | Whisper recognizes:
           | 
           | > Popular Linux distributions include Debian, Fedora, Linux,
           | and Ubuntu. You can use windowing systems such as X11 or
           | Wayland with a desktop environment like KDE Plasma.
        
             | adolph wrote:
             | Just tried the MacOS one, here's my nearly worthless
             | result:
             | 
             |  _Popular Linux distributions include Devion fedora Linux
             | and a bunch to you can we use when doing system such as
             | excellent Wayland with a desktop environment like Katie
             | plasma._
        
             | nanidin wrote:
             | This captures the exact type of problem I have when using
             | Siri for my shopping list.
        
             | anonymouse008 wrote:
             | To everyone saying the betas are better, no sir:
             | 
             | Popular Lennox distributions include Debbie and Fedora,
             | Lennox, and Beau you can use windowing system such as X11
             | or Whelan with a desktop environment like Katy plasma
        
           | leodriesch wrote:
           | macOS native dictation is not as good as Whisper in terms of
           | accuracy, however that is probably going to change with macOS
           | Sonoma since they will switch the model for speech
           | recognition to a better one (Transformer based iirc).
        
             | phren0logy wrote:
             | I'm on the Sonoma beta and can confirm it's miles better
        
               | your_challenger wrote:
               | Better than whisper? I am running whisper.cpp locally on
               | my Ventura. Should I update to Sonoma?
        
             | Obscurity4340 wrote:
             | Was it ever addressed that even when you had the microphone
             | turned off it could still detect audial stimuli and
             | reflected that in the oscillating sound wave visual? Makes
             | me wonder if it was/is always listening even with Hey Siri
             | disabled
        
               | lallysingh wrote:
               | That "sounds" to me like the mic was properly cut off
               | electrically, but the rest of the system as active, so
               | you'd get electrical noise coming in. E.g., the mic and
               | amp are powered down, but the ADC is still active.
               | 
               | My old Sun Ultra 40 M2 had a ton of electrical noise on
               | my headphone jack, and I could def. tell when the CPU was
               | busy from what I was hearing.
        
               | Obscurity4340 wrote:
               | I meant like, even after toggling it off when you made
               | noise or spoke, there was a visual
               | representation/feedback for that shown in the wavy graph
               | thing. Not just ambient/moving parts type noise. Just
               | thought it was weird, never really thought about it too
               | much.
        
         | rpastuszak wrote:
         | > However I quickly realized that the behaviors I want the app
         | to do require a bunch of accessibility permissions
         | 
         | Which behaviours specifically?
         | 
         | Personally, I wouldn't worry too much about the App Store. I'm
         | distributing Enso (http://enso.sonnet.io) via gumroad.com, and
         | people download/pay for it. I think it's easier than using the
         | App Store Connect route anyway.
         | 
         | Here's a good intro:
         | https://rambo.codes/posts/2021-01-08-distributing-mac-apps-o...
        
           | tornato7 wrote:
           | Detecting an alt-key push even when it's not an active
           | window, and editing the selected text field are both
           | accessibility permissions.
           | 
           | Thanks for the info about your app. It looks great!
        
             | alin23 wrote:
             | Editing the field definitely needs the permissions, but
             | detecting Alt-key holding should not.
             | 
             | You can do that using something like:                   var
             | reactOnOptionKeyHeld: DispatchWorkItem? { didSet {
             | oldValue?.cancel() } }
             | NSEvent.addGlobalMonitorForEvents(matching: .flagsChanged)
             | { (event) in             guard event.modifierFlags ==
             | [.option] else {                 reactOnOptionKeyHeld = nil
             | return             }             reactOnOptionKeyHeld =
             | DispatchWorkItem {                 // start recording
             | }             // schedule to run if held for at least 1
             | second             DispatchQueue.main.asyncAfter(deadline:
             | .now() + 1, execute: reactOnOptionKeyHeld!)         }
             | 
             | I see you're using Python with pynput though, which is
             | creating a full key listener so I guess that is why you
             | need the permissions.
        
       | idorosen wrote:
       | Why? Just use whisper directly. The model and code is available
       | and I think there's even a homebrew formula...
        
         | michelb wrote:
         | I just want to drag and drop my files and be done.
        
         | speedgoose wrote:
         | I have both installed. I use macwhisper because the GUI is
         | convenient.
        
         | yard2010 wrote:
         | Why'nt?
        
         | nickthegreek wrote:
         | Why? Just use MacWhisper and have a great interface with a
         | bunch of options.
        
         | Etheryte wrote:
         | Why use a web browser? Just use curl directly. The code is
         | available and I think there's even a homebrew formula...
        
         | [deleted]
        
       | holdodd wrote:
       | https://github.com/MahmoudAshraf97/whisper-diarization
       | 
       | This project has been alright for transcribing audio with speaker
       | diarization. A big finicky. The OpenAI model is better than other
       | paid products(Descript, Riverside) so I'm looking forward to
       | trying MacWhisper.
        
       | zitterbewegung wrote:
       | There is a great library that has support not only with OpenAIs
       | whisper but many others that also work offline.
       | https://github.com/Uberi/speech_recognition
        
       | bonney_io wrote:
       | Any insight on how Whisper works on older Intel Macs? I have a
       | 2012 Mac mini with 16GB of RAM doing nothing; if I could use it
       | to (slowly) transcribe media in the background, this becomes a
       | must-buy.
        
       | jbverschoor wrote:
       | So this is not Whisper Transcription 4 from the appstore?
        
       | googlryas wrote:
       | Out of curiosity, does anyone know what the state of the art for
       | transcription is? Is there a possibility it will soon be "better
       | than a person carefully listening and manually transcribing"?
       | 
       | I ask because I asked a friend to record a (for fun) lecture I
       | couldn't attend, and unfortunately the speech audio levels are
       | quite low, and I'm trying to figure out how to extract as much
       | info as possible so I can hear it. If I could add context to the
       | transcriber like "This is about the Bronze Age collapse and uses
       | terminology commonly used in discussions on that topic", it might
       | be even more useful.
        
         | userhacker wrote:
         | Try to upload it on https://revoldiv.com/ we pre-process the
         | file to make it a little Intelligible and you can supply your
         | context when uploading.
        
       | kulesh wrote:
       | superwhisper.com is also cool
        
       | agentdrtran wrote:
       | Does anyone know of an easy to use whisper fork with speaker
       | attestation?
        
       | ajhai wrote:
       | Shameless plug: recently launched LLMStack
       | (https://github.com/trypromptly/LLMStack) and I have some custom
       | pipelines built as apps on LLMStack that I use to transcribe and
       | translate.
       | 
       | Granted my use cases are not high volume or frequent but being
       | able to take output from Whisper and pipe it to other models has
       | been very powerful for me. It is also amazing how good the
       | quality of Whisper is when handling non English audio.
       | 
       | We added LocalAI (https://localai.io) support to LLMStack in the
       | last release. Will try to use whisper.cpp and see how that
       | compares for my use cases.
        
       | uger wrote:
       | Great tool, but I can't wait until it can do real-time live
       | transcribing.
        
       | paulmd wrote:
       | Whisper is cool. Back in college I wanted to do some projects
       | with speech-to-text and text-to-speech as an interface like 10-12
       | years ago, but at that point the only option was google APIs that
       | charged by the word or second.
       | 
       | On top of that, constantly sending data to google would have
       | chewed a ton of battery compared to the "activation word" style
       | solutions ("ok google/siri") that can be done on-device. The
       | power for on-device processing was obviously going to come down
       | over time, while wireless is much more governed by the laws of
       | physics, and connectivity power budgets haven't gone down nearly
       | as much over time. I am pretty sure there is a fundamental
       | asymptotic limit for this, governed by Shannon entropy
       | limit/channel width and power output. In the presence of a noise
       | floor of X, for a bandwidth of Y, you simply cannot use less than
       | Z total power for moving a given amount of data.
       | 
       | BTLE is really the first game-changer (especially if you are
       | hooking into a broad network of receivers like apple does with
       | airtags) but even then you are not really breaking this rule -
       | you are just transmitting less often, and sending less data. It's
       | just a different spot on the curve that happens to be useful for
       | IOT. If you are, say, doing a keyboard over BTLE where the duty
       | cycle is higher, the power will be too. Applications that need
       | "100% duty cycle"/"interactive" (reachable at any time with
       | minimal latency") still have not improved very much.
       | 
       | In hindsight I guess the answer would have been writing a mobile
       | app that ties into google/siri keywords and actions, and letting
       | the phone be the UI and only transmit BT/BTLE to the device. But
       | BTLE hadn't hit the scene back then (or at least not nearly to
       | the extent it has now) and I was less experienced/less aware of
       | that solution sapce.
        
       | pgt wrote:
       | Anyone have a cached page? Seems to hugged to death.
        
         | [deleted]
        
       ___________________________________________________________________
       (page generated 2023-08-23 23:01 UTC)