help@rskworld.in +91 93305 39277
RSK World
  • Home
  • Development
    • Web Development
    • Mobile Apps
    • Software
    • Games
    • Project
  • Technologies
    • Data Science
    • AI Development
    • Cloud Development
    • Blockchain
    • Cyber Security
    • Dev Tools
    • Testing Tools
  • Blog
  • About
  • Contact

Theme Settings

Color Scheme
Display Options
Font Size
100%
Back to Project
RSK World
music-classification
/
utils
RSK World
music-classification
Music Classification Dataset - Genre Classification + Music AI + Audio ML
utils
  • __pycache__
  • __init__.py1.6 KB
  • advanced_features.py8.3 KB
  • audio_augmentation.py6.3 KB
  • audio_processor.py5.5 KB
  • feature_extractor.py6.7 KB
  • model_comparison.py8.8 KB
  • realtime_processor.py8.8 KB
dashboard.phpintegration_tests.rs.gitignoreREADME.mdadvanced_features.py
.gitignore
Raw Download
Find: Go to:
# Music Classification Dataset - Git Ignore File
# Author: Molla Samser
# Company: RSK World
# Website: https://rskworld.in

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# Virtual Environment
venv/
env/
ENV/
.venv
.env

# Jupyter Notebook
.ipynb_checkpoints
*.ipynb_checkpoints

# Model Files
models/saved_models/*.pkl
models/saved_models/*.h5
models/saved_models/*.pt
models/saved_models/*.pth
models/saved_models/*.joblib

# Data Files (large audio files)
data/audio/**/*.wav
data/audio/**/*.mp3
data/audio/**/*.flac
*.wav
*.mp3
*.flac

# IDEs
.vscode/
.idea/
*.swp
*.swo
*~
.project
.pydevproject
.settings/

# OS
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
Desktop.ini

# Logs
*.log
logs/
*.out

# Temporary files
*.tmp
temp/
tmp/

# Testing
.pytest_cache/
.coverage
htmlcov/
.tox/

# Documentation builds
docs/_build/
site/

# Backup files
*.bak
*.backup
*~

# Compressed files
*.zip
*.tar.gz
*.rar

# Exclude large datasets
data/large_datasets/
109 lines•1.2 KB
text
README.md
Raw Download

README.md

# Music Classification Dataset

<!--
/**
* Project: Music Classification Dataset
* Author: Molla Samser
* Company: RSK World
* Designer & Tester: Rima Khatun
* Website: https://rskworld.in
* Email: help@rskworld.in, support@rskworld.in
* Phone: +91 93305 39277
* Description: Music genre classification dataset with audio samples
* License: Educational Purpose Only
*/
-->

## šŸ“– Overview

This dataset includes audio samples from multiple music genres with genre labels. Perfect for music information retrieval, genre classification, audio feature extraction, and music analysis applications.

## šŸŽµ Features

- **Multiple music genres** - Classical, Jazz, Rock, Pop, Hip-Hop, Electronic, Country, Blues
- **Labeled audio samples** - Each audio file is properly labeled with its genre
- **Training and test sets** - Pre-split datasets for easy model training
- **Audio features extracted** - MFCC, Spectral Centroid, Chroma, and more
- **Ready for classification models** - Compatible with popular ML frameworks

## šŸ“Š Dataset Structure

```
music-classification/
ā”œā”€ā”€ data/
│ ā”œā”€ā”€ audio/
│ │ ā”œā”€ā”€ classical/
│ │ ā”œā”€ā”€ jazz/
│ │ ā”œā”€ā”€ rock/
│ │ ā”œā”€ā”€ pop/
│ │ ā”œā”€ā”€ hiphop/
│ │ ā”œā”€ā”€ electronic/
│ │ ā”œā”€ā”€ country/
│ │ └── blues/
│ ā”œā”€ā”€ train_data.csv
│ ā”œā”€ā”€ test_data.csv
│ └── features.csv
ā”œā”€ā”€ models/
│ ā”œā”€ā”€ train_model.py
│ ā”œā”€ā”€ predict.py
│ └── saved_models/
ā”œā”€ā”€ notebooks/
│ ā”œā”€ā”€ exploratory_analysis.ipynb
│ └── audio_visualization.ipynb
ā”œā”€ā”€ utils/
│ ā”œā”€ā”€ audio_processor.py
│ └── feature_extractor.py
└── requirements.txt
```

