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).
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# 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
[
{
"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 itemsGet This Design
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)
@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
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated 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.
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.
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.