Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

30 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 AI Music Recommendation System

DUHacks 5 - Audio-First Music Discovery Platform

An intelligent music recommendation system that uses audio feature analysis and deep embeddings to discover similar songs, without relying on tags, genres, or metadata.


πŸ“‹ Table of Contents


πŸš€ Quick Start

Install Dependencies

cd /workspaces/AIMusicSystem
pip install -r requirements.txt

Run the Dashboard

cd Member4
streamlit run app/streamlit_app.py

The dashboard will open at http://localhost:8501 with a cyberpunk-themed interface featuring 3 interactive pages:

  1. πŸ“Š Discover - Explore songs in embedding space using PCA
  2. 🎯 Recommender - Get personalized recommendations
  3. πŸ’‘ Explainability - Understand why songs are recommended

✨ Features

🎧 Audio Feature Extraction (Member1)

  • Extracts 100+ audio features from raw music files
  • Temporal: MFCCs, Chroma features
  • Rhythmic: Tempo, Beat, Onset strength
  • Harmonic: Spectral centroid, Spectral rolloff, Zero-crossing rate
  • Timbral: Spectral contrast, Tonnetz
  • Groove: Groove-based tempo curves
  • Output: data/song_features.csv

🧠 Deep Embeddings & Clustering (Member2)

  • Converts audio features β†’ low-dimensional embeddings (64-512D)
  • Embedding models: PCA, UMAP, Autoencoder
  • Clustering: K-Means, Hierarchical, DBSCAN
  • Output: data/song_embeddings.npy, trained models

🎯 Smart Recommendations (Member3)

  • History-based: Recommends songs similar to your listening history
  • Seed-based: Finds similar songs given one seed
  • Weighted recency: Recent songs influence recommendations more
  • Cold-start fallback: Works even for new users
  • Dual implementation: Member3 + Cosine similarity fallback

🎨 Interactive Dashboard (Member4)

  • Cyberpunk UI: Neon colors, dark mode, smooth animations
  • 3 Discovery Pages:
    • Visualize songs in 2D embedding space
    • Get top-K recommendations with similarity scores
    • Understand recommendations with component analysis
  • Explainability: 5-component breakdown (tempo, timbre, brightness, harmony, energy)

πŸ—οΈ Architecture

Data Flow

Raw Audio β†’ Audio Features β†’ Embeddings β†’ Recommendations β†’ UI + Explainability
(Member1)    (Member1)       (Member2)     (Member3)        (Member4)

System Overview

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              🎡 Streamlit Dashboard (Member4)            β”‚
β”‚         Cyberpunk UI with 3 interactive pages            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              Integration Layer (Central APIs)            β”‚
β”‚  β€’ load_all_data()         β†’ unified data dict           β”‚
β”‚  β€’ get_recommendations()   β†’ Member3 + fallback          β”‚
β”‚  β€’ explain_pair()          β†’ explainability              β”‚
β”œβ”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚      β”‚              β”‚              β”‚                   β”‚
β”‚   Member1       Member2        Member3            Member4
β”‚   Audio         Embeddings      Recs              Explainability
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ‘₯ Team Contributions

Member1: Audio Feature Engineering

  • Deliverable: audio_features/ module
  • Output: data/song_features.csv (100+ audio features)
  • Key Files: main.py, pipeline/, preprocessing/, features/

Member2: Embeddings & Clustering

  • Deliverable: embeddings/ module
  • Output: data/song_embeddings.npy, trained models
  • Key Files: embedding/, clustering/, visualization/

Member3: Recommendation Engine

  • Deliverable: recommendation/ module
  • Output: Recommendation functions
  • Key File: user_recommendation.py (64 lines, 6 functions)

Member4: UI & Integration (Main Entry Point)

  • Deliverable: Member4/ with app, integration, explainability
  • Output: Streamlit dashboard
  • Key Files: app/, integration/, explainability/

πŸ“¦ Installation

Prerequisites

  • Python 3.8+
  • 4GB RAM (8GB recommended)
  • 2GB disk space

Installation Steps

# 1. Install dependencies
pip install -r requirements.txt

# 2. Run the dashboard
cd Member4
streamlit run app/streamlit_app.py

πŸ’» Usage

Run Streamlit Dashboard (Recommended)

cd Member4
streamlit run app/streamlit_app.py

Visit: http://localhost:8501

Use Python API

from integration.load_data import load_all_data
from integration.recommender_adapter import get_recommendations

# Load data
data = load_all_data()

# Get recommendations
rec_ids, scores = get_recommendations(
    seed_song_id=str(data['song_ids'][0]),
    embeddings=data['embeddings'],
    song_ids=data['song_ids'],
    id_to_idx=data['id_to_idx'],
    k=10
)

Command-Line Tools

Extract Audio Features (Member1):

cd audio_features
python3 main.py --input_dir /path/to/music --output song_features.csv

Train Embeddings (Member2):

cd embeddings
python3 embedding/train.py --input ../data/song_features.csv --method umap

πŸ“ Project Structure

/workspaces/AIMusicSystem/
β”œβ”€β”€ πŸ“± Member4/              # Main entry point (UI + Integration)
β”‚   β”œβ”€β”€ app/                 # Streamlit dashboard
β”‚   β”œβ”€β”€ integration/         # Unified APIs
β”‚   β”œβ”€β”€ explainability/      # Explanation components
β”‚   └── data/
β”œβ”€β”€ 🎚️ Member1/            # Audio feature extraction
β”œβ”€β”€ 🧠 Member2/             # Embeddings & clustering
β”œβ”€β”€ 🎯 Member3/             # Recommendation engine
β”œβ”€β”€ πŸ“Š data/               # Shared data files
β”œβ”€β”€ requirements.txt        # Merged dependencies
β”œβ”€β”€ README.md              # This file
β”œβ”€β”€ IMPLEMENTATION_GUIDE.md # Step-by-step setup
└── MERGE_STRUCTURE.md      # Architecture details

πŸ”Œ API Reference

load_all_data()

Returns unified data dictionary with embeddings, songs, features

get_recommendations(seed_song_id=None, history_song_ids=None, ...)

Returns list of recommended song IDs with similarity scores

analyze_components(song_idx, data)

Returns 5-component analysis for explainability


πŸ› Troubleshooting

Issue: "ModuleNotFoundError: No module named 'recommendation'"
Fix: touch Member3/__init__.py

Issue: "FileNotFoundError: data/song_embeddings.npy"
Fix: Mock data auto-generated; or run cd Member2 && python3 embedding/train.py

Issue: Streamlit stuck loading
Fix: Run with debug: streamlit run app/streamlit_app.py --logger.level=debug


πŸ“ For More Information


Status: βœ… Production Ready | DUHacks 5 | 2026

Releases

Packages

Contributors

Languages