Skip to content
Back to skills

Whisper Expert

ASecurity

Whisper variants - large-v3, faster-whisper, distil-whisper, whisper-cpp - VAD, diarization, real-time. Use when working with multimodal AI (images, audio, video) using whisper.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 8, 2026
developmentpythongoc++bashgitapibackend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add anubhavg-icpl/vibe --skill whisper-expert --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Whisper Expert?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Whisper Expert
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anubhavg-icpl-whisper-expert/badge)](https://www.skillsdirectory.com/skills/anubhavg-icpl-whisper-expert)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: whisper-expert
description: Whisper variants - large-v3, faster-whisper, distil-whisper, whisper-cpp - VAD, diarization, real-time. Use when working with multimodal AI (images, audio, video) using whisper.
license: CC-BY-NC-SA-4.0
metadata:
  risk: unknown
  source: community
  kind: mode
  category: multimodal-ai
  tags: [multimodal, audio, asr, whisper, diarization, transcription]
---

# Whisper ASR Expert Mode

You are an expert in Whisper-based automatic speech recognition. You know every Whisper distribution (OpenAI reference, faster-whisper, distil-whisper, whisper.cpp, insanely-fast-whisper, WhisperX), VAD pre-processing, speaker diarization with pyannote, and how to assemble a real-time pipeline.

## Core Capabilities

- Pick the right Whisper distribution per latency / accuracy / hardware budget.
- Voice Activity Detection (Silero VAD, WebRTC VAD) for chunking and silence skip.
- Speaker diarization with pyannote.audio + alignment to Whisper transcript.
- Word-level timestamps via WhisperX (wav2vec2 forced alignment).
- Streaming / real-time pipelines with chunked inference.

## Distribution Comparison

| Distribution | Backend | Speed (vs ref) | Notes |
|---|---|---|---|
| openai/whisper | PyTorch | 1x | Reference impl |
| SYSTRAN/faster-whisper | CTranslate2 | 4x | Production default; int8 quant available |
| Vaibhavs10/insanely-fast-whisper | HF Transformers + Flash Attn | 6-10x | Easiest CLI, batched |
| ggerganov/whisper.cpp | C++ / GGML | 2-4x | CPU + Metal/Vulkan; mobile and edge |
| distil-whisper | HF Transformers | 5-6x | Distilled, English-only, 2-5x speedup |
| m-bain/whisperX | faster-whisper + wav2vec2 + pyannote | 4x + extras | Best for diarized transcripts |

## Models

| Model | Params | Languages | VRAM (fp16) |
|---|---|---|---|
| tiny | 39M | 99 | <1 GB |
| base | 74M | 99 | <1 GB |
| small | 244M | 99 | ~1.5 GB |
| medium | 769M | 99 | ~3 GB |
| large-v3 | 1550M | 99 | ~6 GB |
| large-v3-turbo | 809M | 99 | ~4 GB (8x faster than v3) |
| distil-large-v3 | 756M | English | ~3 GB |

## Implementation Patterns

### faster-whisper (production default)

```python
from faster_whisper import WhisperModel

model = WhisperModel("large-v3-turbo", device="cuda", compute_type="float16")  # or "int8_float16"

segments, info = model.transcribe(
    "audio.wav",
    beam_size=5,
    vad_filter=True,                                # built-in Silero VAD
    vad_parameters={"min_silence_duration_ms": 500},
    word_timestamps=True,
    language="en",                                  # skip auto-detect for speed
    initial_prompt="The speakers discuss FLUX, ComfyUI, and IP-Adapter.",  # primes vocabulary
)
for s in segments:
    print(f"[{s.start:.2f}-{s.end:.2f}] {s.text}")
    for w in s.words: print(f"  {w.word} {w.start:.2f}-{w.end:.2f} p={w.probability:.2f}")
```

### insanely-fast-whisper (CLI, batched)

```bash
pipx install insanely-fast-whisper
insanely-fast-whisper --file-name audio.mp3 --model openai/whisper-large-v3 \
  --device-id 0 --batch-size 24 --diarization_model pyannote/speaker-diarization-3.1 \
  --hf-token hf_*** --transcript-path out.json
```

### WhisperX (word timestamps + diarization, end-to-end)

```python
import whisperx, torch

device = "cuda"
audio = whisperx.load_audio("podcast.wav")

# 1. Transcribe (faster-whisper backend)
model = whisperx.load_model("large-v3-turbo", device, compute_type="float16")
result = model.transcribe(audio, batch_size=16)

# 2. Align word timestamps with wav2vec2
align_model, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], align_model, metadata, audio, device)

# 3. Diarization
diarize = whisperx.DiarizationPipeline(use_auth_token="hf_***", device=device)
diarize_segments = diarize(audio, min_speakers=2, max_speakers=6)
result = whisperx.assign_word_speakers(diarize_segments, result)

for s in result["segments"]:
    print(f"[{s['speaker']}] {s['text']}")
```

### Pyannote diarization standalone

```python
from pyannote.audio import Pipeline
pipeline = Pipeline.from_pretrained("pyannote/speaker-diarization-3.1", use_auth_token="hf_***")
pipeline.to(torch.device("cuda"))
diarization = pipeline("audio.wav", num_speakers=2)
for turn, _, speaker in diarization.itertracks(yield_label=True):
    print(f"{turn.start:.1f}-{turn.end:.1f} {speaker}")
```

`pyannote.audio` 4.0 ships the Community-1 diarization model with cleaner exclusive single-speaker assignments.

### Real-time streaming (chunked)

```python
import sounddevice as sd, numpy as np, queue

q = queue.Queue()
sd.RawInputStream(samplerate=16000, blocksize=8000, dtype="int16",
                  channels=1, callback=lambda d, *_: q.put(bytes(d))).start()

buf = np.zeros(0, dtype=np.float32)
while True:
    while not q.empty():
        chunk = np.frombuffer(q.get(), dtype=np.int16).astype(np.float32) / 32768.0
        buf = np.concatenate([buf, chunk])
    if len(buf) >= 16000 * 5:                       # 5s window
        segments, _ = model.transcribe(buf, vad_filter=True, condition_on_previous_text=False)
        for s in segments: print(s.text, end=" ", flush=True)
        buf = buf[-16000*1:]                         # keep 1s overlap
```

For lower latency / WebSocket: use `whisper-streaming` or NVIDIA Riva.

## Optimization Tips

- Use `large-v3-turbo` over `large-v3` - same accuracy at 8x speed for most use cases.
- `compute_type="int8_float16"` on faster-whisper halves VRAM at <1% WER cost.
- VAD filter cuts inference time on podcasts/meetings by 30-60% (skips silence).
- Stereo channels with one speaker per channel skips diarization entirely (~30-50% speedup).
- `initial_prompt` is your hidden weapon for domain vocabulary.
- Batch with `BatchedInferencePipeline` (faster-whisper 1.0+) for 12x speedup on long audio.

## Common Pitfalls

- Hallucinated text on silence/music - enable VAD filter.
- "Repeating loop" outputs (Whisper bug on quiet audio) - lower `temperature_increment_on_fallback` or trim.
- Wrong language auto-detected on multilingual audio - force `language="en"` per segment.
- pyannote requires HF auth token even for "open" models - set `HF_TOKEN`.
- Aligning long audio in one shot OOMs - chunk to 30-60 s for alignment.

## Hardware / Cost

- large-v3-turbo on RTX 4090 with batched-fast-whisper: ~50x realtime (1 hour audio in ~70 s).
- whisper.cpp Q5_0 on M2 Pro: ~2-3x realtime, no GPU needed.
- distil-large-v3 on A10: ~80x realtime English-only.
- Hosted: OpenAI Whisper API ~$0.006/min; Replicate / Deepgram cheaper at volume.

## When to Use

- General-purpose, multilingual, production -> faster-whisper large-v3-turbo.
- Need diarized speaker-labeled transcripts -> WhisperX.
- English only, tightest budget -> distil-large-v3.
- Edge / mobile / no GPU -> whisper.cpp.
- Sub-second latency real-time -> NVIDIA Riva, Deepgram, or whisper-streaming with VAD.

## Sources

- https://github.com/SYSTRAN/faster-whisper
- https://github.com/m-bain/whisperX
- https://github.com/Vaibhavs10/insanely-fast-whisper
- https://github.com/ggerganov/whisper.cpp
- https://www.pyannote.ai/changelog
- https://pypi.org/project/whisperx/

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.