CoolFace
Datasetpublic

laion/voice-acting-burst-prompts

Scene prompts for 49 vocal-burst classes 24,500 screenplay-style scene prompts, 500 per class across 49 vocal-burst classes, written to make a text-to-speech model produce a specific non-verbal vocalisation inside ordinary speech rather than as an isolated sound effect. This dataset contains prompts only. No audio is included. Why the prompts look the way they do These prompts exist to fix a measured defect. An earlier run generated 60 clips from twenty… See the full description on the dataset page: https://huggingface.co/datasets/laion/voice-acting-burst-prompts.

sourceHugging Facecc-by-4.0updated 16d agoView on Hugging Face
0likes145downloads
Dataset Card

Scene prompts for 49 vocal-burst classes

24,500 screenplay-style scene prompts, 500 per class across 49 vocal-burst classes, written to make a text-to-speech model produce a specific non-verbal vocalisation inside ordinary speech rather than as an isolated sound effect.

This dataset contains prompts only. No audio is included.

Why the prompts look the way they do

These prompts exist to fix a measured defect. An earlier run generated 60 clips from twenty hand-written scream and shriek scenes and measured their dynamic contrast — the loudest 300 ms window against the clip's own median window, in dB:

nmedian peak-over-median dBclips ≥ 10 dB
generated scenes with no calm lead-in306.1—
generated shriek scenes, no calm lead-in307.9—
A reference TTS system's burst clips259.8—
all 60 no-lead-in clips60—4 (7 %)

The model performed the entire scene at burst intensity — the dialogue around the burst was itself shouted. Audio like that teaches a burst model "this utterance is loud", not "there is a burst here", which is worse than useless for training a burst detector or adapter. The cause was the scene writing, not the model: none of those twenty scenes had a calm opening.

So every prompt in this corpus opens calm:

  1. 1.the direction before the first spoken line explicitly instructs ordinary, level, conversational delivery, and contains no word of panic, shouting or high emotion;
  2. 2.the first spoken line is a full, mundane sentence about an everyday subject — a bus timetable, the price of coffee, whether the washing will dry — long enough to take four or five seconds to say, with no exclamation mark, no shouting capitals and no burst in it;
  3. 3.the burst is a departure from that baseline;
  4. 4.in 62 % of scenes the speaker then settles back into exactly the opening delivery.

The contrast actually achieved

Same statistic, same code, on audio generated from these prompts:

nmedian peak-over-median dB≥ 10 dB
this corpus, loud classes24012.0171 (71 %)
this corpus, mid classes24011.2166 (69 %)
this corpus, quiet classes12011.582 (68 %)
prior scenes, no calm lead-in607.04 (7 %)

The loud band is the one directly comparable with the 6.1 dB figure, and it roughly doubles it. Note, though, that all three bands moved together (quiet 11.5, mid 11.2, loud 12.0). We had expected the quiet classes to stay low, and they did not. Peak-over-median measures departure from the lead-in, not absolute loudness, and a soft hum after a level spoken line is a large relative excursion too. Read this statistic as evidence that the calm lead-in is present and working -- not as a loudness ranking, and not as a way to select loud clips.

How the prompts were written

Written by `google/gemma-4-31B-it` (bf16, temperature 1.0, top-p 0.95, top-k 64), one scene per completion, from a fixed few-shot instruction with three hand-written exemplars spanning a loud, a moderate and a quiet class.

Diversity is structural, not sampled. Each of the 500 scenes in a class is pinned to a distinct (place, topic, trigger) triple drawn from banks of 60 places, 50 everyday conversation topics and ≥ 15 per-class triggers, plus a speaker (2 genders × 3 age bands × 12 speaking registers), the position of the burst in the scene, and whether the scene returns to calm. Sampling is deterministic per class (sha256 of the class name), so the corpus reproduces exactly.

Speaker demographics — the balance actually achieved

The six (gender × age band) cells are assigned by scene index, not sampled: cell i % 6 walks a fixed order, so every class gets the same split and any prefix of a class is balanced too. Drawing the cell at random 500 times would give cells of roughly 68–99 and a different imbalance in each of the 49 classes.

Counted off the corpus as staged, not as intended:

