whisper-cz-en

skill
Security Audit
Fail
Health Pass
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 13 GitHub stars
Code Fail
  • rm -rf — Recursive force deletion command in prepsat.sh
  • rm -rf — Recursive force deletion command in transcribe.sh
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Offline Czech and English transcription of audio and video on macOS with whisper.cpp. Text and SRT subtitles, built for Claude Code and the terminal.

README.md

whisper-cz-en

🇬🇧 English · 🇨🇿 Čeština · 🇪🇸 Español · 🇧🇷 Português · 🇩🇪 Deutsch · 🇫🇷 Français · 🇨🇳 简体中文 · 🇯🇵 日本語 · 🇸🇪 Svenska · 🇳🇴 Norsk · 🇩🇰 Dansk

Local transcription of audio and video in Czech and English with whisper.cpp on macOS. For anyone who needs to transcribe a podcast, interview, lecture or video and doesn't want to upload recordings to the cloud or pay by the minute. It runs offline, with GPU acceleration on Apple Silicon.

Built for Claude Code and other AI coding agents, and works just as well on its own from the terminal.

Author: Jindřich Fáborský

[!TIP]
The app is free and it's yours. Clone it, use it, rebuild it your way.

Want to build tools like this for your own marketing? That's what I teach: faborsky.com.

What it does

  • Czech and English, each language has its own script
  • Any input format: MP4, MOV, MP3, M4A, WAV, FLAC, OGG, AVI, MKV (ffmpeg converts it automatically)
  • Hallucination protection: five-minute chunks, Silero VAD and tuned decoder parameters keep Whisper from looping on repeated text
  • Two outputs at once: plain text (.md/.txt) and subtitles (.srt) with correct global timestamps
  • Offline: recordings never leave your computer, no API calls
  • Tuned for Apple Silicon, whisper.cpp runs on the GPU through Metal
  • Agent-ready: the scripts are designed to be run by Claude Code skills

Requirements

  • macOS on Apple Silicon (M1/M2/M3/M4), for Metal GPU acceleration
  • Homebrew
  • cmake and ffmpeg (install them with Homebrew)

Platform support

Platform Status
macOS Apple Silicon Full support, Metal GPU
macOS Intel Works, but without GPU acceleration (much slower)
Linux Possible: build whisper.cpp without -DGGML_METAL=ON, use CUDA or CPU
Windows Possible via WSL2, untested and not officially supported

It may work on other platforms once you adjust the build flags, but it isn't actively maintained there.

Installation

1. Install dependencies

brew install cmake ffmpeg

2. Clone the repository

git clone --recursive https://github.com/faborsky/whisper-cz-en.git
cd whisper-cz-en

If you cloned without --recursive:

git submodule init && git submodule update

3. Build whisper.cpp

cd whisper.cpp
cmake -B build -DGGML_METAL=ON
cmake --build build -j --config Release
cd ..

4. Download the models

# Whisper Large V3 (~3.1 GB)
cd whisper.cpp/models
bash download-ggml-model.sh large-v3

# Silero VAD v6.2.0 (~865 KB)
bash download-vad-model.sh silero-v6.2.0
cd ../..

5. Set permissions

chmod +x prepsat.sh transcribe.sh

6. Verify

./prepsat.sh -h
./transcribe.sh -h

Usage

Transcribe Czech

./prepsat.sh recording.m4a               # → recording.md + recording.srt
./prepsat.sh --md recording.m4a          # → recording.md only
./prepsat.sh --srt recording.m4a         # → recording.srt only

Transcribe English

./transcribe.sh lesson.mov               # → lesson.txt + lesson.srt
./transcribe.sh --txt lesson.mov         # → lesson.txt only
./transcribe.sh --srt lesson.mov         # → lesson.srt only

Output files are written to the current directory.

Supported input formats

Anything ffmpeg can decode: MP4, MOV, MP3, M4A, WAV, FLAC, OGG, AVI, MKV and more. The scripts convert every input to 16 kHz mono WAV before transcribing it.

How it works

Three-phase pipeline

  1. Convert: ffmpeg turns any audio or video input into WAV (16 kHz, mono, PCM s16le)
  2. Split: the audio is cut into five-minute chunks (set with CHUNK_MINUTES)
  3. Transcribe: whisper-cli transcribes each chunk separately and the outputs are joined together

How it avoids hallucinations

Whisper has a known bad habit: during silence or unclear audio it starts repeating the same text over and over. The project uses three countermeasures:

Technique What it does
Five-minute chunks The model starts fresh with each chunk, so a repetition loop doesn't carry over
Silero VAD Voice activity detection skips silent parts entirely, so a hallucination has nowhere to start
Tuned decoder -mc 0 (no context carried over), -et 2.0 (low entropy threshold), -ml 80 (maximum segment length), --suppress-nst (suppress non-speech tokens)

This keeps the transcript clean even for long recordings with uneven audio quality.

Using it with Claude Code

Example calls from a Claude Code skill:

# Transcribe a Czech podcast episode
./prepsat.sh episode.mp4

# Transcribe English course content
./transcribe.sh lecture.mov --txt

The scripts report progress on stderr and return status through the exit code, so they can be driven programmatically.

Troubleshooting

"whisper-cli not found"

Rebuild whisper.cpp:

cd whisper.cpp && cmake -B build -DGGML_METAL=ON && cmake --build build -j --config Release

"Model not found"

Download the models:

cd whisper.cpp/models
bash download-ggml-model.sh large-v3
bash download-vad-model.sh silero-v6.2.0

"ffmpeg: command not found"

brew install ffmpeg

Looping repeated text (hallucination)

The scripts handle this themselves through chunking and VAD. If it still happens, try shorter chunks: change CHUNK_MINUTES at the top of the script (the default is 5).

License

MIT, see LICENSE.

Author

Jindřich Fáborský, marketer and educator from Prague. I teach marketers to build their own tools with AI.

I built whisper-cz-en for my own use and as teaching material: students of Vibe Coding for Marketers meet it in the lesson on podcast automation and can use it as is or as the base for their own transcription tool.

Reviews (0)

No results found