Skip to content
Showcase/PodcastFillers Disfluency Tagging
intermediateaudio

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
1:42Classify this audio:HappySadAngryNeutralSubmit

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# 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

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 items

Get This Design

View on GitHub

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)

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

speech_transcriptradio

Domain

SpeechPodcasts

Use Cases

Disfluency DetectionSpeech Event TaggingASR Post-Processing

Tags

filler-wordsdisfluencyspeech-eventspodcastspeech-transcriptPodcastFillers

Found an issue or want to improve this design?

Open an Issue