--- datasets: - lewtun/music_genres_small base_model: - facebook/wav2vec2-large metrics: - accuracy - f1 tags: - audio - music - classification - Wav2Vec2 pipeline_tag: audio-classification --- # Music Genre Classification Model 🎶 This model classifies music genres based on audio signals. It was fine-tuned on the model **[Wav2Vec2](https://huggingface.co/facebook/wav2vec2-large)** and using the datasets **[music_genres_small](https://huggingface.co/datasets/lewtun/music_genres_small)**. You can find a **GitHub** repository with an interface hosted by a Flask API to test the model: **[music-classifier repository](https://github.com/gastonduault/Music-Classifier)** ## Metrics - **Validation Accuracy**: 75% - **F1 Score**: 74% - **Validation Loss**: 0.77 ## Example Usage ```python from transformers import Wav2Vec2ForSequenceClassification, Wav2Vec2FeatureExtractor import librosa import torch # Genre mapping corrected to a dictionary genre_mapping = { 0: "Electronic", 1: "Rock", 2: "Punk", 3: "Experimental", 4: "Hip-Hop", 5: "Folk", 6: "Chiptune / Glitch", 7: "Instrumental", 8: "Pop", 9: "International", } model = Wav2Vec2ForSequenceClassification.from_pretrained("gastonduault/music-classifier") feature_extractor = Wav2Vec2FeatureExtractor.from_pretrained("facebook/wav2vec2-large") # Function for preprocessing audio for prediction def preprocess_audio(audio_path): audio_array, sampling_rate = librosa.load(audio_path, sr=16000) return feature_extractor(audio_array, sampling_rate=16000, return_tensors="pt", padding=True) # Path to your audio file audio_path = "./Nirvana - Come As You Are.wav" # Preprocess audio inputs = preprocess_audio(audio_path) # Predict with torch.no_grad(): logits = model(**inputs).logits predicted_class = torch.argmax(logits, dim=-1).item() # Output the result print(f"song analized:{audio_path}") print(f"Predicted genre: {genre_mapping[predicted_class]}")