To transcribe podcasts privately on Linux, run OpenAI’s Whisper model on your own machine. Buzz is the easiest choice for episode files. It installs from Flathub or the Snap Store, labels speakers, and exports TXT, SRT and VTT. Speech Note is a friendlier all-offline notes app, and whisper.cpp or faster-whisper handle batch jobs from the terminal. None of them upload your audio, and they work the same on Ubuntu, Fedora, Debian or Arch.
This guide covers choosing a tool, batch-transcribing a back catalogue, getting speaker names, and using transcripts to edit episodes faster.
Which offline transcription tool suits your podcast? #
| Tool | Interface | Speaker labels | Output | Best for |
|---|---|---|---|---|
| Buzz | Desktop app | Yes | TXT, SRT, VTT | Episode files, show notes, captions |
| Speech Note | Desktop app | No | Text | Dictation, quick clips, offline translation |
| whisper.cpp | Command line | No | TXT, SRT, VTT, JSON | Batch jobs, CPU-only and AMD or Intel GPUs |
| faster-whisper | Python | No (pair with pyannote) | Anything you script | NVIDIA GPUs, custom pipelines |
All four are free. Buzz is MIT-licensed and also has a watch-folder mode and a command-line interface. Speech Note (net.mkiol.SpeechNote on Flathub) does speech-to-text, text-to-speech and translation entirely offline, with optional GPU add-ons for AMD and NVIDIA.
Setting up on any distro #
Flatpak is the least painful route on every major distribution:
flatpak install flathub net.mkiol.SpeechNoteBuzz is on Flathub and the Snap Store as well, or you can install it with pip. For whisper.cpp, install a compiler and CMake from your package manager (build-essential cmake on Debian and Ubuntu, gcc-c++ cmake on Fedora, base-devel cmake on Arch), then build:
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp
cmake -B build && cmake --build build -j --config Release
sh ./models/download-ggml-model.sh large-v3-turbowhisper.cpp supports CUDA, Vulkan and ROCm backends as well as plain CPU, so it’s the practical choice if your GPU isn’t NVIDIA. faster-whisper needs CUDA 12 and cuDNN 9 for GPU use, and its own benchmark transcribes 13 minutes of audio in about a minute on a GPU with int8 precision.
How to batch-transcribe a season of episodes #
This loop converts each MP3 to the 16 kHz mono WAV that whisper.cpp expects, then writes a text file and an SRT subtitle file next to the episode:
for f in episodes/*.mp3; do
ffmpeg -loglevel error -y -i "$f" -ar 16000 -ac 1 -c:a pcm_s16le /tmp/episode.wav
./build/bin/whisper-cli -m models/ggml-large-v3-turbo.bin -f /tmp/episode.wav \
-otxt -osrt -of "${f%.mp3}"
doneRun it overnight on a big archive. On a CPU-only machine, swap in ggml-small.bin or ggml-medium.bin to trade some accuracy for speed. Use the .en models if every episode is in English.
Getting speaker names for interview shows #
Whisper transcribes words, not who said them. You have three options, from best to worst:
- Record each person on a separate track. Transcribe each track on its own and every line is already attributed. This is by far the most reliable method, and most podcast recorders can do it.
- Use Buzz’s speaker identification on a mixed file.
- Run pyannote.audio for diarization. Its
speaker-diarization-community-1pipeline runs locally after a one-time download that needs a Hugging Face token. Then match speaker turns to Whisper’s timestamps.
Diarization works well with two or three voices that take turns. It gets confused by crosstalk, laughter and remote guests on phone-quality lines, so plan on a quick manual pass.
Using transcripts to edit episodes faster #
A timestamped transcript turns editing from listening in real time into scanning text:
- Find cuts by searching. Search the SRT for a phrase you want gone and jump to its timestamp in your editor.
- Hunt filler and false starts. Whisper often cleans up “um” on its own, but repeated phrases and restarts show up clearly in text.
- Write show notes and chapters. Skim the transcript for topic changes and copy the timestamps into your chapter markers.
- Caption video episodes. SRT and VTT files import into most video editors, Kdenlive included, and into YouTube.
- Pull quotes for social posts without re-listening to the whole episode.
Cloud tools that let you edit audio by editing text, such as Descript, work by uploading your audio to their service. The workflow above gets you most of the benefit without that step.
Getting names and jargon right #
Guest names, brand names and niche terms are where Whisper slips most. Give it a hint:
- whisper.cpp: add
--prompt "Guest Name, Product Name, jargon term". - faster-whisper: pass
initial_prompt="..."totranscribe().
Keep the prompt short and relevant to the episode. For more accuracy fixes, from mic technique to model choice, see how to improve private speech-to-text accuracy for podcasts.
Field recordings and interviews on your phone #
Some episodes start on a phone: a street interview, a conference hallway chat, a guest recorded in a cafĂ©. Private Transcribe is our iPhone and Android app for that part of the workflow. It records, runs Whisper on the phone itself, and gives you a timestamped transcript before you’re back at your desk, without uploading the interview. It also imports audio and video files up to 90 minutes long, and the one-time Pro purchase exports .txt and .srt. It doesn’t label speakers, so for the final episode transcript the Linux tools above are still the better fit. But it’s a quick way to find the good moments in raw field audio.
For solo interviews on a Linux laptop, how to transcribe interviews offline on Linux covers the setup. For team calls, see local speech-to-text for team meetings on Ubuntu.
What to expect from local transcription quality #
On a well-recorded podcast (decent mics, people taking turns), large-v3-turbo produces transcripts that need only light editing. Accuracy falls with remote guests on poor connections, heavy crosstalk and music beds under speech. Transcribe the voice-only stems if you have them.
Two known quirks to watch for. OpenAI’s Whisper paper describes occasional repeat loops and dropped words at segment edges. Whisper can also invent text during long silences or music, so trim long intros and outros before transcribing, and check quoted material against the audio. Our comparison of offline tools for podcast creators looks at the same trade-offs on other platforms.
Frequently asked questions #
Can I transcribe podcasts offline on Linux? #
Yes. Buzz, Speech Note, whisper.cpp and faster-whisper all run Whisper models locally. Once the model is downloaded, they work without an internet connection, and no audio leaves your computer.
What’s the best free podcast transcription tool for Linux? #
For most podcasters, Buzz. It has a graphical interface, speaker identification and SRT/VTT export, and installs from Flathub or the Snap Store. For large batch jobs or scripting, whisper.cpp is faster to automate.
Do I need a GPU to transcribe podcasts on Linux? #
No, but it helps a lot with large models. On a CPU, medium and small models are practical for overnight batches. whisper.cpp can use NVIDIA, AMD and Intel GPUs through CUDA, ROCm or Vulkan, and faster-whisper needs an NVIDIA GPU with CUDA 12 for acceleration.
How do I add subtitles to a video podcast? #
Export an SRT or VTT file from Buzz or whisper.cpp (-osrt or -ovtt), check it against the audio, and import it into your video editor or upload it to YouTube alongside the video.
How do I get separate speaker names in the transcript? #
Record each speaker on their own track and transcribe the tracks separately, which is the most accurate method. If you only have a mixed file, Buzz’s speaker identification or pyannote.audio can label speakers locally, though you’ll need to check overlapping sections by hand.