No description
- Python 100%
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>
|
||
|---|---|---|
| logs | ||
| src/asr_mcp | ||
| pyproject.toml | ||
| README.md | ||
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-avASR tool patterns (Apache-2.0) - Backend:
faster-whisper1.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.mdTRACK-C