Does what the name suggests. Classifies songs into genres: Electronic, Experimental, Folk, Hip-Hop, Instrumental, International, Pop, Rock. The features dataset includes an additional 8 genres.
fma-small dataset was used for training and testing. The dataset consists of 8,000 tracks of 30s, with 1000 tracks for each of the 8 genres. The dataset can found here.
The tracks are first converted to their corresponding Mel Spectrograms using the librosa library in Python. The conversion may take quite some time on low powered CPUs, hence one may try only a few tracks at a time and save the results as bash numpy
arrays.
The CNN-RNN_parallel notebook uses the compressed spectograms to build a a parallel CNN-RNN model in Keras.
- Random Forest Classifier - 61%
- KNN - 55%
- SVM - 42%
You can install the necessary python libraries post creating a virtual environment or globally by
pip install -r requirements.txt
The CNN-RNN parallel trained model weights can be found here.