Install any skill in seconds. Free to start, no credit card required.
Get Started Free →guaardvark/voice
Narration and text-to-speech on the user's machine through Guaardvark's Audio Foundry (Chatterbox, Kokoro, Piper) and consent-gated voice cloning from a reference clip.
Passed 19 of 22 test cases with the skill, and 8 of 22 without it.
and 11 more in the full report
11 fixed8 passed either way3 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 11 test cases the skill fixed. Same model, same prompt, with and without the skill.
Which API route lists all previously uploaded voice clips available for voice cloning in Audio Foundry?
| Checked | Without skill | With skill |
|---|---|---|
| Queries GET /api/audio-foundry/voice-clips | Missed | Passed |
The instructions your model reads when the skill loads.
Read setup first. Expressive voices need the audio_foundry plugin running;
Piper works without it. B=${GUAARDVARK_URL:-http://localhost:5000}.
| engine | route | when |
|---|---|---|
| Chatterbox | Audio Foundry backend: "chatterbox" | expressive, emotion presets, cloning |
| Kokoro | Audio Foundry backend: "kokoro" | fast, clean, 10+ built-in voices (af_heart default) |
| Piper | /api/voice/text-to-speech | offline fallback, no GPU |
GET $B/api/audio-foundry/voices lists what is installed. GET $B/api/voice/voices lists Piper voices.
Over MCP, call generate_speech (text up to 3000 characters, optional voice such as
af_heart, engine auto | kokoro | chatterbox); it waits and returns the file with a download
link. Cloning is not offered over MCP. Without MCP, or for the Chatterbox knobs, use REST:
curl -s -X POST $B/api/audio-foundry/generate/voice -H 'Content-Type: application/json' -d '{
"text": "The line to speak.",
"backend": "auto", # auto | chatterbox | kokoro
"voice_id": "af_heart", # Kokoro voice, or omit
"emotion": "calm", # Chatterbox preset, or omit
"exaggeration": 0.5, "cfg_weight": 0.5, "temperature": 0.8, # Chatterbox knobs, optional
"seed": 7, "output_format": "wav", "async": true
}'
path, document_id). With "async": true or long
text you get 202 {"job_id"}: poll GET $B/api/audio-foundry/jobs/<job_id> until status
is done; the result has path and document_id. Cancel: POST .../jobs/<job_id>/cancel.POST $B/api/voice/narrate
{"script": "...", "engine": "kokoro", "voice": "...", "pause_between_sections": 0.6, "output_format": "wav"}.POST $B/api/voice/text-to-speech {"text", "voice": "libritts"} returns audio_url.test cases passed, vs 8 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.