Skip to content

W ramach przedmiotu Projekt indywidualny na 4. semestrze studiów inżynierskich kierunku Informatyka Stosowana na Politechnice Warszawskiej.

Notifications You must be signed in to change notification settings

lamachan/music_genre_classification

Repository files navigation

Music genre classification

Cel projektu

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.

Działanie aplikacji

alt text

Front-end

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.

Back-end

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.

Struktura repozytorium

  • 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

About

W ramach przedmiotu Projekt indywidualny na 4. semestrze studiów inżynierskich kierunku Informatyka Stosowana na Politechnice Warszawskiej.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published