소개
음악은 우리의 일상에서 중요한 역할을 합니다. 하지만 음악이 너무 많아져서 우리의 취향에 맞는 음악을 찾기가 어려워졌습니다. 이 때문에 음악을 자동으로 분류하고 장르를 탐지하는 모델을 만들어볼 수 있습니다.
이번 블로그 포스트에서는 파이썬을 활용하여 음악 분류와 장르 탐지 모델을 구축하는 방법을 알아보겠습니다. 이를 위해 파이썬의 오디오 라이브러리와 머신러닝 알고리즘을 이용할 것입니다.
필요한 라이브러리 설치
우선 모델을 구축하기 위해 몇 가지 파이썬 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 필요한 라이브러리를 설치합니다.
pip install librosa scikit-learn
- librosa: 파이썬에서 오디오 신호 분석을 위한 라이브러리
- scikit-learn: 기계 학습을 위한 파이썬 라이브러리
데이터 수집 및 전처리
먼저 음악 분류 및 장르 탐지 모델을 구축하기 위해 음악 데이터를 수집해야 합니다. 인터넷에서 다양한 장르의 음악 파일을 다운로드하거나 음악 데이터셋을 활용할 수 있습니다. 수집한 음악 파일을 WAV 또는 MP3 형식으로 저장합니다.
데이터를 사용하기 전에 음악 파일을 오디오 신호로 변환해야 합니다. 이를 위해 librosa 라이브러리를 사용할 것입니다. 다음 코드는 음악 파일을 불러와서 오디오 신호로 변환하는 예시입니다.
import librosa
def load_audio(file_path):
audio, sr = librosa.load(file_path)
return audio, sr
file_path = "music.wav"
audio, sr = load_audio(file_path)
특징 추출
오디오 신호를 사용하여 음악의 특징을 추출해야 합니다. 이러한 특징은 음악의 주파수, 스펙트럼, 리듬 등에 대한 정보를 담고 있습니다. librosa 라이브러리를 사용하여 다양한 특징을 추출할 수 있습니다.
다음 코드는 librosa를 사용하여 음악 파일의 스펙트로그램을 추출하는 예시입니다.
import librosa
import numpy as np
def extract_features(audio, sr):
# 스펙트로그램 추출
spectrogram = np.abs(librosa.stft(audio))
# 로그 변환
log_spectrogram = librosa.amplitude_to_db(spectrogram)
return log_spectrogram
log_spectrogram = extract_features(audio, sr)
머신러닝 모델 구축
특징을 추출한 후에는 머신러닝 알고리즘을 사용하여 음악을 분류하고 장르를 탐지하는 모델을 구축할 수 있습니다. 이를 위해 scikit-learn 라이브러리를 사용할 수 있습니다.
다음 코드는 scikit-learn을 사용하여 로지스틱 회귀 분류 모델을 구축하는 예시입니다.
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 데이터셋 준비
X = np.load("features.npy") # 특징 추출 결과를 불러옴
y = np.load("labels.npy") # 음악의 실제 장르 레이블을 불러옴
# 데이터셋 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)
# 모델 평가
accuracy = model.score(X_test, y_test)
print(f"Accuracy: {accuracy}")
결론
이제 파이썬을 활용하여 음악 분류와 장르 탐지 모델을 구축하는 방법을 알아보았습니다. 음악 데이터를 수집하고 전처리한 후에 오디오 라이브러리와 머신러닝 모델을 활용하여 모델을 구축할 수 있습니다. 이를 통해 우리는 음악을 자동으로 분류하고 우리의 취향에 맞는 음악을 찾는 데 도움을 받을 수 있습니다.
#음악분류 #장르탐지