joakes90/Auto_Engine_Classification
Engine Sound Windows (YouTube-derived, metadata-only) Timestamps and weak labels for training an engine-configuration audio classifier (v-twin vs. inline-4 vs. flat-6, etc.) from short audio windows. This dataset does not contain audio. Each row points at a public YouTube video id plus a (start_sec, end_sec) window; you fetch and slice the audio yourself (see Reconstructing audio below). Why metadata-only The source audio was collected by searching YouTube (via… See the full description on the dataset page: https://huggingface.co/datasets/joakes90/Auto_Engine_Classification.
Engine Sound Windows (YouTube-derived, metadata-only)
Timestamps and weak labels for training an engine-configuration audio classifier (v-twin vs. inline-4 vs. flat-6, etc.) from short audio windows. This dataset does not contain audio. Each row points at a public YouTube video id plus a (start_sec, end_sec) window; you fetch and slice the audio yourself (see Reconstructing audio below).
Why metadata-only
The source audio was collected by searching YouTube (via `yt-dlp`) for engine-sound terms and downloading matching videos. The dataset author does not hold redistribution rights to that audio, so — following the precedent set by AudioSet, MusicCaps, and FSD50K for exactly this situation — only the video id, window timestamps, and derived labels are published here, not audio bytes. This also means the cc-by-sa-4.0 license above covers only this repository's metadata (ids, timestamps, labels); the underlying YouTube videos remain under their original creators' copyright and are not relicensed or redistributed by this dataset in any form.
Dataset structure
Windows are 2.0 seconds long with 1.0 second of step between consecutive windows (50% overlap), confirmed directly from the underlying manifest's timestamps.
Label semantics
contains_target and quality_flag are model-derived, not human-verified — they come from running `panns_inference`'s AudioTagging model (trained on AudioSet) over each window and thresholding two sets of its 527 class scores:
contains_target = Truewhen the window's max score across a set of engine/vehicle AudioSet classes exceeds0.585— i.e. an engine sound was likely detected.quality_flag = Truewhen the window's max score across a set of background-noise/contamination AudioSet classes exceeds0.2— i.e. contamination was likely detected.
`quality_flag = True` is a caution flag, not an endorsement — despite the name, it does not mean the window is good quality. Treat both columns as weak, noisy supervision (useful for filtering or as auxiliary features) rather than ground truth.
engine_class, by contrast, comes from which search query the source video was found under — also not independently verified per-video (see Known limitations).
Engine classes
34 engine classes, 3,877 source videos, after exclusions below:
Class sizes are heavily imbalanced (10 to 394 files per class) — account for this when sampling/weighting during training.
Known limitations
- Weak, auto-derived labels.
contains_target/quality_flagcome from an AudioSet-trained tagger's thresholded scores, not human review (see Label semantics). - Class imbalance. File counts per class range from 10 (
h12) to 394 (i4). - All classes have representation in both train and test sets (no class has zero test windows after conflict exclusions).
- Cross-class conflicts. Cross-referencing every video id against every engineclass it was scraped under found videos that had been pulled into **more than one conflicting engineclass** (almost certainly multi-engine compilation/comparison videos caught by more than one search query). All windows sourced from any of these videos were dropped entirely (99,105 of 1,983,082 rows, 5.0%) rather than guessing which label was correct. This also resulted in 9 engine classes being dropped entirely from the export (they had no videos that didn't also appear in at least one conflicting class). The class table above reflects the final, post-conflict list.
- Link rot. Since only YouTube ids are published (see Why metadata-only), some fraction of source videos will become unavailable over time as creators delete or privatize them — unlike a self-hosted audio dataset, this one can shrink on its own.
- `engine_class` isn't independently verified per video beyond the cross-class-conflict check above — a video could still be mislabeled by its original search query in a way that doesn't produce a detectable cross-class conflict (e.g. a single video mislabeled but never scraped under any other class).
Reconstructing audio
For a given row, download the source video's audio and trim to the window:
yt-dlp -f bestaudio -x --audio-format m4a \
"https://www.youtube.com/watch?v=<youtube_id>" -o source.m4a
ffmpeg -i source.m4a -ss <start_sec> -to <end_sec> -c copy window.m4aFor batch reconstruction, group rows by youtube_id first so each video is downloaded once regardless of how many windows come from it.
License and usage
The labels, timestamps, and ids in this repository are released under cc-by-sa-4.0. This does not extend any rights to the underlying YouTube video content, which remains the property of its original creators — this dataset does not redistribute, host, or relicense that audio. Commercial users should independently verify their own right to use any audio they fetch via the ids in this dataset.
