Transcribe local audio/video and Apple Voice Memos quickly with cached MLX Whisper models, including bad/low-quality audio.
72
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use this skill whenever the user asks to transcribe an audio/video file, a Voice Memos export, dictation, lecture, meeting recording, or "bad audio".
~/Library/Containers/com.apple.VoiceMemos/Data/tmp/.com.apple.uikit.itemprovider... can disappear. Before probing or experimenting, copy the file to stable /private/tmp/audio-transcription-inputs/.uvx --from mlx-whisper mlx_whisper; Hugging Face models must be cached in ~/.cache/huggingface/hub/.--condition-on-previous-text False, --word-timestamps True, and --hallucination-silence-threshold 2.[unclear] rather than inventing words.Run from this skill directory:
cd /Users/mitsuhiko/Development/agent-stuff/skills/audio-transcription
./transcribe-audio.py "/path/to/audio.m4a" --language en --quality balancedThe script:
/private/tmp/audio-transcription-inputs/txt, srt, vtt, tsv, and json to /private/tmp/audio-transcriptions/<name>-<timestamp>/balanced mode, reruns with the full model if neededUseful variants:
# Quick draft, fastest cached model
./transcribe-audio.py audio.m4a --language en --quality fast
# Bad/important audio, slower full model
./transcribe-audio.py audio.m4a --language en --quality best \
--prompt "Armin Ronacher dictating about AI, data centers, Vienna, Donauinsel, shareholder value."
# Auto language detection when language is genuinely unknown
./transcribe-audio.py audio.m4a --language auto --quality balancedDefault model IDs:
mlx-community/whisper-large-v3-turbomlx-community/whisper-large-v3-mlxPre-cache / refresh both models:
cd /Users/mitsuhiko/Development/agent-stuff/skills/audio-transcription
./precache-models.pyVerify cache manually:
find ~/.cache/huggingface/hub -maxdepth 1 -type d -name 'models--mlx-community--whisper-large-v3*' -printIf a model is already cached, mlx_whisper should say Fetching 4 files: 100% almost instantly.
If the helper script is not suitable, use this command directly:
mkdir -p /private/tmp/audio-transcriptions/manual
uvx --from mlx-whisper mlx_whisper "/stable/copy/of/audio.m4a" \
--model mlx-community/whisper-large-v3-turbo \
--language en \
--condition-on-previous-text False \
--word-timestamps True \
--hallucination-silence-threshold 2 \
--output-format all \
--output-dir /private/tmp/audio-transcriptions/manual \
--output-name transcript \
--verbose FalseFor especially rough audio, replace the model with mlx-community/whisper-large-v3-mlx.
Inspect the generated .txt first, then the .srt/.json around suspicious areas.
Red flags that require rerun or cleanup:
in nature loops)avg_logprob is NaN or compression ratios are very high in JSONWhen finalizing, lightly punctuate and paragraph the transcript, but do not over-edit uncertain content.
d265b8e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.