- 부산대학교 전자공학과 졸업과제 소스 코드입니다.
- 프로젝트 기간: 2022년 1학기 (2022.01 ~ 2022.06)
- 주요 내용: Music Genre Classification과 Music Recommendation 시스템 개발
- 본 프로젝트는 Andrada Olteanu, 빵형의 개발도상국를 바탕으로 작성됐습니다.
- 기존 프로젝트 소스 코드는 여기를 참고해주세요.
- Music Genre Classification
- XGBoost
- LightGBM
- CatBoost
- Music Recommendation
- Cosine Similarity
- Euclidean Distance
- K-Nearest Neighbor (Manhattan 기반)
- Singular Value Decomposition
- GTZAN Dataset: 10개 장르별로 30초 길이의 100곡, 총 1000곡의 음원 사용
- 전처리 기법:
- Chroma STFT
- RMS
- Spectral Centroid
- Spectral Bandwidth
- Rolloff
- Zero Crossing Rate
- Harmony Mean
- Tempo
- Mel-frequency cepstral coefficients (MFCC)
프로젝트의 종속성을 격리시키고 관리하기 위해 Python venv
모듈을 사용하여 가상 환경을 설정하는 것이 좋습니다.
python3 -m venv venv
source venv/bin/activate # macOS 또는 Linux
Windows에서는 다음 명령어를 사용합니다.
.\venv\Scripts\activate
가상 환경이 활성화된 상태에서, 다음 명령어로 필요한 Python 패키지를 설치합니다.
pip install -r requirements.txt
GTZAN: https://www.kaggle.com/andradaolteanu/gtzan-dataset-music-genre-classification
- 프로젝트 디렉토리에 GTZAN 데이터셋 파일 압축을 푸세요.
- 데이터셋을 다운로드하기 위해서는 Kaggle 계정이 필요합니다. Kaggle 계정을 생성하고 API 키와 사용자 이름을
.env
파일에 입력하고 저장하세요.(.env_sample
참고)
-
분석할 음원 파일을
Data
디렉토리에 저장합니다.graduation_final.ipynb
실행 시Data
디렉토리가 자동으로 생성됩니다. -
주의: 현재 시스템은 한 번에 1개의 음원 파일만 처리합니다. 추후 여러 파일을 동시에 처리할 수 있는 기능으로 업데이트될 예정입니다.
- 참고 코드: 링크
- 2022.01 ~ 2022.06: 참고 코드에 사용자 음원에 대해 장르 구분 및 유사 음원 추천(결과는
docs/final_presentation.pdf
참고.). - 2023.03 ~ 2024.02: 장르 구분 모델 / 유사 음원 추천 종류 다각화.