Providers
sonic-3
The Cartesia text-to-speech model sonic-3, with every setting it accepts, the allowed value and the default.
The oldest Sonic generation OnCore still runs, and also usable with emotion tagging. Prefer sonic-3.6 for new assistants; there is no reason to move an assistant already running well on this one.
Reached through the Cartesia client directly.
The spoken language is carried onto every Cartesia request, so a French assistant is read with French phonetics rather than English ones.
Settings#
Every setting is optional. Leave one out and OnCore sends nothing for it, so the Default applies. If invalid is what the provider does with a value it does not accept.
| Setting | Type | Allowed | Default | If invalid |
|---|---|---|---|---|
speed | number | 0.6 to 1.5 | 1.0 | Refused, call fails |
volume | number | 0.5 to 2.0 | 1.0 | Refused, call fails |
emotion | string | one emotion name, English only | automatic | Used as sent |
locale | string | a base language such as en, or a regional code such as en-GB | the assistant's spoken language | Refused, call fails |
normalization | string | auto, off, or a locale code such as en-IN | auto | Refused, call fails |
locale takes the place of the spoken language on the request rather than sitting beside it. Cartesia refuses a request carrying both, so OnCore sends locale alone once you set one. If the assistant switches language partway through a call, that switch wins and locale stops applying for the rest of the call.
normalization decides how numbers, dates and abbreviations are expanded before they are spoken. auto lets Cartesia choose from the language of the request, off reads the text exactly as written, and a locale code such as en-IN expands for that variant specifically.
There is no accent setting on this generation. Cartesia refuses one here even when the chosen voice supports it, so accent selection needs sonic-3.5 or sonic-3.6.
Overriding on a single call#
Return this from your assistant-request webhook to change these settings for one call only. The stored voice is left untouched, and the next call starts from it again.
{
"data": {
"overrides": {
"voice": {
"settings": {
"speed": 1,
"volume": 1,
"emotion": "positivity",
"locale": "en-GB",
"normalization": "auto"
}
}
}
}
}Send only the keys you want to change: anything you leave out keeps the value the assistant already has. Add "id" beside "settings" to swap the whole voice for another one from your catalogue at the same time.
neutral, calm, content, excited, sad, angry and scared are the seven Cartesia surfaces as the primary set, and the ones to reach for. Cartesia accepts a much longer list (nostalgic, sarcastic, determined and dozens more), but the primary seven are the ones tuned for reliable results. Emotion is English-only: on a call in another language it has no effect. Leave it unset and the model reads the emotional subtext of the text itself, which is usually what you want on a phone call.
That static emotion setting is a whole-call bias. Per-reply tags are emotion tagging. Model-steered pace and pauses are expressive mode.
Next steps#
- sonic-3.5: the previous Cartesia model.
- Inworld: text-to-speech from Inworld.
- Providers introduction: per-call overrides, and how a wrong value behaves across providers.