논문

하루에도 수만개의 글자를 읽고 있습니다. 하루에도 수백장의 종이를 들춰 읽습니다.
이것은 그 읽기에 대한 일기입니다.

Drum Sound Recognition for Polyphonic Audio Signals by Adaptation and Matching of Spectrogram Templates With Harmonic Structure Suppression

(10.1109/TASL.2006.876754)

처음엔 흥미를 갖고 읽었으나 비슷한 접근법을 반복적으로 사용하므로 수식을 적기에 지루해서 간단하게 컨셉만 정리해둡니다. 스스로도 만족스럽지 않습니다.


1. Introduction

오디오 신호를 분석하는 한 분야로 music information retrieval (MIR)이라는 분야가 있다. 음악 신호로부터 가사나 가수 이름 등의 텍스트 정보 뿐만 아니라 리듬이나 멜로디 등을 추출하는 것을 의미합니다. 이러한 것을 위해서 음악의 각 악기가 연주를 시작하는 시각(onset time)을 검출하는데 초점을 맞추고자 합니다. 특히 여기서는 드럼의 3가지 소리, bass, snare, hi-hat cymbals 각각을 검출하고자 하는데, 실제 CD 등으로 녹음된 음악들은 저 악기 외에도 다양한 소리들이 같이 섞여 있으므로 문제를 푸는데 어려움이 있습니다.

2. Art of Drum Sound Recognition

기존 방법들을 소개하였으나 생략하고 논문에서 영감을 얻은 연구만을 꼽아보겠습니다.

일단 다른 음악이 섞이지 않은 경우, Goto와 Muraoka는 대중 음악의 드럼 솔로 부분을 MIDI로부터 생성된 템플릿을 이용하여 매칭하여 찾아내었습니다. 템플릿은 고정 시간 길이의 스페트럼으로 표현되었고 이를 비교하기 위하여 거리 측정법(distance measure)을 새로 제안하였습니다.

두번째로 여러 소리들이 섞인 음악에서 찾는 문제로는 Zils가 템플릿을 음악에 맞추어 적응적으로 변화시키는 template-adpatation 방법을 제안하였습니다.

3. Drum Sound recognition Problem for Polyphonic Audio Singals

A. Target

앞서 이야기한 것처럼 연구의 목표는 드럼의 세가지 소리를 검출하는 것입니다. 이볅으로는 대중 응막의 CD 레코딩된 음악으로 여기에는 사람의 보컬과 다른 악기들의 연주가 모두 포함되어있습니다. 드럼 또한 MIDI로 만들어낸 소리나 실제 드럼 소리를 모두 커버하여야합니다.

B. Prolems

템플릿 기반의 방법을 사용할 것입니다. 각 템플릿은 고정된 시간 길이(fixed-time-length)를 갖는 파워 스펙트로그램으로 정의됩니다. 여기에는 두가지 문제가 존재합니다. 하나는 드럼 소리가 음악에 따라 달라지기 때문에 적당한 템플릿을 결정하는 문제이고, 다른 하나는 여러가지 소리가 섞여있기 때문에 정확히 드럼 소리를 알아채기가 힘들다는 문제입니다.

C. Approach

이들 문제를 해결하기위하여 다음과 같은 방법을 사용합니다.

  1. Template Adaptation : 먼저 기본 템플릿(seed template)을 주어진 음악의 드럼 소리에 맞도록 변화시킵니다.
  2. Template matching : 다른 소리가 섞여 있더라도 드럼 소리를 검출할 수 있도록 Goto의 distance measure 방법을 사용합니다. 이 방법은 템플릿의 spectrogram을 이용하며, spectral weighting 알고리즘을 사용하여 Goto의 방법을 확장하였습니다.
  3. Harmonic structure suppression : 하이햇을 제외한 나머지 베이스와 스네어 드럼의 경우 다른 악기 소리와 함께 섞일 여지가 크기 때문에 이러한 소리들을 억제할 수 있는 방법을 사용합니다.

4. Template Adaptation

템플릿은 시간-주파수 도메인에서의 power spectrogram으로 표현됩니다. Seed template이라 부르는 기본 템플릿이 주어지고, 이를 반복적으로 변화시켜 노래에 적당한 템플릿으로 변화시킵니다. 이 과정은 크게 두 단계로 나뉘어 진행됩니다.

A. Onset Candidate Detection

