PodcastFillers Disfluency Tagging
Per-segment tagging of filler words and other audio events on podcast audio with time-aligned transcripts, based on the PodcastFillers dataset (Zhu, Caceres, Salamon, Interspeech 2022). Annotators tag each transcript segment with the fillers (uh, um, you know, like, other) and non-filler events (breaths, laughter, agreement sounds, repetitions, music, noise, simultaneous speakers) they hear. Note: this config also enables inline transcript correction, a showcase extension beyond the paper's tagging-only protocol.
About this dataset
PodcastFillers is the first large open dataset built specifically for filler word detection and classification in conversational speech. It contains 145 hours of audio from 199 full-length, gender-balanced English podcast episodes with over 350 speakers, carrying 85,803 manually annotated audio events, including approximately 35,000 filler words ('uh' and 'um').
In the original annotation pipeline, voice-activity detection proposed candidate events, each candidate was centered at 3 seconds inside a 5-second context clip and highlighted in the interface, and crowd workers first decided whether the candidate was a filler, then chose among five filler labels (uh, um, you know, like, other) or eight non-filler labels (laughter, breath, agreement sound, regular words, repetitions, simultaneous speakers, music, noise). Each candidate was annotated by two people, or three when the first two disagreed.
This showcase task reproduces the taxonomy with Potato's speech_transcript scheme: each time-aligned segment appears as a card with its timestamp, speaker, and ASR text next to an audio player, and annotators apply any number of event tags per segment. Untagged segments are implicitly 'regular words', so the paper's regular-words class is not a separate tag here.
One deliberate extension: the scheme's allow_correction option lets annotators type a corrected transcript for a segment, which goes beyond the PodcastFillers protocol (workers labeled highlighted candidates and never edited transcripts). The extension is flagged in the config header and instructions so the divergence from the paper is explicit.
Filler annotation at this granularity supports training and evaluating filler detectors and classifiers, and downstream uses such as automatic filler removal in podcast editing tools, the application that motivated the original dataset.
- Released
- 2022 (Interspeech; arXiv:2203.15135)
- Audio
- 145 hours, 199 English podcast episodes
- Speakers
- 350+ (gender-balanced)
- Annotated events
- 85,803
- Filler words
- ~35,000 ('uh' and 'um')
- Label taxonomy
- 5 filler + 8 non-filler classes
- Judgments per candidate
- 2, or 3 on disagreement
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# PodcastFillers Disfluency and Filler-Word Tagging
# Based on: Ge Zhu, Juan-Pablo Caceres, and Justin Salamon. "Filler Word
# Detection and Classification: A Dataset and Benchmark." Proc. Interspeech
# 2022, pp. 3769-3773. doi:10.21437/Interspeech.2022-10992. arXiv:2203.15135.
# Paper: https://www.isca-archive.org/interspeech_2022/zhu22e_interspeech.pdf
# Dataset: https://podcastfillers.github.io/
#
# Task: Time-aligned podcast transcript segments are shown as cards with an
# inline audio player (the speech_transcript scheme). For each segment, the
# annotator tags the filler words ("uh", "um", "you know", "like", other) and
# other audio events (breaths, laughter, agreement sounds, repetitions, music,
# noise, simultaneous speakers) that occur in it, following the PodcastFillers
# label taxonomy. In the original pipeline, VAD-detected candidates were
# centered at 3 s inside a 5 s context clip and crowd workers first judged
# whether the highlighted candidate was a filler, then picked one of five
# filler or eight non-filler labels; each candidate was annotated by two
# people, or three when the first two disagreed.
#
# CAVEAT (deliberate showcase extension): this config enables the scheme's
# inline transcript-correction affordance (allow_correction: true), which goes
# beyond the paper's tagging-only protocol -- PodcastFillers annotators labeled
# highlighted candidates and did not edit transcripts.
#
# Annotation instructions adapted from Section 2 (the PodcastFillers dataset
# and its annotation pipeline) of the paper; the paper does not publish the
# verbatim annotator guidelines.
annotation_task_name: "PodcastFillers Disfluency Tagging"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "episode_title"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
port: 8000
server_name: localhost
annotation_instructions: |
## Filler Words and Other Audio Events
You will hear short podcast audio clips with a time-aligned transcript,
broken into segments. Listen to each segment and tag every filler word and
other audio event that occurs in it.
### Filler tags
A filler word is a sound or word a speaker utters to hold the floor or buy
time while thinking, without adding meaning:
- **uh** -- the filler sound "uh" ("we were, uh, surprised")
- **um** -- the filler sound "um" ("it's, um, complicated")
- **you_know** -- "you know" used as a filler, not as a real question
- **like** -- "like" used as a filler, not for comparison or preference
- **other_filler** -- any other filler ("er", "ah", "well", "so" used to stall)
Only tag these words when they are used as fillers. "I like coffee" is not a
filler; "it was, like, an hour" is.
### Non-filler event tags
- **breath** -- an audible breath or inhale
- **laughter** -- the speaker or another person laughs
- **agreement_sound** -- a backchannel sound such as "uh-huh", "mm-hmm", "yeah"
- **repetition** -- a stuttered or repeated word or phrase ("I- I went", "we we tried")
- **simultaneous_speakers** -- two or more people talking over each other
- **music** -- music playing in the segment
- **noise** -- other non-speech noise (bumps, clicks, background sounds)
A segment can carry several tags; tag every event you hear. If a segment is
plain fluent speech with none of these events, leave it untagged.
### Transcript correction
If the automatic transcript of a segment is wrong -- a missing or misheard
word, or a filler that was dropped -- type the corrected text for that
segment. (Note: this correction step is a showcase extension beyond the
original PodcastFillers protocol.)
### Clip audio quality
Finally, rate the overall audio quality of the clip.
annotation_schemes:
- annotation_type: speech_transcript
name: filler_events
description: "Tag filler words and other audio events on each segment, and correct the transcript where needed."
segments_key: segments
error_types: [uh, um, you_know, like, other_filler, breath, laughter, agreement_sound, repetition, simultaneous_speakers, music, noise]
allow_correction: true
audio_key: audio
- annotation_type: radio
name: clip_audio_quality
description: "Overall audio quality of this clip."
labels:
- name: "clean"
tooltip: "Clear studio-quality speech, no interfering sounds"
key_value: "1"
- name: "some-background"
tooltip: "Intelligible speech with noticeable background noise or a music bed"
key_value: "2"
- name: "degraded"
tooltip: "Speech is hard to hear: heavy noise, clipping, low volume, or crosstalk"
key_value: "3"
allow_all_users: true
instances_per_annotator: 40
annotation_per_instance: 2
allow_skip: true
Sample Datasample-data.json
[
{
"id": "pf_001",
"episode_title": "Startup Diaries: Pitching Without a Deck",
"audio": "https://example.com/audio/podcastfillers/startup_diaries_clip01.wav",
"segments": [
{
"start": 0,
"end": 4.2,
"text": "So the investor meeting was, uh, not what we expected at all.",
"speaker": "spk_A"
},
{
"start": 4.2,
"end": 9.6,
"text": "They asked for numbers and I just, um, I froze for a second, honestly.",
"speaker": "spk_A"
},
{
"start": 9.6,
"end": 13.1,
"text": "Mm-hmm, yeah, that first pitch is brutal for everyone.",
"speaker": "spk_B"
},
{
"start": 13.1,
"end": 18.4,
"text": "But then Dana pulled up the revenue chart and the whole room changed.",
"speaker": "spk_A"
}
]
},
{
"id": "pf_002",
"episode_title": "Trailhead Talks: Winter Camping Basics",
"audio": "https://example.com/audio/podcastfillers/trailhead_clip07.wav",
"segments": [
{
"start": 0,
"end": 5,
"text": "The biggest mistake beginners make is, like, packing way too much fuel.",
"speaker": "spk_A"
},
{
"start": 5,
"end": 10.3,
"text": "Wait, too much? I would have guessed the, uh, the opposite.",
"speaker": "spk_B"
},
{
"start": 10.3,
"end": 16.8,
"text": "Right, everyone does, but a canister lasts longer in the cold than people think if you sleep with it.",
"speaker": "spk_A"
},
{
"start": 16.8,
"end": 19.2,
"text": "Huh, sleep with the canister. Okay.",
"speaker": "spk_B"
}
]
}
]
// ... and 8 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/audio/podcastfillers-disfluency-tagging potato start config.yaml
Dataset & paper
Zhu et al., Interspeech 2022
Citation (BibTeX)
@inproceedings{zhu22e_interspeech,
title = {{Filler Word Detection and Classification: A Dataset and Benchmark}},
author = {Ge Zhu and Juan-Pablo Caceres and Justin Salamon},
year = {2022},
booktitle = {{Interspeech 2022}},
pages = {3769--3773},
doi = {10.21437/Interspeech.2022-10992},
issn = {2958-1796}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
SPoRC Podcast Speaker-Role and Turn Annotation
Speaker-role labeling and diarization validation for podcast episodes, based on the Structured Podcast Research Corpus (SPoRC). Annotators read diarized speaker turns as chat bubbles synced to the episode audio, label each turn's speaker as Host, Guest, or Neither following the paper's Prolific validation protocol, flag incorrect turn boundaries, rate overall diarization quality, and record the hosts' names.
Audio Transcription Review
Review and correct automatic speech recognition transcriptions with waveform visualization.
Audio-Visual Sentiment Analysis
Rate sentiment in speech segments following CMU-MOSI and CMU-MOSEI multimodal annotation protocols.