transcribe-audio
Skill0 starsChanged 48 days agoMITView on GitHub
Transcribe an audio file (m4a, mp3, wav, etc.) to text locally using whisper.cpp (Metal-accelerated on Apple Silicon). Use when the user asks to transcribe audio, get a text version of a recording/voice memo, or extract spoken content from an audio/video file. Free, runs entirely on-device — no upload, no API key. Also covers the automatic "drop a file in the folder" watch pipeline — use when the user asks about the transcribe inbox, watch folder, or auto-transcribe setup.
- Installs packages
7 other projects use a version of this.
Adopted by
Most recently taken up by
- umakhanpro/vocalingo-mcptheir own version, first seen Nov 1, 2026
- zedxter/utility-belttheir own version, first seen Nov 1, 2026
- valtterimelkko/agent-workflow-skillstheir own version, first seen Sep 30, 2026
- caiopizzol/skillstheir own version, first seen Sep 28, 2026
- barefootford/buttercuttheir own version, first seen Sep 14, 2026
- montezuma-p/harkentheir own version, first seen Aug 25, 2026
Other versions7 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 7
- barefootford/buttercut★ 598same name
- montezuma-p/harken★ 12same name
- zedxter/utility-belt★ 4same name
- caiopizzol/skills★ 3same name
- valtterimelkko/agent-workflow-skills★ 2same name
- andfrancot-alt/claude-skills★ 0same name
- umakhanpro/vocalingo-mcp★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 4 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
4
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 44
Before enabling the watcher, set your own values:
- Very specific: line 69
If ffmpeg is missing: brew install ffmpeg
- Distinctive: line 71
If model weights are missing, download to a fixed cache dir:
- Distinctive: line 109
After that, transcription itself is fast — often close to or faster than realtime on an M-series Mac thanks to Metal.
- Distinctive: line 113
Never upload the audio to a third-party API unless you explicitly want that route instead of the local one.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Transcribe audio (local, free, Metal-accelerated)
Automatic pipeline (watch folder)
There is also a fully automated path, for when you just want to drop a file somewhere and get an email back — no need to invoke this skill manually for those files.
- Root folder:
~/Documents/Transcribe Inbox/(override withTRANSCRIBE_INBOX_DIR)inbox/— drop audio/video files hereprocessing/— transient, in-flight (don't touch)processed/— done: audio file + its.txttranscript, side by sidefailed/— errored: audio file + a.errlog explaining why
- Supported extensions:
.m4a .mp3 .wav .mp4 .mov .aac .flac .ogg(case-insensitive) - A LaunchAgent (label
com.example.transcribe-watch— rename to your own reverse-DNS identifier, e.g.com.<yourname>.transcribe-watch;~/Library/LaunchAgents/com.example.transcribe-watch.plist) watchesinbox/and runs~/.claude/skills/transcribe-audio/scripts/watch_and_transcribe.shon any change. That script: waits for the file's size to stabilize (skips files still mid-copy), moves it intoprocessing/, runs ffmpeg + whisper-cli directly (same steps as the manual flow below), then moves the result intoprocessed/(orfailed/on error) and shells out toclaude -ponce to send an email alert via the Gmail MCP connector to whatever address is set inNOTIFY_EMAIL(see Setup below) — notification-only (file paths, not the transcript text) on success; failure emails include the error log. - Logs:
~/.claude/skills/transcribe-audio/logs/watch.{out,err}.log - Lock:
~/.claude/skills/transcribe-audio/state/watch.lock(a directory; serializes overlapping launchd triggers — safe tormdirif a run ever gets stuck and the log confirms nothing is actually running) - To pause/resume the watcher:
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.example.transcribe-watch.plist # pause launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.example.transcribe-watch.plist # resume
Setup
Before enabling the watcher, set your own values:
NOTIFY_EMAIL— the address success/failure alerts get sent to. Set this as an env var, or edit it directly inwatch_and_transcribe.sh.- Rename the LaunchAgent label and plist filename from
com.example.*to your own reverse-DNS identifier, and update theLabelkey inside the plist to match. - Requires the Gmail MCP connector (or swap in whatever mail-sending tool you use) to be configured for the account you want alerts sent from/to.
Manual, one-off transcription
Runs Whisper locally via whisper.cpp (Homebrew formula whisper-cpp, binary
whisper-cli), which uses Metal GPU acceleration on Apple Silicon. Much faster
than the plain openai-whisper Python package on Mac hardware. No network
upload of the audio — everything happens on your own machine.
Steps
- Check dependencies (do this every time, cheap):
command -v ffmpeg >/dev/null || echo "MISSING: ffmpeg" command -v whisper-cli >/dev/null || echo "MISSING: whisper-cli" ls ~/whisper-models/ggml-medium.bin >/dev/null 2>&1 || echo "MISSING: model weights"- If
ffmpegis missing:brew install ffmpeg - If
whisper-cliis missing:brew install whisper-cpp - If model weights are missing, download to a fixed cache dir:
(Usemkdir -p ~/whisper-models curl -L -o ~/whisper-models/ggml-medium.bin \ https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.binggml-small.binfor a faster/lower-accuracy model, orggml-large-v3.binfor max accuracy — swap the URL filename accordingly.)
- If
- Confirm the input file path with the user if not already given. Verify it exists before running anything.
- Convert to 16kHz mono WAV. whisper.cpp requires this input format —
most source files (m4a, mp3, etc.) need conversion first:
ffmpeg -y -i "/path/to/input.m4a" -ar 16000 -ac 1 -c:a pcm_s16le "/path/to/input.wav" - Run the transcription. Output goes next to the source file:
whisper-cli -m ~/whisper-models/ggml-medium.bin -f "/path/to/input.wav" \ -otxt -of "/path/to/input"-otxtwrites plain text (.txt); use-osrtor-ovttfor subtitle formats if the user wants timestamps.- For long or sensitive files, run this in the background and check back — it can still take several minutes even with Metal acceleration.
- Long-running: run in the background (background shell /
run_in_background) rather than blocking, and report back when it completes.
- Report the output file path(s) back to the user rather than dumping the full transcript inline, unless it's short or they ask to see it directly.
Notes
- Model weights are cached in
~/whisper-models/(fixed path, not~/.cache/whisper— that's the oldopenai-whispercache location). - First run needs
brew install whisper-cpp(compiles/installs several binaries, can take a few minutes) plus the one-time model download (~1.5GB formedium). After that, transcription itself is fast — often close to or faster than realtime on an M-series Mac thanks to Metal. - The intermediate WAV file is not cleaned up automatically; leave it unless you want to delete it (may be large for long recordings).
- Never upload the audio to a third-party API unless you explicitly want that route instead of the local one.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