## šŸŽÆ Genre Categories

1. **Classical** - Orchestral, Chamber, Symphony
2. **Jazz** - Swing, Bebop, Fusion
3. **Rock** - Classic Rock, Hard Rock, Alternative
4. **Pop** - Contemporary Pop, Dance Pop
5. **Hip-Hop** - Rap, Trap, Old School
6. **Electronic** - House, Techno, Ambient
7. **Country** - Traditional, Modern Country
8. **Blues** - Delta Blues, Electric Blues

## šŸš€ Getting Started

### Prerequisites

- Python 3.8 or higher
- pip package manager
- Virtual environment (recommended)

### Installation

1. Clone or download this repository
2. Navigate to the project directory
3. Install required packages:

```bash
pip install -r requirements.txt
```

### Quick Start

```python
# Load and analyze audio files
from utils.audio_processor import AudioProcessor
from utils.feature_extractor import FeatureExtractor

# Initialize processors
processor = AudioProcessor()
extractor = FeatureExtractor()

# Load audio file
audio_path = 'data/audio/rock/sample01.wav'
audio_data = processor.load_audio(audio_path)

# Extract features
features = extractor.extract_mfcc(audio_data)
print(f"MFCC Features: {features.shape}")
```

## šŸ”§ Technologies Used

- **Audio Formats**: WAV, MP3
- **Python Libraries**: Librosa, NumPy, Pandas, Scikit-learn
- **Processing**: Audio Feature Extraction, Signal Processing
- **ML Models**: Random Forest, SVM, Neural Networks

## šŸ“ˆ Usage Examples

### 1. Train a Classification Model

```bash
python models/train_model.py --model random_forest --epochs 100
```

### 2. Make Predictions

```bash
python models/predict.py --audio sample_music.wav
```

### 3. Extract Audio Features

```bash
python utils/feature_extractor.py --input data/audio/jazz/ --output features/
```

## šŸ“Š Dataset Statistics

- **Total Samples**: 1000+ audio files
- **Duration**: 30 seconds per sample
- **Sample Rate**: 22050 Hz
- **Format**: WAV (lossless), MP3 (compressed)
- **Split Ratio**: 80% Training, 20% Testing

## šŸŽ“ Difficulty Level

**Intermediate** - Requires basic understanding of:
- Python programming
- Audio signal processing
- Machine learning concepts
- Library usage (Librosa, Scikit-learn)

## šŸ“„ File Descriptions

### Data Files

- `train_data.csv` - Training dataset with file paths and labels
- `test_data.csv` - Testing dataset for model evaluation
- `features.csv` - Extracted audio features for all samples

### Scripts

- `audio_processor.py` - Audio loading and preprocessing utilities
- `feature_extractor.py` - Feature extraction functions
- `train_model.py` - Model training pipeline
- `predict.py` - Prediction and inference script

## šŸŽÆ Applications

- Music genre classification
- Music recommendation systems
- Audio content analysis
- Music information retrieval
- Playlist generation
- Audio tagging and categorization

## šŸ“š Resources

