Skip to content

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

Description

@arieller

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions