Skill v1.0.0
currentLLM-judged scan90/100version: "1.0.0" name: audiocpp-asr-extended description: "Transcription beyond the GuideAnts wrapper contract: transcribe workspace files by path (no upload, no 50 MB gateway cap), pass language hints, and sideload other qwen3-family ASR snapshots from Hugging Face through the wrapper. Use when a transcription needs a language hint, the file is large, or the user wants to try an ASR model the catalog doesn't list." metadata: guideants: enabled: true display_order: 33 requires_toolsets: [sandbox]
audio.cpp extended ASR (experimental)
The GuideAnts ASR wrapper (127.0.0.1:8082) takes multipart uploads with no language control. The raw engine it spawns (127.0.0.1:18082) accepts a server-local path and a language hint — and the sandbox shares its filesystem, so any workspace file qualifies. The wrapper also loads bare model directories the catalog doesn't list (unlike the strictly-gated TTS wrapper).
Preflight
python3 Skills/audiocpp-asr-extended/scripts/preflight.py --for asr-extended
Trust its verdict over this document. open: false means no ASR model is loaded — ask the user to load one via GuideAnts Settings → Local models. Warnings tell you whether the sideload path (below) is available.
Transcribing by path (with language hint)
python3 Skills/audiocpp-asr-extended/scripts/engine_tool.py transcribe \clip.wav [--language de]
- No upload and no gateway size cap — the engine reads the file in place.
- The engine model id is always
qwen3-asr(fixed by the wrapper), whatever
snapshot is actually loaded.
- Input should be WAV for the raw engine; for other formats, either convert
with ffmpeg first or use the wrapper upload (POST :8082/transcribe, multipart field audio), which re-encodes to 16 kHz mono itself.
Sideloading a non-catalog ASR snapshot
The ASR wrapper's /admin/load accepts any bare directory under /models-local/asr whose leaf name matches the model_id. The engine family defaults to qwen3_asr, so only qwen3_asr-family snapshots work (other families would need the GA_ASR_ENGINE_FAMILY env at service start — a compose change, out of skill scope).
python3 Skills/audiocpp-asr-extended/scripts/fetch_model.py <hf-repo-id> \--dest /models-local/asr/<DirName>curl -s -X POST http://127.0.0.1:8082/admin/load \-H "Content-Type: application/json" -d '{"model_id": "<DirName>"}'
Warning — this replaces the user's loaded ASR model. Ask before doing it, and offer to restore afterwards:
curl -s -X POST http://127.0.0.1:8082/admin/load \-H "Content-Type: application/json" -d '{"model_id": "qwen3_asr_0_6b"}'
Note: GuideAntsApi routing policy (lifecycle plan + apply) owns wrapper load state — a sideload can be silently undone by a later API apply (e.g. after a local-LLM switch). Treat sideloads as session-scoped experiments, not durable configuration.
Related
Speaker-labeled transcripts ("who said what") are the audiocpp-diarize skill.
Reporting
End by telling the user what worked and what was blocked, quoting the preflight/engine evidence.