Files
Audio-Classifier/QUICKSTART.md
Benoit 95194eadfc initial commit
 Ce qui a été implémenté
Backend Python (FastAPI)
 Architecture complète avec FastAPI
 Extraction de features audio avec Librosa (tempo, key, spectral features, energy, danceability, valence)
 Classification intelligente avec Essentia (genre, mood, instruments)
 Base de données PostgreSQL + pgvector (prête pour embeddings)
 API REST complète (tracks, search, similar, analyze, audio streaming/download)
 Génération de waveform pour visualisation
 Scanner de dossiers avec analyse parallèle
 Jobs d'analyse en arrière-plan
 Migrations Alembic
Frontend Next.js 14
 Interface utilisateur moderne avec TailwindCSS
 Client API TypeScript complet
 Page principale avec liste des pistes
 Statistiques globales
 Recherche et filtres
 Streaming et téléchargement audio
 Pagination
Infrastructure
 Docker Compose (PostgreSQL + Backend)
 Script de téléchargement des modèles Essentia
 Variables d'environnement configurables
 Documentation complète
📁 Structure Finale
Audio Classifier/
├── backend/
│   ├── src/
│   │   ├── core/                    # Audio processing
│   │   ├── models/                  # Database models
│   │   ├── api/                     # FastAPI routes
│   │   └── utils/                   # Config, logging
│   ├── models/                      # Essentia .pb files
│   ├── requirements.txt
│   ├── Dockerfile
│   └── alembic.ini
├── frontend/
│   ├── app/                         # Next.js pages
│   ├── components/                  # React components
│   ├── lib/                         # API client, types
│   └── package.json
├── scripts/
│   └── download-essentia-models.sh
├── docker-compose.yml
├── README.md
├── SETUP.md                         # Guide détaillé
├── QUICKSTART.md                    # Démarrage rapide
└── .claude-todo.md                  # Documentation technique
🚀 Pour Démarrer
3 commandes suffisent :
# 1. Télécharger modèles IA
./scripts/download-essentia-models.sh

# 2. Configurer et lancer backend
cp .env.example .env  # Éditer AUDIO_LIBRARY_PATH
docker-compose up -d

# 3. Lancer frontend
cd frontend && npm install && npm run dev
🎯 Fonctionnalités Clés
 CPU-only : Fonctionne sans GPU  100% local : Aucune dépendance cloud  Analyse complète : Genre, mood, tempo, instruments, energy  Recherche avancée : Texte + filtres (BPM, genre, mood, energy)  Recommandations : Pistes similaires  Streaming audio : Lecture directe dans le navigateur  Téléchargement : Export des fichiers originaux  API REST : Documentation interactive sur /docs
📊 Performance
~2-3 secondes par fichier (CPU 4 cores)
Analyse parallèle (configurable via ANALYSIS_NUM_WORKERS)
Formats supportés : MP3, WAV, FLAC, M4A, OGG
📖 Documentation
README.md : Vue d'ensemble
QUICKSTART.md : Démarrage en 5 minutes
SETUP.md : Guide complet + troubleshooting
API Docs : http://localhost:8000/docs (après lancement)
Le projet est prêt à être utilisé ! 🎵
2025-11-27 13:54:34 +01:00

4.4 KiB

🚀 Démarrage Rapide - Audio Classifier

En 5 minutes

1. Configuration initiale

cd "/Users/benoit/Documents/code/Audio Classifier"

# Copier les variables d'environnement
cp .env.example .env

# IMPORTANT : Éditer .env et définir votre chemin audio
# AUDIO_LIBRARY_PATH=/Users/benoit/Music
nano .env

2. Télécharger les modèles d'IA

./scripts/download-essentia-models.sh

Cela télécharge ~300 MB de modèles Essentia pour la classification.

3. Lancer le backend

docker-compose up -d

Vérifier : http://localhost:8000/health

4. Analyser votre bibliothèque

# Analyser un dossier (remplacer par votre chemin)
curl -X POST http://localhost:8000/api/analyze/folder \
  -H "Content-Type: application/json" \
  -d '{"path": "/audio", "recursive": true}'

# Note: "/audio" correspond à AUDIO_LIBRARY_PATH dans le conteneur

Vous recevrez un job_id. Suivre la progression :

curl http://localhost:8000/api/analyze/status/VOTRE_JOB_ID

5. Lancer le frontend

cd frontend
cp .env.local.example .env.local
npm install
npm run dev

Ouvrir : http://localhost:3000

📊 Exemples d'utilisation

Rechercher des pistes

# Par texte
curl "http://localhost:8000/api/search?q=jazz"

# Par genre
curl "http://localhost:8000/api/tracks?genre=electronic&limit=10"

# Par BPM
curl "http://localhost:8000/api/tracks?bpm_min=120&bpm_max=140"

# Par ambiance
curl "http://localhost:8000/api/tracks?mood=energetic"

Trouver des pistes similaires

# 1. Récupérer un track_id
curl "http://localhost:8000/api/tracks?limit=1"

# 2. Trouver des similaires
curl "http://localhost:8000/api/tracks/TRACK_ID/similar?limit=10"

Statistiques

curl "http://localhost:8000/api/stats"

Écouter / Télécharger

🎯 Ce qui est analysé

Pour chaque fichier audio :

Tempo (BPM) Tonalité (C major, D minor, etc.) Genre (50 genres : electronic, jazz, rock, etc.) Ambiance (56 moods : energetic, calm, dark, etc.) Instruments (40 instruments : piano, guitar, drums, etc.) Énergie (score 0-1) Danceability (score 0-1) Valence (positivité émotionnelle) Features spectrales (centroid, zero-crossing, etc.)

Performance

Sur CPU moderne (4 cores) :

  • ~2-3 secondes par fichier
  • Analyse parallèle (4 workers par défaut)
  • 1000 fichiers ≈ 40-50 minutes

Pour accélérer : Ajuster ANALYSIS_NUM_WORKERS dans .env

📁 Structure

Audio Classifier/
├── backend/          # API Python + analyse audio
├── frontend/         # Interface Next.js
├── scripts/          # Scripts utilitaires
├── .env              # Configuration
└── docker-compose.yml

🔍 Endpoints Principaux

Endpoint Méthode Description
/api/tracks GET Liste des pistes
/api/tracks/{id} GET Détails piste
/api/search GET Recherche textuelle
/api/tracks/{id}/similar GET Pistes similaires
/api/analyze/folder POST Lancer analyse
/api/audio/stream/{id} GET Streaming audio
/api/audio/download/{id} GET Télécharger
/api/stats GET Statistiques

Documentation complète : http://localhost:8000/docs

🐛 Problèmes Courants

"Connection refused"

docker-compose ps  # Vérifier que les services sont up
docker-compose logs backend  # Voir les erreurs

"Model file not found"

./scripts/download-essentia-models.sh
ls backend/models/*.pb  # Vérifier présence

Frontend ne charge pas

cd frontend
cat .env.local  # Vérifier NEXT_PUBLIC_API_URL
npm install  # Réinstaller dépendances

📚 Documentation Complète

🎵 Formats Supportés

MP3 WAV FLAC M4A OGG

💡 Prochaines Étapes

  1. Analyser votre bibliothèque : Lancer l'analyse sur vos fichiers
  2. Explorer l'interface : Naviguer dans les pistes analysées
  3. Tester la recherche : Filtrer par genre, BPM, mood
  4. Découvrir les similaires : Trouver des recommandations

Enjoy! 🎶