<< All versions

Skill v1.0.0

currentLLM-judged scan90/100
elumenotion/guideants/audiocpp-asr-extended
──Details
PublishedOctober 23, 2026 at 08:51 PM
Content Hashsha256:9e437eb44e0676ec...
Git SHAe15b28b9cbc0
──Files
Files (1 file, 3.1 KB)
SKILL.md3.1 KBactive
SKILL.md · 80 lines · 3.1 KB

version: "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

bash
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)

bash
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).

bash
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:

bash
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.

All versions