Skip to content
Showcase/AudioHate - Audio Hate Speech Detection
intermediateaudio

AudioHate - Audio Hate Speech Detection

Audio hate speech detection with explanations. Annotators classify audio clips for hate speech presence, identify target groups, and note acoustic indicators such as tone, emphasis, and prosody (Guo et al., SIGDIAL 2024).

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
# AudioHate - Audio Hate Speech Detection with Explanations
# Based on Guo et al., SIGDIAL 2024
# Paper: https://aclanthology.org/2024.sigdial-1.35/
# Dataset: https://github.com/audio-hate/AudioHateXplain
#
# Task: Classify audio clips for hate speech, identify target groups,
# and note acoustic indicators (tone, emphasis, prosody).
#
# Guidelines:
# - Listen to the full audio clip carefully before annotating
# - Consider both speech content and acoustic features (tone, emphasis)
# - Distinguish between hate speech, offensive language, and neither
# - Identify all applicable target groups when hate/offensive speech is present
# - Rate your confidence in the classification

annotation_task_name: "AudioHate: Explainable Audio Hate Speech Detection"
task_dir: "."

data_files:
  - sample-data.json
item_properties:
  id_key: "id"
  text_key: "audio_url"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

annotation_schemes:
  - annotation_type: radio
    name: hate_speech_classification
    description: "Classify this audio clip for hate speech content"
    labels:
      - name: "Hate Speech"
        tooltip: "Speech that attacks or demeans a group based on protected attributes"
        key_value: "h"
      - name: "Offensive"
        tooltip: "Offensive or inappropriate language that is not targeting a specific group"
        key_value: "o"
      - name: "Neither"
        tooltip: "No hate speech or offensive language detected"
        key_value: "n"

  - annotation_type: multiselect
    name: target_groups
    description: "If hate speech or offensive, select ALL targeted groups (leave empty if Neither)"
    labels:
      - name: "Race"
        tooltip: "Targeting based on race or ethnicity"
      - name: "Gender"
        tooltip: "Targeting based on gender or gender identity"
      - name: "Religion"
        tooltip: "Targeting based on religious beliefs or affiliation"
      - name: "Sexuality"
        tooltip: "Targeting based on sexual orientation"
      - name: "Disability"
        tooltip: "Targeting based on physical or mental disability"
      - name: "Nationality"
        tooltip: "Targeting based on national origin or citizenship"
      - name: "Other"
        tooltip: "Targeting based on other group characteristics"

  - annotation_type: multiselect
    name: acoustic_indicators
    description: "Select any notable acoustic indicators in the speech"
    labels:
      - name: "Aggressive tone"
        tooltip: "Speaker uses a hostile or aggressive vocal tone"
      - name: "Mocking tone"
        tooltip: "Speaker uses a sarcastic or mocking vocal pattern"
      - name: "Emphasis on slurs"
        tooltip: "Speaker places special emphasis on derogatory terms"
      - name: "Raised voice"
        tooltip: "Speaker is shouting or speaking loudly"
      - name: "Threatening prosody"
        tooltip: "Speech rhythm and intonation suggest a threat"
      - name: "Sarcastic intonation"
        tooltip: "Speaker uses sarcastic vocal inflection"

  - annotation_type: radio
    name: confidence
    description: "How confident are you in your classification?"
    labels:
      - name: "Very confident"
        tooltip: "Clear and unambiguous classification"
        key_value: "1"
      - name: "Somewhat confident"
        tooltip: "Fairly certain but some ambiguity"
        key_value: "2"
      - name: "Not confident"
        tooltip: "Difficult to determine, significant ambiguity"
        key_value: "3"

audio_display:
  show_waveform: true
  playback_controls: true
  allow_speed_control: true

allow_all_users: true
instances_per_annotator: 100
annotation_per_instance: 3
allow_skip: true
skip_reason_required: false

Sample Datasample-data.json

json
[
  {
    "id": "audiohate_001",
    "audio_url": "https://example.com/audio/audiohate/clip_001.wav",
    "transcript": "Those people don't belong here. They should go back to where they came from.",
    "duration": 4.2
  },
  {
    "id": "audiohate_002",
    "audio_url": "https://example.com/audio/audiohate/clip_002.wav",
    "transcript": "I think we need to have a more open discussion about immigration policy.",
    "duration": 3.8
  }
]

// ... 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/audiohate-speech-detection
potato start config.yaml

Dataset & paper

Guo et al., SIGDIAL 2024

Citation (BibTeX)

bibtex
@inproceedings{guo-etal-2024-towards-explainable,
    title = "Towards Explainable Audio Hate Speech Detection",
    author = "Guo, Jinmyeong and others",
    booktitle = "Proceedings of the 25th Annual Meeting of the Special Interest Group on Discourse and Dialogue (SIGDIAL 2024)",
    year = "2024",
    publisher = "Association for Computational Linguistics",
    url = "https://aclanthology.org/2024.sigdial-1.45/"
}

Details

Annotation Types

radiomultiselect

Domain

Speech ProcessingContent Moderation

Use Cases

Hate Speech DetectionContent ModerationAudio Analysis

Tags

audiohate-speechcontent-moderationexplainabilitysigdial2024

Found an issue or want to improve this design?

Open an Issue

Related Designs

AfriHate - Hate and Abusive Language for African Languages

Multilingual content-moderation annotation following the AfriHate scheme (Muhammad et al., NAACL 2025), a collection of hate speech and abusive language datasets for 15 African languages including Amharic, Hausa, Igbo, Yoruba, Swahili, Somali and isiZulu. Native speakers familiar with the regional culture assign each tweet a three-way label - hate, abusive, or neutral - and, when the tweet is hateful, mark the targeted attribute (e.g. ethnicity, religion, politics, gender). Sample items are mild, constructed illustrations that avoid real slurs or targeting of real groups; an English gloss is provided for reference only.

radiomultiselect

Aya Red-Teaming - Multilingual Global and Local Harm Annotation

Multilingual safety red-teaming annotation, following the Aya Red-Teaming dataset from 'The Multilingual Alignment Prism' (Aakanksha et al., EMNLP 2024): the first human-annotated collection of harmful prompts across eight languages (English, Hindi, French, Spanish, Russian, Arabic, Serbian, Filipino). Native-speaker annotators judge whether a prompt is harmful, assign harm categories, and - the paper's key contribution - mark whether the harm is GLOBAL (universally recognized) or LOCAL (specific to a language or culture). Sample items are mild, constructed, non-operational illustrations only; they contain no actionable or graphic harmful content.

radiomultiselect

Dynamic Hate Speech Detection

Hate speech classification with fine-grained type labels based on the Dynamically Generated Hate Speech Dataset (Vidgen et al., ACL 2021). Classify content as hateful or not, then identify hate type (animosity, derogation, dehumanization, threatening, support for hateful entities) and target group.

likertmultiselect