Whisper transcribe
GPU-accelerated audio transcription for meetings, interviews, lectures. Uses WhisperX (faster-whisper + Pyannote VAD) for the best quality-speed tradeoff. Handles Chinese-English mixed audio correctly, 30-40x faster than stock whisper. Triggers on "transcribe this audio", "转录一下", "这个录音", "会议录音", "字幕", meeting m4a/wav/mp3 files, or when given audio/video file paths.From its SKILL.md
npx -y skills add oyzh888/whisper-transcribeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.5 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
whisper-transcribe — GPU meeting transcription
Batteries-included transcription for Steve's environment. Defaults tuned for 会议录音 on H100/H200 GPUs.
When to use
- User says "转录", "transcribe", "字幕", "会议录音", "听写", "记录一下这个录音"
- User provides an audio/video path (.m4a, .mp3, .wav, .mp4, .m4v, .mov)
- Need text from audio: meetings, podcasts, interviews, lectures, screen recordings
Quick start
# Default: WhisperX large-v3, bs=16, auto language (best for Chinese+English meetings)
~/.claude/skills/whisper-transcribe/scripts/transcribe.sh <audio_file>
# Output files written to same dir as input:
# <input>.txt plain transcript
# <input>.segments.txt [timestamp] text lines
# <input>.json full WhisperX JSON
Common invocations
| Use case | Command |
|---|---|
| Default (meeting, auto) | transcribe.sh meeting.m4a |
| Chinese only (faster, monolingual only) | transcribe.sh meeting.m4a --lang zh |
| English only (monolingual only) | transcribe.sh meeting.m4a --lang en |
| Fast mode (bs=32, nearly identical quality) | transcribe.sh meeting.m4a --fast |
| Quality mode (bs=8, slightly better) | transcribe.sh meeting.m4a --quality |
| Speaker diarization (who said what) | transcribe.sh meeting.m4a --diarize |
| SRT subtitles | transcribe.sh video.mp4 --srt |
| Word-level timestamps | transcribe.sh audio.wav --words |
Performance (H100 80GB, benchmarked 2026-05-05)
| Audio length | Expected wall time | Realtime factor |
|---|---|---|
| 10 min | ~7s | 90x |
| 30 min | ~20s | 90x |
| 60 min | ~40s | 90x |
| 2 hours | ~80s | 90x |
- Model: Whisper large-v3 fp16 via CTranslate2
- VAD: Pyannote V3 (auto-splits silence, handles code-switching)
- GPU util: ~50% avg SM activity, ~26% compute utilization (memory-bound, normal)
- VRAM: ~10 GB at bs=16, ~15 GB at bs=32
Why this skill
Compared alternatives on 54-min Chinese-English meeting:
| Method | Time | Quality | Notes |
|---|---|---|---|
| openai-whisper (stock) | 18 min | ❌ mixes zh/en | Baseline |
| faster-whisper bs=32 | 28s | ⚠️ mixes zh/en in segments | Fastest |
| WhisperX bs=16 (this skill) | 36s | ✅ Correct zh/en segmentation | Best balance |
WhisperX wins on quality: Pyannote VAD correctly segments Chinese-English code-switched speech into language-consistent chunks.
Requirements
Already installed in Steve's env (verified 2026-05-05):
whisperx(pip) — includes faster-whisper + Pyannoteffmpegat/opt/ffmpeg/bin/ffmpeg(for audio conversion)- CUDA-capable GPU (H100/H200/A100)
- HuggingFace token cached (for Pyannote VAD model, only needed once)
If running on a fresh machine, the setup script handles everything:
~/.claude/skills/whisper-transcribe/scripts/setup.sh
Agent guidance
Default is the right answer 99% of the time. Just run:
~/.claude/skills/whisper-transcribe/scripts/transcribe.sh <audio>
Only add flags when the user explicitly asks:
--lang zh/--lang en→ only when audio is truly monolingual. Forcing a single language on code-switched audio causes hallucination loops. Leave blank for mixed zh/en — auto-detect + VAD handle it correctly.--diarize→ user asks "谁说了什么", "who said what", speaker labels--srt→ user asks for subtitles--fast→ user says "快一点", "quick", "draft quality is fine"--quality→ user says "最高质量", "highest accuracy"--words→ user asks for word-level timestamps or karaoke-style output
After transcription:
- For short files (<5 min), show a preview of the text to user
- For long files, summarize + mention output file paths
- If the audio is a meeting, offer to summarize key points / extract TODOs
Troubleshooting
| Problem | Fix |
|---|---|
Failed to load audio | The raw WAV may lack a header; script auto-reconverts via ffmpeg |
CUDA OOM | Use --fast with lower batch (8 or 4) via --bs 4 |
| Poor quality on a single language | Explicitly set --lang zh or --lang en |
| Missing HF token (for diarization) | Run huggingface-cli login once |
| Model download slow | First run downloads ~3 GB to ~/.cache/huggingface/; subsequent runs are cached |
Script contract
scripts/transcribe.sh behavior:
- Accepts any audio/video path (m4a, mp3, wav, mp4, mov, mkv, webm)
- Converts to 16kHz mono WAV via ffmpeg if needed (cached next to input)
- Runs WhisperX large-v3 fp16 on CUDA
- Writes 3 outputs next to input file:
<name>.txt— plain transcript (joined segments)<name>.segments.txt—[NNNs] texttimestamped lines<name>.json— full WhisperX result (includes word timings if--words)
- On stderr: progress, GPU utilization sample, final timing summary
Exit codes: 0 success, 1 bad input, 2 transcription error, 3 missing dependency.
What ships with it: 6 files
13.9 KB alongside SKILL.md, 3 of them executable
scripts/
- setup.shruns922 B
- transcribe.pyruns8.0 KB
- transcribe.shruns1.0 KB
- .gitignore72 B
- LICENSE1.1 KB
- README.md2.8 KB
Gives 0 of the 12 instructions most video audio skills give in ~1.4k tokens
Counted across 622 of the 795 authors here whose files we hold, read 2026-08-07
- Read individual rule files for detailed explanationsin 21 of 622, across 10 files
- Render final videoin 13 of 622, across 6 files
- Use WAV PCM 16kHz mono audio formatin 12 of 622, across 3 files
- Use this skill when dealing with Remotion codein 11 of 622, across 4 files
- Save generated audio to a WAV filein 11 of 622, across 4 files
- Handle conversion errors gracefullyin 10 of 622, across 6 files
- Add captions to videos alwaysin 10 of 622, across 4 files
- Generate music from text descriptions using MusicGenin 9 of 622, across 2 files
- Do not skip pipeline layersin 9 of 622, across 3 files
- Do not make one tool do everythingin 9 of 622, across 3 files
- Use Azure Document Intelligence for complex PDFsin 9 of 622, across 4 files
- Never ask the user to paste their full API keyin 9 of 622, across 3 files
Said here and by no other author read
- Run the default transcription script on the audio path
- Use default flags for mixed audio
- Pass language flag only for monolingual audio
- Show a preview for short audio files
- Summarize transcript and list output paths for long files
- Offer to summarize key points for meetings
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.