컴퓨터 오케스트라와 콘체르토를

by SL

우리는 별다른 수고 없이도 소리를 듣고 느끼지만 귀와 뇌가 없는 컴퓨터에게 공기의 진동으로부터 음악을 듣는 것은 특별한 노력이 필요한 일이다. 어렵긴 하지만 그래도 그럴 만한 가치가 있다. 기계가 음악을 들을 줄 알게 되면 무엇이 가능해지는지 이 동영상을 보자. 조유진(Yoo-jin Cho)이라는 분이 바이올린 협주곡을 연주하는 장면이다. 협주곡이라면 독주자(soloist)와 오케스트라가 함께 연주한다는 뜻인데, 오케스트라는 어디에 있을까? 바로 컴퓨터 속으로 들어갔다.

위의 링크는 Music Plus One이라는 프로젝트의 데모 영상이다. 이 연구의 목적은 동영상에서처럼 솔로로 연주하는 사람에 맞추어 오케스트라 파트를 스스로 연주하는 시스템을 구현하는 것이다. 그 결과가 2010년 ICML(International Conference on Machine Learning)에 Music Plue One and Machine Learning이라는 제목으로 발표되었고, CACM 3월호 Research Highlights 섹션에도 소개되었다.

협주를 하려면 당연하게도 먼저 상대방의 소리를 듣는 법부터 배워야 한다. 간단해 보이지만 기계 입장에서는 악보를 아는 상태에서 연주 소리를 따라가는 것부터도 쉽지 않다. 우선 물리적으로 소리를 감지한 순간부터 처리하는 동안 발생하는 딜레이가 있으며, 빨리 따라가려고 서두른 나머지 나지도 않은 소리를 들어서도 곤란하다. 또, 협연이라는 특성상 오케스트라 스스로 내는 소리와 솔로 연주를 구분하는 것도 필요하다. 이런 다양한 상황에 유연하게 대처하기 위해 연구자들이 사용한 방식은 HMM(Hidden Markov Model)이다.

HHM에서는 시간에 따라 상태가 변하며, 각 상태마다 특정한 현상을 만들어낼 확률을 가지고 있다. 이 경우에는 오른쪽 그림처럼 악보의 모든 음표에 대해 어택-sust 상태 그래프가 있고, 매 프레임(30fps할 때 그 프레임)에서 감지된 오디오 신호로부터 현재 상태를 추정한다.

듣기의 다음 단계는 솔로 연주에 맞추어 오케스트라를 진짜로 연주하는 일이다. 리허설을 통해 독주자와 맞춰가는 과정이 필요한 것은 기계 오케스트라나 진짜 오케스트라나 별반 다르지 않다. 연습을 통해 솔로 연주에 적응(adapt)하는 것이다. 게데가, 연주자에 따른 차이 뿐만 아니라 연주 중간에 시시각각 달라지는 템포 등 다양한 상황에도 순간적으로 맞출 수 있는 모델이 필요하다. 그래서 이 연구에서는 독주자와 오케스트라의 소리가 합쳐진 리듬 모형을 만들어두고 (왼쪽 그림), 리허설을 통해 혹은 실제 연주 중에 들린 소리에 따라 자기가 소리를 낼 타이밍을 예측하고 조정하는 방식을 사용했다고 한다.

결국 컴퓨터가 협주하는 오케스트라란 수학 모형을 이용해서 솔로 연주 소리를 인식하고, 스스로 연주할 타이밍을 계산해서 미리 녹음된 음을 적당한 템포로 재생하는 것이다. 이렇게 글로 쓰면 밋밋하기 그지없지만, 정말로 이런 시스템이 주변에 있어서 보통 사람들도 쉽게 자기만의 오케스트라와 콘체르토를 연주할 수 있다면 무척 멋지지 않을까?