Transcribe meetings locally using Whisper
At work, I attend a lot of meetings. Gemini is great for transcribing and summarizing discussions, but unfortunately, Dutch isn't supported yet.
That got me looking for a solution to locally transcribe recorded meetings. Locally is especially important to me when dealing with classified or sensitive information that shouldn't be uploaded to the cloud.
OpenAI released Whisper as an open-source neural net for automatic speech recognition in 2022. It supports multiple languages, including Dutch, and provides fairly ok transcriptions.
Since I use a MacBook Pro, I wanted something fast and efficient, ideally leveraging the GPU rather than burning through CPU cycles. That's where whisper.cpp comes in. It's a lightweight C++ implementation of Whisper optimized for performance, including Apple Silicon.
Let's install the dependencies using Homebrew first:
brew install ffmpeg whisper-cpp
First, we need to extract the audio from the meeting using ffmpeg
:
ffmpeg -i meeting.mp4 -ac 1 -ar 16000 meeting.wav
Next, we need to download one of OpenAI's Whisper models from Hugging Face. I personally went for ggml-large-v3-turbo.bin, which is ~1.6GB
curl --location 'https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin?download=true' --output 'ggml-large-v3-turbo.bin'
Now we can start the transcription:
whisper-cli \
--language Dutch \
--print-colors \
--model ./ggml-large-v3-turbo.bin \
--output-txt \
--file meeting.wav
Be sure to check out all the options you can pass using whisper-cli --help
.
Happy transcribing!