promptsshare
female12,25050.0 %
male12,25050.0 %
middle_aged8,13433.2 %
older_adult8,13433.2 %
young_adult8,23233.6 %
cellpromptsper class
female/middle_aged4,06783.0
female/older_adult4,06783.0
female/young_adult4,11684.0
male/middle_aged4,06783.0
male/older_adult4,06783.0
male/young_adult4,11684.0

Across all 49 classes the smallest cell holds 83 prompts and the largest 84.

The age band and sex are written into the speaker description inside the prompt itself, not only into the metadata: the voice-acting model reads the voice out of the paragraph, so a gender column that never reached the prose would balance the spreadsheet and nothing else. The gate rejects any generation whose opening direction does not carry both (demo_gender_missing, demo_age_missing).

Children and teenagers appear nowhere in this corpus. The three bands are the three the brief names, all adult.

Every burst is spelled phonetically inside the quotes and the sound is never named there: the voice-acting model speaks the words Sigh, Gasp, Cough, Ahem, Pfft aloud as words when they stand inside quotes. The sound is named in the direction outside the quotes, where the model interprets it but does not say it.

The quality gate

Every generation was checked before any GPU time was spent on audio. 24,500 accepted, 219 rejected (0.9 % of all generations). Rejected specs were regenerated with a fresh sampling seed, up to six attempts.

rejection reasoncountwhat it catches
name_sound_spoken136the sound is NAMED inside the quotes and would be spoken as a word
burst_absent53the class's phonetic spelling is not in any later spoken segment
lead_line_shouts13shouting capitals in the calm opening line
dup_opening_line8the calm opening line repeats one already used in the class
lead_direction_not_calm6no explicit delivery instruction in the opening direction
lead_direction_hot3the opening direction is already at high arousal (panic, shouting, terror, ear-splitting) — the §54 defect, stated as a test

Accepted on attempt: 0 → 24,307, 1 → 171, 2 → 19, 3 → 2, 4 → 1 (attempt 0 is the first try).

data/rejections.parquet ships every rejected generation with its reason and text, so the gate can be audited or re-tuned rather than trusted.

Intended generation settings

The prompts were written for, and the reference audio generated with, the voice-acting model at:

setting (Space slider name)value`TTSServer.generate` kwarg
CFG scale2.5cfg_scale
STG scale1.5stg_scale
Breathing factor1.10duration_multiplier
Fixed duration (s)automatic (0.0)gen_duration
Reference window (s)10.0ref_duration

voice_ref=None, so the voice comes from the scene's own speaker description and ref_duration is inert; it is recorded anyway so the configuration is never silently different from the stated one. Seeds 1234 / 5678 / 9012. Watermarking off.

Fields

fieldmeaning
id<class>__<index>
vocal_burst_classone of the 49 classes
index0–499 within the class
promptthe scene prompt itself
intensityloud / mid / quiet — how far above the speaker's own dialogue the burst should sit
burst_spellingthe phonetic spelling the scene was asked to use
speaker_gendermale / female, 250/250 within every class
speaker_age_bandyoung_adult / middle_aged / older_adult
speaker_agethe exact age phrase written into the prompt, e.g. a man of about fifty
speaker_registerthe speaker's ordinary manner, e.g. dry and deadpan
placewhere the scene happens
calm_opening_topicwhat the calm opening line is about
triggerwhat causes the burst
burst_positionwhere in the scene the burst falls
returns_to_calmwhether the scene settles back afterwards
llm_attempt0–5; how many gated-out attempts preceded this one

Classes

