Only 9 of Chatterbox Turbo's 19 paralinguistic tags are exposed — the 10 delivery tags are missing
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.
Source: jamiepine/voicebox