먼저 드럼 소리가 있을 만한 부분을 찾아야 합니다. 여기서는 단지 후보를 찾는 과정이기 때문에 실제로 드럼 소리가 아닌 것이 검출되더라도 높은 recall을 갖도록 합니다. 먼저 주어진 음악을 Short-time Fourier transform (STFT)를 거치도록 합니다. 그 결과, $ P(t, f) $는 앞으로의 계산에 계속적으로 쓰일 것입니다.

(1) t-1, t, t+1의 시각을 보았을 때 세 지점의 변화율이 0보다 클 경우, 이 때 변화율을 $ Q(t, f)$라 하고, 이런 경우가 아니라면 변화율은 0으로 계산합니다.

(2) $ P(t, f)$ 에 각 드럼 종류에 맞도록 bandpass(lowpass, highpass) 필터를 $ F_D(f) $이라 하고, $ Q(t, f) $의 각 주파우세 에 이 필터를 곱한 뒤 모두 더한 것을 $ I(t) $라 하였을 때, 이 값이 피크인 부분이 후보 지점입니다.

B. Preparing Seed Template and Sepectogram Semgnets

찾아낸 위치들에서의 샘플로부터 각 주파수의 median power로 템플릿을 수정합니다.

먼저 기존의 데이터베이스로부터 6개의 드럼 소리 샘플을 STFT를 거칩니다. 그리고 이들의 power spectrogram 중 가장 큰 값을 이용하여 seed tempalte $ T_S(t, f) $를 만들어냅니다. 이 기본 템플릿을 $ T_0 $으로 사용하고 앞으로 템플릿을 변화시킨 반복 횟수에 따라 $ T_g$로 표현합니다. 또한, 템플릿에 bandpass 필터를 적용한 것을 $ \grave{T} $라고 표현할 것입니다.

앞에서 구한 후보지점에서의 STFT의 결과 $ P_i(t, f)$ 를 계산합니다. 또한 이것의 bandpass 필터를 적용한 결과는 $ \grave{P}_i(t, f) $라 합니다.

C. Segment Selection

각 후보 지점의 세그멘트와 템플릿 간의 차이를 이용하여 reliability $ E_i $를 계산합니다. 이는 차이의 역수 관계로 표현할 수 있습니다. 각 드럼마다 특성이 다르기 때문에, 조금씩 다른 방법을 사용할 것입니다.

  1. Bass와 Snare의 경우 : 첫 반복에서는 단순히 Euclidean distance를 사용합니다. 하지만 아직 템플릿이 주어진 음악에 적응되지 않았으므로, 시간축과 주파수축 일부 구간에 대하여 평균하여 스무딩을 수행합니다. 첫 반복 이후에는 이미 스무딩된 결과가 템플릿에 반영이 되었으므로 스무딩 없이 Euclidean distance만을 사용할 것입니다.
  2. Hy-Hat Cymbal의 경우 : 모든 반복마다 스무딩을 사용한 뒤 distance를 계산합니다.

D. Template Updating

  1. Bass와 Snare의 경우 : 후보 위치 중 가장 reliability가 높은 순서로 10%의 샘플들만을 고른 뒤, 이 샘플의 $ \grave{P} $의 각 t와 f에 대하여 median 값을 새로운 템플릿으로 사용합니다.
  2. Hy-Hat Cymbal의 경우 : Bass와 Snare와 같은 방법을 사용하지만, 샘플의 스무딩 후의 값을 사용한다는 점이 차이가 있습니다.

각 후보지점에 대하여 reliability를 계산하고 상위 10% 후보지점를 이용하여 템플릿을 갱신하는 방법을 더이상 변화가 없을 때까지 반복하여 탬플릿을 변화시킵니다.

5. Template Matching

템플릿을 노래에 맞게 변화시켰으면, 찾아낸 후보들 중에서 실제 드럼 소리를 찾아야 합니다. 여기에는 다른 소리가 섞여 있기 때문에 단순히 앞에서 사용했던 Euclidean distance를 사용하기가 어렵습니다. 때문에 Goto가 제안했던 distance measure를 확장하여 사용하도록 합니다.

A. Weight Function Preparation

템플릿의 두드러지는 특징 부분을 가중치로 사용하도록 합니다. 가중치 $ w(t, f) = \grave{T}_A(t, f) $ 로 나타냅니다. $ \grave{T}_A $ 는 적응이 끝난 템플릿에 bandpass 필터를 적용한 것입니다.