classintensitypromptsphonetic spellings used
affirmative_gruntquiet500Mhm, Mm hm, Mmhmm, Uh huh
cackleloud500Hehehehehe, Ah hah hah hah, Heeheeheehee, Kah hah hah hah
childlike_gigglemid500Hehehehe, Heeheehee, Hihihihi, Teehee hehe
clears_throatquiet500Ekhm, Hhkm hhkm, Ehh hhm
convulsive_sobloud500Huh huh huhhh, Hkk hkk huhhh, Uh uh uhhhh
coughmid500Khh, Ekh, Khuh
coughingmid500Khh khh khh, Ekh ekh ekh, Khuh khuh khh
deep_breathquiet500Hhhhhhh, Hhhaaaah, Fhhhhhh
deep_breathingquiet500Hhhhhh hhhhhh, Hhhaah hhhaah, Fhhhh hhhhh
displeased_gruntmid500Hmph, Nnngh, Hmmph
effort_gruntmid500Hnngh, Rrgh, Unnf
exasperated_sighmid500Haaaah, Uuuugh, Hhhaaah
fast_breathingmid500Hah hah hah hah, Hh hh hh hh, Huh huh huh huh
fearful_gaspmid500Hhap, Haaah, Hhh
frustrated_groanmid500Uuuugh, Nnnnngh, Aaaargh
growlmid500Grrrrr, Rrrrrr, Grrrhh
guffawloud500Hah hah hah hah, Bwah hah hah, Haw haw haw
gulpsquiet500Glk, Gulk, Glup
heavy_breathingmid500Huuuh huuuh, Hhhaaa hhhaaa, Huh huuuh
hiccupquiet500Hic, Hik, Hicc
hiccupsquiet500Hic hic hic, Hik hik hik, Hicc hicc
hissmid500Ssssss, Tsssss, Ssshhh
hummingquiet500Mmmm mm mmmm, Hmmm mmm hmm, Mmm mmm mmm
mournful_wailloud500Aaaaaahhhh, Ooooohhhh, Aaaiiiieeee
nervous_gigglemid500Heh heh, Hehe heh, Ha ha, heh
nervous_gulpquiet500Glk, Gulk, Hglk
normal_breathingquiet500Hhh hhh, Hh hh hh, Hhhh hhhh
pain_moanmid500Ooooohhh, Aaaanngh, Mmmnnngh
pantingmid500Hah hah hah, Haa haa haa, Huh hah huh
pleasure_moanquiet500Mmmmmm, Oooooh, Aaaaah
purrquiet500Mrrrrr, Prrrrr, Mrrr rrr
quiet_sobquiet500Hh hh hh, Uhh uhh, Mm hh hh
relief_sighmid500Hhhaaaah, Fwooooh, Haaaaah
screamloud500Aaaaaaah, Aaaargh, Aaaaaaargh
sharp_inhalemid500Hhk, Ssshh, Hah
shriekloud500Eeeeeek, Aaaiieee, Eeeeee
slow_breathingquiet500Hhhhhhhh hhhhhhhh, Hhhhaaah hhhhaaah, Fhhhhhh fhhhhh
snickermid500Heh heh heh, Hn heh heh, Hmf heh heh
sniffquiet500Snff, Ssnf, Snf snf
snortmid500Hnff, Snrk, Pfff
snorting_gigglemid500Hnk hehehe, Snrk hehehe, Pff hehehe
sobsmid500Huh huh huh, Hu hu huh, Hh huh huh
soft_humquiet500Mmm, Hmmm, Mhmm
surprised_gaspmid500Haah, Ooh, Huh
swallowsquiet500Glk, Gulk, Glup
trembling_whimperquiet500Nnnh, Hnnnn, Mmmnnh
whispered_mumblequiet500Mmnn mmnh, Mnn mnn, Hmnn mnn
wistful_sighquiet500Hhhaaah, Mmmhaaah, Hhhhh aah
yawnmid500Haaawww, Aaaahwww, Hoaaawww

Two classes present in the source list were dropped, because the list's own exclusion rules remove them:

  • —`wolf_whistle` — a lip whistle, not phonation -- the list's own exclusion set removes whistles
  • —`tsk` — a dental/alveolar tongue click -- the list's own exclusion set removes tongue clicks

Licensing

The prompts are our own text: they were written by a language model from instructions and word banks authored for this corpus. They are released under CC BY 4.0 and may be used with any speech model, commercially or otherwise. The reference audio generated from them is published at `laion/voice-acting-burst-audio` under the same licence.

Reproducing

$SC/code/vb_promptgen/
  vbclasses.py   49 classes: description, phonetic spellings, recogniser regex,
                 intensity, >=15 triggers each; plus the two dropped classes and why
  specs.py       the combinatorial sampler, the instruction, the three exemplars
  pg_gate.py     the quality gate
  pg_gen.py      batched generation with gemma-4-31B-it, resumable per prompt
  pg_audio.py    generated audio into tar shards
  pg_contrast.py the peak-over-median dB measurement
  pg_publish.py  this staging directory

The reference audio for these prompts was generated with a voice-acting AI model.