py

카카오 아레나 멜론 playlist Continuation 대회 관련 탐색 본문

카테고리 없음

카카오 아레나 멜론 playlist Continuation 대회 관련 탐색

ML/DL Engineer&Researcher 2021. 3. 30. 16:18

탐색 결과를 소개하기 앞서 대회에서 제공하는 해당 데이터는 대회 진행을 목적으로 적합한 샘플링 작업을 거친 데이터라는 점을 알려드립니다.

 

소개할 내용들이 실제 멜론 유저의 소비 패턴과는 전혀 무관하며, 멜론 DJ 플레이리스트 서비스를 일반화할 수 없음을 참고하여 주시기 바랍니다.

 

arena.kakao.com/forum/topics/191

 

카카오 아레나

카카오 아레나에서 머신 러닝을 이용해 흥미로운 문제들을 풀어보세요.

arena.kakao.com

 

 

 

Understanding the Mel Spectrogram

medium.com/analytics-vidhya/understanding-the-mel-spectrogram-fca2afa2ce53

 

Understanding the Mel Spectrogram

(and Other Topics in Signal Processing)

medium.com

 

당신이 나와 같은 사람이라면 멜 스펙트로 그램을 이해하려고 노력하는 것은 쉬운 일이 아닙니다. 당신은 다른 기사로 이끌기 위해 기사를 읽었습니다. 그리고 다른… 그리고 다른… 계속해서 계속됩니다. 이 짧은 글이 혼란의 일부를 명확히하고 멜 스펙트로 그램을 처음부터 설명하기를 바랍니다.

신호

신호는 시간에 따라 일정한 양의 변화량이다. 오디오의 경우 변하는 양은 기압입니다. 

 

이 정보를 어떻게 디지털 방식으로 캡처합니까?

 

시간이 지남에 따라 기압 샘플을 채취할 수 있습니다.

 

데이터를 샘플링하는 속도는 다양 할 수 있지만, 가장 일반적으로 44.1kHz 또는 초당 44,100 개 샘플입니다.

우리가 캡쳐한 것은 신호에 대한 파형 이며, 컴퓨터 소프트웨어로 해석, 수정 및 분석 할 수 있습니다.

 

import librosa 
import librosa.display 
import matplotlib.pyplot as plt
y, sr = librosa.load ( './ example_data / blues.00000.wav')
plt.plot (y); 
plt.title ( '신호'); 
plt.xlabel ( '시간 (샘플)'); 
plt.ylabel ( '진폭');

 

 

작업 할 수 있는 오디오 신호의 디지털 표현이 있습니다. 신호 처리 분야에 오신 것을 환영합니다! 그래도 궁금 할 것입니다. 여기서 유용한 정보를 어떻게 추출합니까? 

 

너무 오버랩도 많이 되어있으며, 필요한 유용한 정보와 패턴을 출력하기 힘들어보임

 

그래서 바로 푸리에 변환은 수행한다.

 

 

푸리에 변환

오디오 신호는 여러 개의 단일 주파수 음파로 구성됩니다. 시간이 지남에 따라 신호 샘플을 수집 할 때 결과 진폭만 캡처합니다.

 

푸리에 변환은 우리가 각각의 주파수의 주파수의 진폭으로 신호를 분해 할 수있는 수학식이다. 

즉, 시간 도메인의 신호를 주파수 도메인으로 변환합니다. 그 결과를 스펙트럼이라고합니다 .

 

 

푸리에 변환 : 각각의 주파수의 주파수의 진폭으로 신호를 분해함

 

스펙트럼으로 만듬 : 시간 도메인의 신호를 >> 주파수 도메인의 신호로 변환함

 

 

 

 

Aavos International의 이미지

 

푸리에 정리 :

모든 신호가 원래 신호에 합산되는 사인파 및 코사인파 세트로 분해 될 수 있다.

 

 

이는 모든 신호가 원래 신호에 합산되는 사인파 및 코사인파 세트로 분해 될 수 있기 때문에 가능합니다. 이것은 푸리에의 정리 로 알려진 놀라운 정리입니다. 이 정리가 사실 인 이유에 대한 좋은 직관을 원한다면 여기를 클릭 하십시오 . 여기에서 더 많은 것을 배우고 싶다면 푸리에 변환에 대한 3Blue1Brown의 경이로운 비디오도 있습니다 .

 

 

(FFT) 고속 푸리에 변환 효율적으로 푸리에 변환을 계산할 수 있는 알고리즘이다.

신호 처리에 널리 사용됩니다. 이 알고리즘을 예제 오디오의 창 부분에 사용하겠습니다.

 

 

numpy를 np로 가져 오기
n_fft = 2048ft = 
np.abs (librosa.stft (y [: n_fft], hop_length = n_fft + 1))
plt.plot (ft); 
plt.title ( '스펙트럼'); 
plt.xlabel ( '주파수 Bin'); 
plt.ylabel ( '진폭');

스펙트로그램

