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.

  • 8 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…