Projekt "Rozpoznawanie gatunków muzycznych z wykorzystaniem technik uczenia maszynowego" realizowany jest w ramach przedmiotu Projekt indywidualny na 4. semestrze studiów inżynierskich Informatyka stosowana na Wydziale Elektrycznym Politechniki Warszawskiej.
Celem projektu jest stworzenie aplikacji dokonującej klasyfikacji gatunków utworów muzycznych. W ramach projektu należy stworzyć własną bazę utworów, dokonać ekstrakcji cech oraz na ich podstawie wytrenować i wdrożyć model uczenia maszynowego.
Zaimplementowano prostą aplikację okienkową umożliwiającą klasyfikację utworu wgranego przez użytkownika jako plik dźwiękowy. Możliwe jest wgranie pliku w formacie .mp3 lub .wav. Przed wgraniem pliku należy wybrać 1 z 3 dostępnych modeli z listy rozwijanej (Logistic Regression
, Decision Tree
lub Random Forest
). Po ok. 6 sekundach wyświetlane jest przewidywanie gatunku.
Z wgranego pliku wycinane jest 5 20-sekundowych próbek (po kolei, od początku utworu) i ekstrahowane są cechy (76 ostatecznie wybranych do klasyfikacji na etapie analizy eksploracyjnej danych). W wyniku tego powstaje ramka danych o rozmiarze 5 x 76. Za pomocą przelicznika dopasowanego do zbioru uczącego, cechy są standaryzowane. Następnie ramka przekazywana jest do wybranego modelu. Każda z 5 próbek otrzymuje etykietę (gatunek). Jako ostateczna etykieta wybierany jest gatunek o największej liczbie wystąpień (głosowanie większościowe). W przypadku takiej samej liczby głosów na więcej niż 1 gatunek, etykieta wybierana jest według porządku alfabetycznego. Obsługiwane gatunki: choir
, classical
, electronic
, folk
, jazz
, metal
, pop
, rap
, reggae
, rock
.
- dane - katalog z plikami tekstowymi zawierającymi zbiór danych:
- music_data1.csv - plik tekstowy ze zbiorem danych po etapie ekstrakcji danych
- music_data2.csv - plik tekstowy ze zbiorem danych po etapie eksploracyjnej analizy danych
- librosa_testing.ipynb - testowanie funkcji biblioteki librosa
- feature_extraction.ipynb - ekstrakcja danych
- data_mining.ipynb - eksploracyjna analiza danych
- classification_models.ipynb - uczenie i ocena modeli
- classification_app - katalog z plikami dotyczącymi aplikacji okienkowej:
- pickles - katalog z plikami utrwalającymi typu .pkl:
- scaler.pkl - przelicznik dokonujący standaryzacji
- decision_tree_model.pkl - model drzewa decyzyjnego
- logistic_regression_model.pkl - model regresji logistycznej
- random_forest_model.pkl - model lasu losowego
- feature_extraction.py - moduł zawierający funkcje ekstrahujące cechy z pliku dźwiękowego
- app.py - logika aplikacji i GUI
- classification_app_gui.png - zrzut ekranu GUI aplikacji
- pickles - katalog z plikami utrwalającymi typu .pkl: