Oatda generate speech
Skill devcsde/oatda-openclaw-skills/skills/oatda-generate-speech
OpenClaw skills for OATDA's unified LLM API gateway — text, vision, image, video, audio (TTS/STT/translation). 10+ providers, 100+ models, 1 API key.
npx -y skills add devcsde/oatda-openclaw-skills --skill oatda-generate-speechAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Text-to-speech (TTS) and AI voice generation through OATDA's unified audio API gateway. Triggers when the user wants to convert text to speech, synthesize voice, create narration, voiceovers, audiobooks, podcast audio, accessibility audio, or generate spoken audio from text. Supports OpenAI, xAI Grok, Google Gemini and other TTS models via a single API key.
SKILL.md
5.0 KB, as published. Nobody here has run it
OATDA Speech Generation
Generate spoken audio from text through OATDA's unified audio API.
API Key Resolution
All commands need the OATDA API key. Resolve it inline for each exec call:
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}"
If the key is empty or null, tell the user to get one at https://oatda.com and configure it.
Security: Never print the full API key. Only verify existence or show first 8 chars.
Model Resolution
⚠️ Model availability changes over time. Always call
oatda-list-modelswith?type=audioto verify the exact model ID, available voices, and supported parameters before generating speech.
If the user provides provider/model format directly (for example openai/gpt-4o-mini-tts), split on /.
Use the oatda-list-models results to determine:
- Available voices (from
supported_params.voice.values) - Supported response formats
- Optional parameters like
languageorinstructions
If the user does not specify a model, query oatda-list-models first and offer a choice from the currently available TTS models.
Discovering Audio Model Parameters
Query available audio models and inspect supported_params before sending optional fields:
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X GET "https://oatda.com/api/v1/llm/models?type=audio" \
-H "Authorization: Bearer $OATDA_API_KEY" | jq '.audio_models[] | {id, supported_params}'
Look for:
audio_modescontainingtts- supported
voicevalues - allowed
response_formatvalues - optional fields like
instructionsorlanguage
API Call
The speech endpoint returns binary audio, not JSON. Always save the response to a file.
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/speech" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "<PROVIDER>",
"model": "<MODEL>",
"input": "<TEXT_TO_SPEAK>",
"voice": "alloy",
"response_format": "mp3",
"speed": 1.0
}' \
--output speech.mp3
Common Parameters
input: Text to convert to speech, max 15000 charactersvoice: Voice name, e.g.alloy,nova,shimmerresponse_format:mp3,opus,aac,flac,wav,pcm,mulaw, oralawspeed: 0.25 to 4.0, default 1.0instructions: Optional tone/style guidance for supported modelslanguage: Optional language code for supported models
Success Handling
If the request succeeds, tell the user where the file was saved, for example:
Speech generated successfully:
speech.mp3
If headers matter, use curl -D headers.txt while still saving the audio body with --output.
Error Handling
| HTTP Status | Meaning | Action |
|---|---|---|
| 401 | Invalid API key | Tell user to check their key |
| 402 | Insufficient credits | Tell user to check balance |
| 400 | Bad request / model not supported | Check model format and query oatda-list-models with type=audio |
| 429 | Rate limited or monthly cap | Wait briefly and retry once |
| 500 | Provider error | Show the error message if returned |
Example
export OATDA_API_KEY="${OATDA_API_KEY:-$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)}" && \
curl -s -X POST "https://oatda.com/api/v1/llm/speech" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OATDA_API_KEY" \
-d '{
"provider": "openai",
"model": "gpt-4o-mini-tts",
"input": "Welcome to OATDA, one API to direct all.",
"voice": "alloy",
"response_format": "mp3",
"speed": 1.0
}' \
--output speech.mp3
Note: The model ID above is an example. Always verify the current model ID via
oatda-list-modelsbefore use.
Notes
- Endpoint:
/api/v1/llm/speech - Use
input, notprompt, for TTS requests - Always save the response with
--output - Use
oatda-list-modelsto discover available audio models - Equivalent capability name:
generate_speech - Related skills:
oatda-list-models,oatda-transcribe-audio,oatda-translate-audio