참고: https://www.youtube.com/watch?v=IE6lue0qusQ
장르에 따른 .wav 오디오 파일
매 스펙토그램을 저장한 이미지 파일
오디오를 30초, 3초마다 분석한 csv파일
1. librosa로 오디오 파일 로드하기
음악의 길이(초) = 음파의 길이 / Sampling rate
2. 음악 들어보기
IPython.display 로 확인
3. 2D 음파 그래프 그리기
y축: 오디오 세기
x축: 시간
4. Fourier Transform 확인
시간 영역 데이터를 주파수 영역으로 변경. (분석이 더 쉬워져서)y축: 주파수 (로그 스케일)
color축: 데시벨 (진폭)
그런데 이것만으로 확인하기 어렵다.
5. Spectogram 확인
Fourier Transform 한 것을 시간에 따른 신호 주파수의 스펙트럼 그래프로 변환.
근데 이것도 보기 힘들어서 Mel Spectogram으로 변환한다.
6. Mel Spectogram
이것을 가장 많이 이용. histogram, gradient 구하기와 비슷.
7. 레게 vs 클래식 Mel Spectogram
위 레게 Mel Spectogram과 다르게 클래식은 듬성듬성한 모양
8. 오디오 특성 추출 (Audio Feature Extraction)
- Tempo (BPM); bpm 정보 없으면 librosa.beat.beat_track으로 예측 가능
- Zero Crossing Rate (음파가 양->음 or 음->양 으로 바뀌는 비율)
- Harmonic and Percussive Componetns (사람의 귀로 구분 불가능한 특징들과 리듬과 감정을 나타내는 충격파)
- Spectral Centroid (무게 중심); 블루스 음악은 처음부터 끝까지 잔잔해서 무게중심이 가운데 있는 반면, 메탈은 끝부분에서 달리기 때문에 무게중심은 주로 마지막 부분.
- Spectral Rolloff: 위와 비슷하지만, 낮은 주파수일때 무게중심을 더 잘 그려준다.
- Mel-Frequency Cepstral Coefficients (MFCCs): 작은 특징들 집합을 만들어서 전체적인 특징을 보여준다. 음악의 장르를 정하는 것은 사람이기에, 사람의 청각 구조를 반영한 정보가 중요. MFCCs는 사람의 청각 구조 반영해서 음성 정보 추출.
- Chroma Frequencies: 12개로 한정해서 표현. histogram과 비슷. 화음을 잘 인식하게 된다.
9. 음악 장르 분류
xgboost
10. 음악 추천 알고리즘
cosine simiarity
'AI_ML' 카테고리의 다른 글
Notation ambiguity: Y = np.dot(X, W) vs np.dot(W.T, X) (0) | 2021.08.11 |
---|---|
어텐션을 이용한 텍스트 요약 (0) | 2021.07.30 |
개체명 인식 (0) | 2021.07.21 |
Seq2Seq (0) | 2021.07.15 |
Introduction to Autoencoder (2) | 2021.03.25 |