Skip to content

Competition-winning SED (Sound Event Detection) system that identifies audio events using ML, optimized for real-world error cost reduction.

Notifications You must be signed in to change notification settings

8asic/mlpc2025-sound-event-detection

Repository files navigation

🏆 Team Fumbling: Sound Event Detection (SED) System

🥇 Best Model Performance (Lowest Cost Score) out of 77 Teams

Ranking Proof

Official ranking by course lecturers, jump to page 18 for our team's results

Univ.-Prof. Dr. Gerhard Widmer: "How much time did you spend on this project? ..."
Team Member: "More than we should..."
Team Member: "Maybe a better answer would be we were like too invested into it. So, yes, I mean we got into a loop; as Professor (Paul) Primus said, we came up with 11 hypotheses. 'This doesn’t work', 'OK', we came with another one and so on..."
Univ.-Prof. Dr. Gerhard Widmer: "You just loved it!"
Team Member: "Exactly."

📌 Overview

A competition-winning Sound Event Detection (SED) system developed for JKU Linz's Machine Learning and Pattern Classification (MLPC SS25) course, leveraging free-text annotations to enable reuse of general audio datasets for specialized detectioneliminating manual relabeling. Key innovations:

🚧 Under Development Key innovations are still being documented

🎯 Results

🚧 Under Development This section contains preliminary results and is not yet ready for deployment/reproducibility. Metrics are being actively updated.

Benchmark Comparison (Our Model vs. Baseline)

Metric Our Score Baseline Improvement
Weighted Cost Score 41.813723 ↓ #%
False Negatives 12
Inference Speed
Mechanical Sounds

🛠️ Setup

1. Installation

# Clone repository
git clone https://github.com/8asic/mlpc2025-sound-event-detection.git
cd mlpc2025-sound-event-detection

# Create and activate conda environment
conda create -n mlpc python=3.9 -y
conda activate mlpc

# Install core package in editable mode
pip install -e .

# Run automated installation script (detects hardware and installs optimal packages)
python -m scripts.install

# Or manually specify extras
pip install -e .[cpu,extras]  # CPU-only
pip install -e .[gpu,extras]  # GPU support

2. Data Setup

# 3. Download all datasets (6.8GB + 6.1GB + 2GB)
python scripts/setup_data.py --tasks 2 3 4

# Or download specific tasks:
python scripts/setup_data.py --tasks 2  # Task 2 only (6.8GB)
python scripts/setup_data.py --tasks 3  # Task 3 only (6.1GB) 
python scripts/setup_data.py --tasks 4  # Task 4 only (2GB)

🏗️ Project Phases

Stage Description Resources
Task 0 Form Teams
Task 1 Data Annotation Task PDF, Slides
Task 2 Data Exploration Task PDF, Slides
Task 3 Classification Task PDF, Slides
Task 4 Challenge Task PDF, Slides

📂 Repository Structure

.
├── artifacts/                      # Final outputs that should NOT be modified manually
│   ├── predictions/                # Model prediction files (e.g., challenge submissions)
│   ├── presentations/              # Presentation decks (PPT/PDF) for each task
│   └── reports/                    # Formal PDF reports for grading
│
├── assets/                         # Static media files
│   ├── figures/                    # Generated plots/visualizations (PNG/JPEG)
│   └── results/                    # Official competition proofs/screenshots
│
├── data/                           # All dataset files (git-ignored raw data)
│   ├── huggingface/                # HuggingFace-specific files (e.g., evaluation scripts)
│   ├── processed/                  # Cleaned/transformed data (features, embeddings)
│   └── raw/                        # Original datasets from JKU Cloud (never modify)
│
├── docs/                           # Project documentation
│   ├── meeting_notes/              # Team meeting summaries (Markdown format)
│   └── project_description/        # Original project briefings/requirements  
│
├── models/                         # Serialized model binaries (weights, pickles)
│   ├── experimental/               # Models under development/testing
│   └── production/                 # Final models used in challenges (ONNX/PyTorch)
│
├── notebooks/                      # Jupyter notebooks by project phase
│   ├── 1_Data_Annotation/          # Task 1: Annotation analysis
│   ├── 2_Data_Exploration/         # Task 2: EDA and clustering
│   │   └── archive/                # Archived exploration notebooks (WIP versions)
│   ├── 3_Classification/           # Task 3: Model training
│   │   ├── archive/                # Archived classification notebooks
│   │   ├── configs/                # Hyperparameter configurations (YAML/JSON)
│   │   ├── model_analysis/         # Model evaluation notebooks
│   │   └── model_training/         # Training pipelines
│   └── 4_Challenge/                # Task 4: Final challenge solutions
│       ├── archive/                # Archived challenge attempts
│       └── bonus_task/             # Extra challenge experiments
│
├── scripts/                        # Utility scripts
│   ├── install.py                  # Environment setup and dependency installer
│   └── setup_data.py               # Dataset download/preprocessing handler
│
├── src/                            # Reusable Python code (proper package structure)
│   ├── data/                       # Data loading/preprocessing utilities
│   ├── evaluation/                 # Custom metrics/cost calculations
│   ├── features/                   # Feature engineering (audio/text)
│   ├── models/                     # Core model architectures (PyTorch)
│   ├── utils/                      # Helper functions and shared utilities
│   └── config.py                   # Centralized project configuration
│
├── tasks/                          # Original task materials
│   ├── Task1_Data_Annotation/      # PDFs/slides from Task 1  
│   ├── Task2_Data_Exploration/     # PDFs/slides from Task 2
│   ├── Task3_Classification/       # PDFs/slides from Task 3
│   └── Task4_Challenge/            # PDFs/slides from Task 4
│
├── tutorials/                      # Course tutorial materials
│
├── .gitattributes                  # Git configuration for line endings/binary files
├── .gitignore                      # Specifies untracked files (e.g., raw data)
├── pyproject.toml                  # Python project metadata and dependencies
├── README.md                       # Project overview and documentation
└── setup.py                        # Package installation configuration

👥 Team Fumbling

Member Socials
Abdalaziz Ayoub 🔗 Github, 🔗 LinkedIn
Abdulkarim Al Jamal 🔗 Github, 🔗 LinkedIn
Beibarys Abissatov 🔗 Github, 🔗 LinkedIn
Jeronim Bašić 🔗 Github

About

Competition-winning SED (Sound Event Detection) system that identifies audio events using ML, optimized for real-world error cost reduction.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •