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.
- Quick Start
- Features
- Architecture
- Team Contributions
- Installation
- Usage
- Project Structure
- API Reference
- Troubleshooting
cd /workspaces/AIMusicSystem
pip install -r requirements.txtcd Member4
streamlit run app/streamlit_app.pyThe dashboard will open at http://localhost:8501 with a cyberpunk-themed interface featuring 3 interactive pages:
- π Discover - Explore songs in embedding space using PCA
- π― Recommender - Get personalized recommendations
- π‘ Explainability - Understand why songs are recommended
- 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
- 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
- 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
- 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)
Raw Audio β Audio Features β Embeddings β Recommendations β UI + Explainability
(Member1) (Member1) (Member2) (Member3) (Member4)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π΅ 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
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Deliverable:
audio_features/module - Output:
data/song_features.csv(100+ audio features) - Key Files:
main.py,pipeline/,preprocessing/,features/
- Deliverable:
embeddings/module - Output:
data/song_embeddings.npy, trained models - Key Files:
embedding/,clustering/,visualization/
- Deliverable:
recommendation/module - Output: Recommendation functions
- Key File:
user_recommendation.py(64 lines, 6 functions)
- Deliverable:
Member4/with app, integration, explainability - Output: Streamlit dashboard
- Key Files:
app/,integration/,explainability/
- Python 3.8+
- 4GB RAM (8GB recommended)
- 2GB disk space
# 1. Install dependencies
pip install -r requirements.txt
# 2. Run the dashboard
cd Member4
streamlit run app/streamlit_app.pycd Member4
streamlit run app/streamlit_app.pyVisit: http://localhost:8501
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
)Extract Audio Features (Member1):
cd audio_features
python3 main.py --input_dir /path/to/music --output song_features.csvTrain Embeddings (Member2):
cd embeddings
python3 embedding/train.py --input ../data/song_features.csv --method umap/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
Returns unified data dictionary with embeddings, songs, features
Returns list of recommended song IDs with similarity scores
Returns 5-component analysis for explainability
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
- Setup Guide: See IMPLEMENTATION_GUIDE.md
- Architecture: See MERGE_STRUCTURE.md
- Member Docs: See
Member{1,2,3,4}/README.md
Status: β Production Ready | DUHacks 5 | 2026