B. Power Adjustment of Spectrogram Segments

  1. Selecting Characteristic Frequency Bins in Adapted Template

각 시각 t에 대한 가중치 $ w(t, f) $ 중에서, (1) 주변 f-1, f+1보다 f에서 값이 큰 것, (2) 그리고 w의 최대값의 0.5배 보다 큰 값을 찾습니다. 이러한 w 중에서 큰 순서대로 $ K_D $개를 뽑아서, 이에 해당하는 위치를 $f(t, k )$로 삼습니다. $ K_D $는 드럼 종류에 따라 다르게 설정하며, Bass는 15, Snare는 20, Hi-hat은 100으로 사용합니다.

  1. Calculating Power Difference

이제 비교에 사용할 주파수를 정했으면, 둘의 차이를 계산합니다. $ \eta_i(t, f_{t,k}) = \grave{P}_i(t, f_{t, k}) – \grave{T}_A(t, f_{t, k}) $ 그리고 시각 t에서의 차이 분포에서 1사분위 수를 $ \delta_i(t)$라 하고, 이 부분의 k를 $ K_i(t) $라 정의합니다. 이 사분위수가 자동으로 설정된 값 $ \Psi_{\delta}(t) $보다 작은 t 위치의 프레임들이 $ R_\delta = 5$보다 많으면 드럼소리가 아니라고 간주합니다. $ \Psi_{\delta}(t) $를 정하는 방법은 후에 설명할 것입니다.

  1. Adjusting Power of Spectrogram Segments

총 power difference $ \Delta_i$는 모든 시각 t에 대하여 $\delta_i(t)w(t, f_{t, K_i(t)})$를 더한 것을 $ w(t, f_{t, K_i9t)}) $의 합으로 나눈 것입니다. 이 값이 $ \Theta_\delta $보다 작으면, 역시 드럼 소리를 포함하지 않은 것으로 간주합니다. $ \Theta_\delta $ 또한 뒤에 설명할 것입니다.

최종적으로 $ P’_i(t, f) = \grave{P}_i(t, f) – \Delta_i $ 를 계산하여 후보 세그먼트의 세기를 조절합니다.

C. Distance Calculation

세기가 조절된 세그멘트와 템플릿 간의 거리를 계산합니다. 이 때 Goto의 방법을 사용할 것입니다. 시각 t와 주파수 f에서의 거리 $ \gamma_i(t, f)$ 는 만약 $ P’_t(t, f) – \grave{T}_A(t, f) $의 크기가 $ \Psi_D $보다 크면 0으로 그렇지 않으면 1로 정합니다. $ \Psi_D $는 음수로 Bass와 Snare에서는 -12.5, Hi-Hat에서는 -5를 사용합니다.

이렇게 구한 거리에 가중치 w를 곱하여 모두 더하면 총 거리 $ \Gamma_i $를 계산할 수 있습니다. 이 총 거리가 $ \Theta_\Gamma $보다 작으면 최종적으로 드럼소리라고 판단합니다.

D. Automatic Thresholding

앞에서 사용했던 스레숄드 값들을 Otsu의 방법을 사용하여 정합니다. 각각의 $ \delta_i(t), \Delta_i, \Gamma_i $ 들의 분포에서 Otsu의 방법을 적용하여 $ \Psi_\delta(t), \Theta_\Delta, \Theta_\Gamma $를 계산해냅니다. 그리고$ \Theta_\Delta, \Theta_\Gamma $ 여기에 스케일 조절을 위해 $ \lambda_\Delta, \lambda_\Gamma $를 곱한 값을 사용합니다.

4. Harmonic Structure Suppression

실제로 CD에 담겨 있는 소리들은 다양한 악기가 섞여 있기 때문에 정확도를 높이기 위하여 불필요한 다른 소리들을 억제하는 방법이 필요합니다. 이 작업은 Bass와 Snare에만 적용됩니다.

간단히 이야기하자면, Gaussian과 비슷한 형태의 comb-filter-like 처리를 통하여 신뢰도를 계산합니다. 이 신뢰도가 피크인 부분은 다른 악기가 섞인 것을 보고 linear interpolation을 하는 방법을 사용합니다.

Bibliography


Add a Comment Trackback