Chatterbox Turbo
Low-latency-oriented English speech, preset or cloned voices, and native square-bracket vocal events.
Identity
Featherless model ID: ResembleAI/chatterbox-turbo.
Use Turbo when
Choose Turbo for English voice-agent or narration work where native vocal-event tags and a smaller, lower-compute model matter. Choose base Chatterbox when the original project’s exaggeration and CFG behavior matters more than Turbo’s tag vocabulary. Chatterbox Multilingual is a different model and is not available under this model ID.
Preset request
curl --fail-with-body https://api.featherless.ai/v1/audio/speech \
--header "Authorization: Bearer $FEATHERLESS_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "ResembleAI/chatterbox-turbo",
"input": "Thanks for waiting. [chuckle] I found the account.",
"voice": "Andy",
"response_format": "wav"
}' \
--output chatterbox-turbo.audio \
--write-out "Content-Type: %{content_type}\n"The Python examples need pip install requests. The TypeScript examples use top-level await, so save one with a .mjs extension, or set "type": "module" in package.json, and run it on Node 18 or newer.
Load /v1/audio/voices rather than freezing the preset list in an application. The current inventory lists 20 presets and defaults to Andy: Aaron, Abigail, Anaya, Andy, Archer, Brian, Chloe, Dylan, Emmanuel, Ethan, Evelyn, Gavin, Gordon, Ivan, Laura, Lucy, Madison, Marisol, Meera, and Walter.
Voice cloning request
Each snippet below reads a local reference.wav, sends it as bare base64, and writes the result to chatterbox-turbo-clone.audio.
reference_audio=$(base64 < reference.wav | tr -d '\n')
curl --fail-with-body https://api.featherless.ai/v1/audio/speech \
--header "Authorization: Bearer $FEATHERLESS_API_KEY" \
--header "Content-Type: application/json" \
--data-binary @- \
--output chatterbox-turbo-clone.audio \
--write-out "Content-Type: %{content_type}\n" <<JSON
{
"model": "ResembleAI/chatterbox-turbo",
"input": "This line uses the supplied reference voice. [sigh]",
"voice": {
"clone": {
"audio": {
"data": "$reference_audio",
"format": "wav"
}
}
},
"response_format": "wav"
}
JSONFeatherless accepts WAV and MP3 reference clips for this model. That set is enforced before any audio is produced: a clip in any other container is rejected with a 400 and never reaches synthesis. The five-second minimum reference length the model authors document is not checked by Featherless, so a shorter clip is accepted and fails, if it fails, during synthesis. A reference_text value is accepted and carried but is not guaranteed to be used; see Parameter support.
Safest vocal-event tags
The official Turbo demo exposes nine event markers: [clear throat], [sigh], [shush], [cough], [groan], [sniff], [gasp], [chuckle], and [laugh]. Preserve the exact lowercase spelling. The published schema for this model currently says [sush], but the official tokenizer and demo use [shush]; the UI should insert [shush]. Tags may appear wherever the event belongs in the sentence and count toward the model’s text limit.
Extended tokenizer vocabulary
The official tokenizer also contains [angry], [fear], [surprised], [whispering], [advertisement], [dramatic], [narration], [crying], [happy], and [sarcastic]. These exact tokens can pass through tokenization, but they are not all exposed by the official demo or guaranteed by the published schema for this model. Treat them as experimental until each behavior is runtime-verified; unknown bracket text may be spoken aloud.
Limits and controls
Turbo documents a 500-character text maximum. Featherless does not prevalidate that model-specific limit, so longer input is forwarded unchanged and can fail during synthesis. The controls base Chatterbox exposes, such as exaggeration and CFG weight, are not part of this request contract, and neither are seed or sampling knobs. See Parameter support below for exactly how each field is treated.
Parameter support
Unrecognized request fields are accepted, not rejected. A body carrying a field this endpoint does not read still comes back as a normal 200 with audio, and the field is discarded before the request reaches the model. A successful response is therefore never evidence that a field was honored, so confirm behavior with a listening probe rather than with the status code.
Supported
Parameter | Required | Behavior |
|---|---|---|
| yes | Must be |
| yes | Target text, forwarded verbatim |
| no | Checked against the preset inventory |
| no | Bare base64 reference clip |
| no | Clone container, |
| no | Delivery control, |
| no | Delivery control, |
| no | Delivery control, boolean |
| no | Delivery control, |
input is forwarded verbatim: Featherless applies no length cap, no trimming, and no rewriting of square-bracket tags. A preset voice name is checked against the preset inventory for this model before any audio is produced, so load /v1/audio/voices rather than hard-coding the list. voice.clone.audio.data takes a bare base64 reference clip, and wav and mp3 are the accepted clone containers for this model.
delivery, stream_format, stream, and encoding are delivery controls only; they do not change generation. When more than one is present, delivery wins, then stream_format, then stream.
Best-effort
A few fields are read and carried with the request, but they are not guaranteed to affect the output for this model. Treat them as best-effort: send them if you want them, and verify by listening. speed is a real parameter constrained to the 0.25 to 4.0 range — a value outside it fails with 422 before any audio is produced, and omitting it substitutes 1.0 — but it is not guaranteed to change the delivered audio for this model. instructions is accepted and carried, and is likewise not guaranteed to affect the output. A voice.clone.reference_text value is accepted and carried, but it travels only alongside a reference clip and is not guaranteed to be used.
response_format is a request, not a guarantee. mp3 and wav are always accepted, but the only conversion Featherless performs is PCM-to-WAV rewrapping and there is no codec transcoding, so an accepted request can come back in a different container than the one asked for. The response is labeled with what the bytes actually are, so read Content-Type, or the format field of the JSON delivery envelope, to learn which container arrived.
Unsupported
Rejected with an error
These fail before any audio is produced, so the client sees the failure directly.
Parameter | Result | Error code |
|---|---|---|
|
| None named |
|
| None named |
|
| None named |
Empty |
| None named |
|
|
|
|
|
|
|
|
|
Any body that fails schema validation returns 422, not 400. That covers a speed outside the 0.25 to 4.0 range, a response_format or clone clip format outside the allowed enum, and an empty input. The accepted clone containers are wav and mp3.
Accepted and ignored
These return 200 with audio and no error, and have no effect on the result. Nothing in the response signals that they were dropped.
Parameter | What happens |
|---|---|
| Returns |
| Returns |
| Returns |
| Returns |
| Returns |
Any other field not listed under Supported or Best-effort | Returns |
exaggeration and cfg_weight are the base Chatterbox controls and are not part of this request contract. seed is discarded, so output is not reproducible. language is discarded because this model ID is English-only.
Formats and streaming
This model is WAV-native. A requested MP3 can still be delivered as honest WAV, because Featherless does not transcode between codecs, so inspect Content-Type or JSON delivery’s format field. Resemble positions Turbo as a low-latency model, but on Featherless generation completes before any audio is delivered. SSE is therefore deferred delivery, not proof of native streaming inference.
Output watermark
Resemble states that Chatterbox-generated audio includes its imperceptible PerTh watermark, designed to remain detectable after common editing and MP3 compression. Treat watermarking as model-family output behavior, not a request option.
Preview UI contract
Show preset and reference-audio voice modes, an English-only label, a 500-character counter, and a nine-item Vocal events picker that inserts exact tags at the caret. Keep the ten additional tokenizer tokens behind an Experimental label. Do not show exaggeration, CFG, or language selection. A speed control and a reference-transcript input are best-effort for this model, so expose them only if a probe confirms they change the audio.
Sources
Official Chatterbox repository, official Turbo model card, official tokenizer vocabulary.