Clasificador de géneros musicales con Machine Learning, FastAPI, React y RAG con LangChain + Gemini.
Frontend (React + Vite + Tailwind) ↓ Backend (FastAPI) ├── /predict → Clasificación con SVM ├── /explain → Explicación con RAG ├── /chat → Chatbot musical └── /recommend → Recomendaciones ↓ Capa RAG (LangChain + Gemini + ChromaDB)
| Capa | Tecnologías |
|---|---|
| Frontend | React, Vite, Tailwind CSS, Recharts |
| Backend | FastAPI, Uvicorn |
| ML | scikit-learn (SVM), librosa, XGBoost |
| RAG | LangChain, ChromaDB, Google Gemini |
| Dataset | FMA Small (8.000 tracks, 8 géneros) |
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtcd musicclassifier/frontend
pnpm installCrea un archivo .env en musicclassifier/backend/:
GEMINI_API_KEY=tu_api_key_aqui
cd musicclassifier/backend
uvicorn main:app --reload --port 8000cd musicclassifier/frontend
pnpm devElectronic, Experimental, Folk, Hip-Hop, Instrumental, International, Pop, Rock
| Modelo | F1 Macro | Test Accuracy |
|---|---|---|
| SVM (final) | 0.57 | 58% |
- Explicación de predicciones — El LLM explica por qué una canción pertenece a un género
- Chatbot musical — Responde preguntas sobre géneros usando Wikipedia como contexto
- Recomendaciones — Sugiere artistas y subgéneros basándose en el historial