No description
Find a file
pookNast a72341fc5d feat(asr-mcp): Whisper ASR MCP server via faster-whisper
Wave C of Qwen-MM GEM Adoption contract. Implements TRACK-C ASR via faster-whisper
(pre-installed in voice-rosie venv). Wraps the existing local model cache.

Milestones:
- C1 (Whisper backend): DONE — uses faster-whisper 1.2.1 from voice-rosie venv (no new Docker container)
- C2 (ASR tool patterns): DONE — single 'transcribe' tool returns {text, srt_path, segments, duration, language}
- C3 (ASR_SERVER_URLS env): DONE — set in mcp.json env block
- C4 (registered in ~/.claude/mcp.json): DONE — propagates to claude/claude-glm/oc-start via symlink
- C5 (sample transcription with SRT): DONE — 7.16s sample 'The quick brown fox...' transcribed with
  100% accuracy via base model. SRT output verified with 2 timestamped segments.

Deferred:
- C6 (multi-speaker diarization): pyannote not yet integrated. ponytail: defer until a real
  multi-speaker recording surfaces. Current behavior: single-speaker with silence-based VAD filtering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-08-10 13:28:17 -04:00
logs feat(asr-mcp): Whisper ASR MCP server via faster-whisper 2026-08-10 13:28:17 -04:00
src/asr_mcp feat(asr-mcp): Whisper ASR MCP server via faster-whisper 2026-08-10 13:28:17 -04:00
pyproject.toml feat(asr-mcp): Whisper ASR MCP server via faster-whisper 2026-08-10 13:28:17 -04:00
README.md feat(asr-mcp): Whisper ASR MCP server via faster-whisper 2026-08-10 13:28:17 -04:00

asr-mcp

Self-hosted Whisper ASR MCP server. Offline transcription via faster-whisper. No DashScope, no OpenAI API calls, no egress — audio stays on BatKave.

Inspired by qwen-mm-plugins-omni-av ASR patterns (Apache-2.0) — reimplemented as a thin MCP wrapper around the existing ~/.local/share/voice-rosie/venv/ install of faster-whisper.

Models (pre-downloaded)

Size VRAM Disk Use case
tiny ~200 MB 75 MB quick draft
base ~250 MB 145 MB default — good balance for client calls
small ~500 MB 480 MB high-accuracy default
medium ~1.5 GB 1.5 GB when VRAM allows
large-v3 ~3 GB 3 GB max accuracy (tight on current 4090 budget)

Default: small (good accuracy, fits alongside Ollama in VRAM).

Install

Uses the existing voice-rosie venv — no new install needed:

cd ~/projects/mcp-servers/asr-mcp
~/.local/share/voice-rosie/venv/bin/pip install -e .

Run

asr-mcp                   # MCP server (stdio)
asr-mcp --check-system    # show model + CUDA status

Wire to Claude Code

Add to ~/.claude/mcp.json:

"asr-mcp": {
  "command": "/home/pook/.local/share/voice-rosie/venv/bin/asr-mcp",
  "args": [],
  "env": {
    "PYTHONUNBUFFERED": "1",
    "ASR_MODEL": "small",
    "ASR_DEVICE": "cuda",
    "ASR_COMPUTE_TYPE": "int8"
  }
}

Tools

  • transcribe(file_path, language?, model_size?) — Returns {text, srt_path, segments, duration_sec}.

Provenance

  • Inspiration: qwen-mm-plugins-omni-av ASR tool patterns (Apache-2.0)
  • Backend: faster-whisper 1.2.1 (pre-installed)
  • Models: Pre-downloaded to ~/.local/share/voice-rosie/models/whisper/ and ~/.cache/huggingface/
  • Audit: ~/audits/qwenlm-qwen-mm-plugins-20260810/GEMS.md TRACK-C