- [Librosa Documentation](https://librosa.org/)
- [Audio Signal Processing Tutorial](https://www.audiocontentanalysis.org/)
- [Music Information Retrieval](https://musicinformationretrieval.com/)

## šŸ‘¤ Author Information

**Name**: Molla Samser
**Company**: RSK World
**Designer & Tester**: Rima Khatun
**Website**: [https://rskworld.in](https://rskworld.in)
**Email**: help@rskworld.in, support@rskworld.in
**Phone**: +91 93305 39277

## šŸ“ License

This dataset is provided for **educational purposes only**. Please refer to the [disclaimer](https://rskworld.in/disclaimer.php) for more information.

## šŸ¤ Contributing

For questions, suggestions, or contributions, please contact us through our website or email.

## āš ļø Disclaimer

Content used for educational purposes only. View full [disclaimer](https://rskworld.in/disclaimer.php).

---

**Ā© 2026 RSK World - Free Programming Resources & Source Code**

*Founded by Molla Samser with Designer & Tester Rima Khatun*

utils/advanced_features.py
Raw Download
Find: Go to:
"""
Advanced Feature Extraction for Music Classification

Project: Music Classification Dataset
Author: Molla Samser
Company: RSK World
Designer & Tester: Rima Khatun
Website: https://rskworld.in
Email: help@rskworld.in, support@rskworld.in
Phone: +91 93305 39277
Description: Advanced audio features for improved classification
License: Educational Purpose Only
"""

import numpy as np
import librosa
from scipy import stats
from typing import Dict
import warnings
warnings.filterwarnings('ignore')


class AdvancedFeatureExtractor:
    """
    Advanced feature extraction for music analysis
    
    Author: Molla Samser (RSK World)
    Website: https://rskworld.in
    Email: help@rskworld.in
    """
    
    def __init__(self, sample_rate=22050):
        """Initialize Advanced Feature Extractor"""
        self.sample_rate = sample_rate
    
    def extract_spectral_contrast(self, audio: np.ndarray) -> np.ndarray:
        """
        Extract spectral contrast features
        
        Args:
            audio: Audio time series
            
        Returns:
            Spectral contrast features
        """
        contrast = librosa.feature.spectral_contrast(y=audio, sr=self.sample_rate)
        return np.mean(contrast.T, axis=0)
    
    def extract_tonnetz(self, audio: np.ndarray) -> np.ndarray:
        """
        Extract tonal centroid features (tonnetz)
        
        Args:
            audio: Audio time series
            
        Returns:
            Tonnetz features
        """
        tonnetz = librosa.feature.tonnetz(y=audio, sr=self.sample_rate)
        return np.mean(tonnetz.T, axis=0)
    
    def extract_spectral_flatness(self, audio: np.ndarray) -> float:
        """
        Extract spectral flatness (measure of tonality)
        
        Args:
            audio: Audio time series
            
        Returns:
            Mean spectral flatness
        """
        flatness = librosa.feature.spectral_flatness(y=audio)
        return np.mean(flatness)
    
    def extract_spectral_flux(self, audio: np.ndarray) -> float:
        """
        Extract spectral flux (rate of change in power spectrum)
        
        Args:
            audio: Audio time series
            
        Returns:
            Mean spectral flux
        """
        spec = np.abs(librosa.stft(audio))
        flux = np.sqrt(np.sum(np.diff(spec, axis=1)**2, axis=0))
        return np.mean(flux)
    
    def extract_harmonic_percussive(self, audio: np.ndarray) -> Dict[str, float]:
        """
        Separate harmonic and percussive components
        
        Args:
            audio: Audio time series
            
        Returns:
            Dictionary with harmonic and percussive ratios
        """
        y_harmonic, y_percussive = librosa.effects.hpss(audio)
        
        return {
            'harmonic_ratio': np.sum(np.abs(y_harmonic)) / (np.sum(np.abs(audio)) + 1e-10),
            'percussive_ratio': np.sum(np.abs(y_percussive)) / (np.sum(np.abs(audio)) + 1e-10)
        }
    
    def extract_mel_spectrogram_stats(self, audio: np.ndarray) -> Dict[str, float]:
        """
        Extract statistics from mel spectrogram
        
        Args:
            audio: Audio time series
            
        Returns:
            Dictionary with mel spectrogram statistics
        """
        mel_spec = librosa.feature.melspectrogram(y=audio, sr=self.sample_rate)
        mel_spec_db = librosa.power_to_db(mel_spec, ref=np.max)
        
        return {
            'mel_mean': np.mean(mel_spec_db),
            'mel_std': np.std(mel_spec_db),
            'mel_max': np.max(mel_spec_db),
            'mel_min': np.min(mel_spec_db),
            'mel_median': np.median(mel_spec_db),
            'mel_skew': stats.skew(mel_spec_db.flatten()),
            'mel_kurtosis': stats.kurtosis(mel_spec_db.flatten())
        }
    
    def extract_rhythm_features(self, audio: np.ndarray) -> Dict[str, any]:
        """
        Extract rhythm-related features
        
        Args:
            audio: Audio time series
            
        Returns:
            Dictionary with rhythm features
        """
        # Tempogram
        tempo, beats = librosa.beat.beat_track(y=audio, sr=self.sample_rate)
        
        # Onset strength
        onset_env = librosa.onset.onset_strength(y=audio, sr=self.sample_rate)
        
        return {
            'tempo': float(tempo),
            'beat_count': len(beats),
            'onset_strength_mean': np.mean(onset_env),
            'onset_strength_std': np.std(onset_env)
        }
    
    def extract_energy_features(self, audio: np.ndarray) -> Dict[str, float]:
        """
        Extract energy-related features
        
        Args:
            audio: Audio time series
            
        Returns:
            Dictionary with energy features
        """
        # Short-time energy
        frame_length = 2048
        hop_length = 512
        
        frames = librosa.util.frame(audio, frame_length=frame_length, hop_length=hop_length)
        energy = np.sum(frames**2, axis=0)
        
        return {
            'energy_mean': np.mean(energy),
            'energy_std': np.std(energy),
            'energy_max': np.max(energy),
            'energy_entropy': stats.entropy(energy + 1e-10)
        }
    
    def extract_all_advanced_features(self, audio: np.ndarray) -> Dict[str, any]:
        """
        Extract all advanced features
        
        Author: Molla Samser
        Company: RSK World
        Website: https://rskworld.in
        
        Args:
            audio: Audio time series
            
        Returns:
            Dictionary containing all advanced features
        """
        features = {}
        
        # Spectral features
        features['spectral_contrast'] = self.extract_spectral_contrast(audio)
        features['tonnetz'] = self.extract_tonnetz(audio)
        features['spectral_flatness'] = self.extract_spectral_flatness(audio)
        features['spectral_flux'] = self.extract_spectral_flux(audio)
        
        # Harmonic/Percussive
        hp_features = self.extract_harmonic_percussive(audio)
        features.update(hp_features)
        
        # Mel spectrogram stats
        mel_stats = self.extract_mel_spectrogram_stats(audio)
        features.update(mel_stats)
        
        # Rhythm features
        rhythm_features = self.extract_rhythm_features(audio)
        features.update(rhythm_features)
        
        # Energy features
        energy_features = self.extract_energy_features(audio)
        features.update(energy_features)
        
        return features
    
    def flatten_features(self, features: Dict[str, any]) -> np.ndarray:
        """Flatten feature dictionary to 1D array"""
        feature_list = []
        
        for key, value in features.items():
            if isinstance(value, np.ndarray):
                feature_list.extend(value)
            else:
                feature_list.append(value)
        
        return np.array(feature_list)


# Example usage
if __name__ == "__main__":
    """
    Demo script for AdvancedFeatureExtractor
    
    Author: Molla Samser
    Company: RSK World
    Website: https://rskworld.in
    """
    extractor = AdvancedFeatureExtractor()
    
    # Create dummy audio
    dummy_audio = np.random.randn(22050 * 30)  # 30 seconds
    
    print("Advanced Feature Extraction")
    print("Author: Molla Samser | RSK World")
    print("Website: https://rskworld.in")
    print("\nExtracting advanced features...")
    
    features = extractor.extract_all_advanced_features(dummy_audio)
    
    print(f"\nExtracted features:")
    print(f"- Spectral Contrast: {features['spectral_contrast'].shape}")
    print(f"- Tonnetz: {features['tonnetz'].shape}")
    print(f"- Spectral Flatness: {features['spectral_flatness']:.6f}")
    print(f"- Tempo: {features['tempo']:.2f} BPM")
    print(f"- Harmonic Ratio: {features['harmonic_ratio']:.4f}")
    print(f"- Percussive Ratio: {features['percussive_ratio']:.4f}")
    
    flat_features = extractor.flatten_features(features)
    print(f"\nTotal feature dimensions: {flat_features.shape[0]}")
    
    print("\n© 2026 RSK World - Molla Samser")

263 lines•8.3 KB
python
šŸš€ Support RSK World

Subscribe to our YouTube channel for latest tutorials & updates!



Click subscribe & support our work ā¤ļø

About RSK World

Founded by Molla Samser, with Designer & Tester Rima Khatun, RSK World is your one-stop destination for free programming resources, source code, and development tools.

Founder: Molla Samser
Designer & Tester: Rima Khatun

Development

  • Game Development
  • Web Development
  • Mobile Development
  • AI Development
  • Development Tools

Legal

  • Terms & Conditions
  • Privacy Policy
  • Disclaimer

Contact Info

Nutanhat, Mongolkote
Purba Burdwan, West Bengal
India, 713147

+91 93305 39277

hello@rskworld.in
support@rskworld.in

© 2026 RSK World. All rights reserved.

Content used for educational purposes only. View Disclaimer