////
Search
Duplicate

ONSETS AND FRAMES: DUAL-OBJECTIVE PIANO TRANSCRIPTION

INTRODUCTION

Onset
Note onset detection looks for only the very beginning of a note.
건반을 누른 시점, 소리가 시작하는 곳
피아노 음정의 시작 - 찾기 쉽다.
그 음정의 amplitude가 가장 큰 부분이기 때문
또, 피아노의 특성 상 타악적이며, 독특한 광대역 스펙트럼을 가진다.
Offset
건반을 뗀 시점, 소리가 끝나는 곳
정확한 예측이 어려움
Frame
Onset의 탐지를 위해 Input data를 추적하는 작은 단위
모델의 성능과 직결되는 매우 중요한 하이퍼파라미터
AMT(자동음악전사)의 목표
오디오 파일에서 Symbolic 음악 표현인 MIDI를 추출, 생성
미디 파일로 많은 태스크를 할 수 있게 된다.
피아노 음악 전사는 Polyphonic한 특성 때문에 힘든 태스크로 생각되었다.
Polyphonic ?
이전엔 피아노 전사를 위해 NMF(Nonnegative matrix factorization)이 사용되었으나 딥러닝의 발전으로 CNN이 활약 중이며, 이는 Time-frequency의 2차원 음악 표현과 잘 맞았다.
CNN + RNN 함께 사용하는 시도도 있다.
이 논문에서는 음정의 가장 처음을 탐색하는 Onset detection 기술을 다뤄볼 것이다.
또한 모델을 확장시켜 각 Onset과 관련있는 Velocity를 예측한다.
Velocity는 건반이 눌린 속도를 캡처한 것으로 그 음이 얼마나 크게 들리는 지를 알려준다.
Velocity는 피아노 연주의 표현력과 자연스러운 결과물에 도움을 준다.

DATASET AND METRICS

MAPS 데이터셋을 사용했다.
MAPS는 audio와 그에 대응하는 음정, 코드, 완전한 피아노 곡의 주석으로 구성
완전한 피아노 곡 데이터셋은 synthesizer 소프트웨어로 렌더링 된 것과 야마하 디스클라비어로 연주된 녹음 두 개로 이루어져 있다.
합성된 곡은 훈련 세트로, 디스클라비어 녹음본은 테스트 셋으로 사용했다.
디스클라비어 녹음본과 개별적인 음정, 코드를 제외한 훈련 세트는 좀 더 현실적인 테스트 환경과 가깝기 때문이다. (훈련시킬 때 그런 녹음본을 사용하기 힘듦)
내 생각
MAPS의 미디 파일에서는 가장 먼저 음정의 길이를 조정하는 sustain 페달을 다뤄야 한다.
Sustain pedal을 긴 음정으로 변환한다.
음정이 울리는 중에 페달이 밟혀있다면, 그 음정의 길이는 페달이 떼어질 때 까지 or 그 음정이 다시 눌릴 때 까지로 길어질 것이다.
이 과정은 데이터셋에 포함된 텍스트 파일과 동일한 음정의 길이로 이루어 진다.
Metric은 Frame-level과 Note-level을 측정한다.
각각은 precision, recall, and F1 스코어를 포함한다.
음정 기반의 precision, recall, F1 스코어를 측정하기 위해서 mir_eval 라이브러리를 사용했다.
Note metric은 다시 두 가지 버전으로 나뉜다.
Onset이 Ground truth와 +-50ms 차이 내에 들어오는 지, Offset은 무시
Onset은 동일하게 고려하고 Offset 필요, 둘 중 더 큰 것 사용
음정의 길이가 Ground truth와 20% 이내로 차이가 나는지
또는 +-50ms 이내인지
Frame metric
이전 논문에서 정의된 기본적 방법을 사용했다.
Velocity transcription을 위한 새로운 metric을 제시했다.
Frame score와 Note score는 한 곡(piece)당 계산되고, 이러한 Piece score의 평균은 Collection of pieces의 최종 점수가 된다.
BUT, 방법적인 한계가 존재하여 품질 낮은 전사가 높은 Frame score를 낼 수 있다.
Note onset은 중요하지만, onset 정보만 있다면 곡 전체가 스타카토가 되거나, 음정의 release하는 시기를 일일이 결정해주어야 한다.
Note-with-offset 점수가 높다면, onset과 음정 길이 모두에서 지각적 정보를 추출했다는 뜻이므로 듣기에 좋은 결과물을 낸다.

