Views
No views yet
1import torch
2import torch.nn.functional as F
3import json
4from audio_model import GenureClassifier
5
6# Load the model
7device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
8model = GenureClassifier(device=device)
9model.load('models/model.pth')
10model.eval()
11
12# Load class names
13with open('models/classes.json', 'r') as f:
14 classes = json.load(f)
15
16# Classify an audio file
17audio_paths = ['path/to/your/audio.wav']
18with torch.no_grad():
19 logits = model(audio_paths)
20 probabilities = F.softmax(logits, dim=1)
21 predicted_class = torch.argmax(probabilities, dim=1)
22
23print(f"Predicted genre: {classes[predicted_class.item()]}")1import torch
2import torch.nn.functional as F
3import json
4from audio_model import GenureClassifier
5
6# Initialize model
7device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
8model = GenureClassifier(device=device)
9model.load('models/model.pth')
10model.eval()
11
12# Load class names
13with open('models/classes.json', 'r') as f:
14 classes = json.load(f)
15
16# Predict on multiple files
17audio_paths = ['song1.wav', 'song2.mp3', 'song3.wav']
18with torch.no_grad():
19 logits = model(audio_paths)
20 probabilities = F.softmax(logits, dim=1)
21
22# Display detailed results
23for i, probs in enumerate(probabilities):
24 print(f"\n📁 File: {audio_paths[i]}")
25 print("🎯 Top 3 predictions:")
26
27 # Get top 3 predictions
28 top3_indices = torch.topk(probs, 3).indices
29 top3_probs = torch.topk(probs, 3).values
30
31 for j, (idx, prob) in enumerate(zip(top3_indices, top3_probs)):
32 emoji_map = {
33 'blues': '🎵', 'classical': '🎼', 'country': '🤠',
34 'disco': '🕺', 'hiphop': '🎤', 'jazz': '🎷',
35 'metal': '🤘', 'pop': '🎤', 'reggae': '🏝️', 'rock': '🎸'
36 }
37 genre = classes[idx.item()]
38 emoji = emoji_map.get(genre, '🎵')
39 print(f" {j+1}. {emoji} {genre}: {prob.item():.3f}")pip install torch torchaudio librosa pydub soundfile numpypip install -r requirements.txtkaggle_data/
├── blues/ # 100 blues tracks (*.wav)
├── classical/ # 100 classical tracks (*.wav)
├── country/ # 100 country tracks (*.wav)
├── disco/ # 100 disco tracks (*.wav)
├── hiphop/ # 100 hip-hop tracks (*.wav)
├── jazz/ # 100 jazz tracks (*.wav)
├── metal/ # 100 metal tracks (*.wav)
├── pop/ # 100 pop tracks (*.wav)
├── reggae/ # 100 reggae tracks (*.wav)
└── rock/ # 100 rock tracks (*.wav)genre_train.ipynb.├── audio_model.py # Main model architecture
├── model_utils.py # Audio preprocessing utilities
├── inference.py # Standalone inference script
├── demo.py # Demo with sample files
├── train.py # Training script
├── models/ # Model files
│ ├── model.pth # Trained model weights
│ └── classes.json # Genre class names
├── examples/ # Example notebooks and scripts
│ └── training_notebook.ipynb # Jupyter training example
├── requirements.txt # Python dependencies
└── README.md # This file1@misc{ranit-audio-genre-classifier,
2 title={Audio Genre Classifier},
3 author={Ranit},
4 year={2025},
5 url={https://huggingface.co/storylinez/audio-genre-classifier},
6 repository={https://github.com/Kawai-Senpai/deep_audio_analysis}
7}