고속 푸리에 변환은 신호의 주파수 성분을 분석 할 수 있는 강력한 도구입니다. 그러나 신호의 주파수 성분이 시간에 따라 변하면 어떻게 될까요? 음악 및 음성과 같은 대부분의 오디오 신호에 해당합니다. 이러한 신호를 비주기적 신호라고합니다. 

 

시간이 지남에 따라 달라지는 이러한 신호의 스펙트럼을 나타내는 방법이 필요합니다.

신호의 여러창 세그먼트에서 FFT를 수행하여 여러 스펙트럼을 계산할 수 있습니다.

 

이를 단시간 푸리에 변환 이라고합니다 

 

 

FFT는 신호의 겹치는 윈도우 세그먼트에서 계산되며 스펙트로그램 이라고하는 것을 알 수 있습니다.

MathWorks의 이미지

스펙트로 그램은 서로의 위에 쌓인 FFT 묶음으로 생각할 수 있습니다. 

 

신호의 크기 또는 진폭을 시각적으로 표현하는 방법입니다. 시간이 지남에 따라 다른 주파수에서 달라지기 때문입니다. 스펙트로 그램을 계산할 때 뒤에서 진행되는 몇 가지 추가 세부 사항이 있습니다. 

 

y축은 로그 스케일(log-scale)로 변환되고, 색상 차원은 데시벨로 변환됩니다.

(이를 진폭의 로그 스케일로 생각할 수 있음).

 

인간은 매우 작고 집중된 주파수 및 진폭 범위만 인식 할 수 있기 때문입니다.

 

spec = np.abs (librosa.stft (y, hop_length = 512)) 
spec = librosa.amplitude_to_db (spec, ref = np.max)
librosa.display.specshow (spec, sr = sr, x_axis = 'time', y_axis = 'log'); 
plt.colorbar (형식 = '% + 2.0f dB'); 
plt.title ( '스펙트로 그램');

"스펙트로그램" 부분을 확실히 파악하고 있지만 "Mel"은 누구입니까?

멜 스케일 : 음정의 동일한 거리가 청취자에게 똑같이 먼 거리에서 들리도록 음조 단위를 제안

 

연구에 따르면 인간은 선형 척도로 주파수를 인식하지 못합니다. 

 

우리는 높은 주파수보다 낮은 주파수의 차이를 더 잘 감지합니다. 

 

예를 들어 500Hz와 1000Hz 사이의 차이를 쉽게 구분할 수 있지만, 두 쌍 사이의 거리가 동일하더라도 10,000Hz와 10,500Hz 사이의 차이는 거의 구분할 수 없습니다. 

 

1937년에 Stevens, Volkmann 및 Newmann은 음정의 동일한 거리가 청취자에게 똑같이 먼 거리에서 들리도록 음조 단위를 제안했습니다.

 

이것을 멜 스케일이라고합니다

우리는 주파수를 수학적 연산을 수행하여 멜 스케일로 변환합니다.

Simon Fraser University의 이미지

멜스펙트로그램

MEL 스펙트로는 주파수가 멜스케일로 변환되는 스펙트로그램이다.

 

놀라운 점은 멜스펙트로그램을 이해하기 위해 모든 정신 체조를 거친 후 단 몇 줄의 코드로만 구현할 수 있다는 것입니다.

 

mel_spect = librosa.feature.melspectrogram (y = y, sr = sr, n_fft = 2048, hop_length = 1024) 
mel_spect = librosa.power_to_db (spect, ref = np.max)
librosa.display.specshow (mel_spect, y_axis = 'mel', fmax = 8000, x_axis = 'time'); 
plt.title ( '멜 스펙트로 그램'); 
plt.colorbar (형식 = '% + 2.0f dB');

 

요약하자면

 

 

  1. 오디오 신호를 디지털 방식으로 표현하기 위해 시간 경과에 따른 기압 샘플을 수집
  2. 고속 푸리에 변환을 사용하여 시간 영역에서 주파수 영역으로 오디오 신호를 매핑했으며, 오디오 신호의 겹치는 윈도우 세그먼트에서 수행했습니다.
  3. y축(주파수)을 로그 스케일(log-scale)로 변환하고 색상 차원(진폭)을 데시벨로 변환하여 스펙트로그램 을 형성했습니다.
  4. 우리는 멜스펙트로그램 을 형성하기 위해 y축 (주파수)을 멜 스케일에 매핑했습니다 .

(*MEL 스펙트로는 주파수가 멜스케일로 변환되는 스펙트로그램이다.)

그게 다야! 쉽게 들리 죠? 글쎄, 정답은 아니지만이 게시물이 멜 스펙트로 그램을 조금 덜 위협적으로 만들었 으면합니다. 그것을 이해하는 데 꽤 오랜 시간이 걸렸습니다. 그러나 하루가 끝날 무렵 멜이 그렇게 대립하지 않다는 것을 알았습니다.

 

멜 : 음정의 동일한 거리가 청취자에게 똑같이 먼 거리에서 들리도록 음조 단위를 제안

MEL 스펙트로그램 : 주파수가 멜스케일로 변환되는 스펙트로그램

0 Comments
댓글쓰기 폼