#1110·voicebox

Only 9 of Chatterbox Turbo's 19 paralinguistic tags are exposed — the 10 delivery tags are missing

Author: ariellerCreated Sep 16, 2026Updated Sep 16, 2026

Summary

Chatterbox Turbo has nineteen paralinguistic tokens. Voicebox exposes nine of them — every one a sound effect. The ten missing ones are the delivery tokens, and they are the half that controls how a line is performed rather than what noise the speaker makes.

They work today. Nothing surfaces them, so nobody uses them.

The full set

From added_tokens.json in ResembleAI/chatterbox-turbo:

Exposed (9), sound: [laugh] [chuckle] [gasp] [cough] [sigh] [groan] [sniff] [shush] [clear throat]

Not exposed (10), delivery: [angry] [crying] [dramatic] [fear] [happy] [narration] [sarcastic] [surprised] [whispering] [advertisement]

Where

app/src/components/Generation/ParalinguisticInput.tsx:

const TAG_REGEX = /\[(laugh|chuckle|gasp|cough|sigh|groan|sniff|shush|clear throat)\]/gi;

with a matching nine-entry badge array. The backend log line on model load (Turbo model supports paralinguistic tags: [...]) reports the same nine, and the docs name only [laugh], [sigh], [gasp] as examples without listing the set.

Worth noting the same nine-item list appears in the reference gradio_tts_turbo_app.py demo (EVENT_TAGS) and in at least one third-party server, which suggests it has been copied from the demo rather than read from the tokenizer. The demo array is a set of UI buttons, not the model's vocabulary.

They work

Measured on a cloned profile, Chatterbox Turbo, n=2 per tag, against an untagged control of the same sentence:

tag mean F0 speaking rate dynamic range
control 220 Hz 20.2 c/s 11.8 dB
[surprised] +36 Hz -3.1 -1.3
[whispering] -27 Hz -2.1 +0.7
[dramatic] +9 -4.4 +1.5
[sarcastic] +12 -4.5 -0.2
[angry] +16 -0.7 -2.2
[happy] +15 -3.2 +0.1

Each moves in the direction its name implies — whispering drops pitch, surprised raises it, dramatic and sarcastic slow delivery by about 20%.

Why it matters beyond discoverability

Spelling is exact and unforgiving: [laugh] is a reserved token, [laughs] is not and is read aloud as the word. A user who cannot see the list guesses, and a near miss is pronounced rather than rejected — which is also the failure mode your own docs describe in voice-personalities.mdx ("If you see [laughs] in TTS output...").

Suggested fix

Extend TAG_REGEX and the badge array to the full nineteen, ideally grouped as sound vs delivery since they are used differently. Reading them from the model's added_tokens.json at load time would keep the list correct across future model revisions instead of pinning today's set.