Read shared execution guidance once per task before using tools. It covers model discovery, optional cost checks, imports, and recovery.
Use speech/cartesia-sonic for fast, natural speech from a public stock voice or a saved consented Character voice. The Creative Claw model ID stays stable while the underlying Cartesia Sonic version can be upgraded.
Choose deliberately
Cartesia is a strong first choice for low latency, direct primary emotion control, and simple speed or volume adjustments. ElevenLabs v2 is a strong first choice for steady professional narration. ElevenLabs v3 is a strong first choice for acted delivery with inline audio tags.
Honor an explicit model choice. Never switch providers silently. When the first result misses the intended voice or performance, offer a controlled comparison using the same text, language, pacing, and output format.
Choose a voice
Call get_model_params({ model: "speech/cartesia-sonic" }) before generation. It returns the current curated Featured catalog with exact IDs, language, locale, gender, description, use cases, and the full Cartesia Voice Library URL.
Use exactly one selector:
voice_idselects a stock voice. Any exact public Cartesia Voice Library ID is supported, not only the curated shortlist.character_idselects a private cloned Character voice. If the Character has a retained consented source but no Cartesia provider copy, Creative Claw creates it lazily and stores it for reuse.
Do not combine voice_id and character_id. Choose by target language and regional accent first, then by use case and delivery. Prefer the runtime curated shortlist when the user does not request a specific library voice.
The current shortlist covers:
- English: Skylar, Daniel, Gemma, Parker, Archie, Jacqueline, Lauren, Jameson
- Arabic: Hassan, Raed, Reem, Rania
- Hindi: Siya, Rohan, Anuj, Neha
- Hebrew: Ayala, Noam, Yarden, Gil
- Spanish: Ximena, Ramon, Adriana, Rafael
- French: Inès, Mathis, Henri, Jade
- German: Sebastian, Moritz, Marlene, Vreni
- Portuguese: Helena, Tiago, Eloá
- Japanese: Yuto, Naoki, Aiko
- Chinese: Feng, Jing
Names are discovery aids, not selectors. Always use the exact voice_id returned by get_model_params or copied from the public Cartesia library.
Generate
- Preserve the user's script and requested language.
- Choose a public
voice_idor privatecharacter_id. - Keep performance direction in punctuation and model controls, not as bracketed text that may be spoken.
- Call
generate_speechwithmodel: "speech/cartesia-sonic". - Listen for identity, accent, pronunciation, emotional fit, pace, clipping, and artifacts.
- For another audition, change one control at a time. Do not silently change the voice or provider.
Required top-level fields:
model: "speech/cartesia-sonic"text
Optional top-level fields:
voice_idorcharacter_idemotion:neutral,angry,excited,content,sad, orscaredspeed:0.6to1.5, starting at1.0format:wav,mp3, orpcmsample_rate: use a value returned byget_model_params
Optional fields inside extras:
volume:0.5to2.0, starting at1.0language_code: use a value returned byget_model_params, especially for short, ambiguous, or multilingual text
Do not pass ElevenLabs voice_settings, v3 square-bracket audio tags, audio_url, or language_boost to Cartesia.
Starting points
- Neutral narration:
emotion: "neutral",speed: 1,extras.volume: 1 - Energetic advertisement:
emotion: "excited",speed: 1.05 - Warm delivery:
emotion: "content",speed: 0.96 - Tense dialogue:
emotion: "scared"or"angry", supported by natural punctuation
Emotion is guidance, not a strict transformation. Split the script when its emotional direction changes materially. Use SSML only after checking current runtime guidance, and keep it sparse.
Stock voice example:
{
"model": "speech/cartesia-sonic",
"voice_id": "<public Cartesia voice ID from get_model_params>",
"text": "Welcome. Today we will show you how to get started.",
"emotion": "neutral",
"speed": 1,
"format": "mp3",
"sample_rate": "44100",
"extras": {
"volume": 1,
"language_code": "en"
}
}
Private Character example:
{
"model": "speech/cartesia-sonic",
"character_id": "<Character UUID>",
"text": "Ready to turn one idea into your next campaign?",
"emotion": "excited",
"speed": 1.05,
"format": "mp3",
"extras": {
"volume": 1.05,
"language_code": "en"
}
}