MODEL CONFIGURATION

이전까지의 연구에서는 모든 프레임을 똑같은 중요도로 취급했지만, 이 논문에서는 음정의 시작 프레임(Onset Frame)을 가장 중요하게 다룬다.
피아노 음정의 에너지는 onset 이후 즉시 감소하기 때문에 가장 구별해내기 쉽다.
librosa를 사용해 Input을 log amplitude를 가지는 mel-spectrograms로 변환했다.
Onset detector를 훈련시키고 나온 Output을 Framewise note activation detector의 추가적인 Input으로 넣어서 훈련시킨다. → 이 Frame detector는 Onset detector가 해당 프레임에서 음정이 시작한다는 것에 동의할 때만 활성화, 이 과정에서 Threshold(임계값) 사용

Onset detector

Convolution layer
Bidirectional LSTM - 128개의 units
88개의 피아노 건반 각각에 대한 시작 확률을 나타내는 Fully-connected sigmoid
최종 Output으로 출력된다.

Framewise note activation detector

Convolution layer
88개의 출력을 가지는 Fully-connected sigmoid
여기서의 Output이 Onset detector의 Output과 연결된다.
Bidirectional LSTM - 128개의 units
88개의 출력을 가지는 Fully-connected sigmoid
이 단계의 출력에 Threshold를 적용하여 Onset detector와 Framewise note activation detector가 활성화되었는지 알아낸다.
ex) 만약 Threshold가 0.5 라면

Label

우리의 Label은 Continuous(연속적)한 반면, 오디오 처리의 결과는 Spectrogram으로 표현된다. 따라서 Loss를 계산하기 위해서는 레이블을 Quantize해야만 한다.
Spectrogram 출력과 동일한 프레임 크기를 사용한다.
그러나 메트릭을 계산할 때는, 추론 결과를 원래의 연속 시간 레이블과 비교한다.

loss function

최종 Loss function은 Onset detector와 Frame detector의 Cross-entropy의 합이다.

Onset Loss

pmaxpminp_{max} - p_{min} : 피아노 롤의 범위
TT : 프레임의 개수
CECE : Cross Entropy
Ionset(p,t)I_{onset}(p, t) : 음정 p와 해당 프레임이 정답일 때, 1을 나타내는 지표 함수
Ponset(p,t)P_{onset}(p,t) : 모델이 예측한 음정 p와 해당 프레임이 정답일 확률

Frame Loss

pmaxpminp_{max} - p_{min} : 피아노 롤의 범위
TT : 프레임의 개수
CECE : Cross Entropy
Iframe(p,t)I_{frame}(p, t) : 음정 p와 해당 프레임이 정답일 때, 1을 나타내는 지표 함수
Pframe(p,t)P_{frame}(p,t) : 모델이 예측한 음정 p와 해당 프레임이 정답일 확률
LframeL_{frame} 내에서, Onset에서의 정확성을 높이기 위해 가중치를 적용한다.
Onset label을 quantize할 때, 음정의 길이를 최소로 잘라서 만드는데 실험 결과 프레임의 길이와 동일한 32ms가 가장 잘 작동하는 것을 발견했고 이는 거의 모든 Onset이 두 프레임에 걸쳐질 것을 의미한다.
따라서 음정은 프레임 t1에서 시작하여 t2에서 Onset이 끝나고, t3에서 전체가 마무리된다.
가중치 cc는 Hyperparameter search를 통해 5.0으로 결정되었다.

EXPERIMENTS

TensorFlow
MAPS Dataset
batch size: 8
learning rate: 0.0006
Gradient clipping with L2-norm
gradient의 최대 크기를 제한하고, 그것을 넘게 되면 gradient의 크기를 조정하는 방법이다. 이는 최적화 알고리즘이 가야 하는 방향은 그대로 유지하면서 업데이트 할 step의 크기(learning rate)를 자동으로 조정한다.
Adam Optimizer

ABLATION STUDY

Onset과 Frame 정보를 모두 사용한 것이 가장 좋은 성능
이전의 연구들보다 훨씬 좋은 성능