Logo Ernie.SG

개발자 일지: 어떤 악기든 디지털화하고 바로…

2024년 2월 17일
5분 읽기
사용 가능한 태그가 없습니다
Table of Contents

소리가 데이터의 한 형태로서, 또 콘텐츠를 소비하는 매체로서 얼마나 더 접근 가능하고 민주적인지 처음 실감한 건 말레이시아에 있을 때였다. 운전기사의 휴대폰에서 흘러나온 선율이 엄마가 보던 영상들에서도 들리던 바로 그 선율이었다. 붙어 있는 내레이션의 언어와 콘텐츠만 달랐을 뿐이다. 소리, 굳이 말하자면 구술 커뮤니케이션에는 텍스트나 이미지만으로는 닿기 어려운 사회의 훨씬 더 많은 층위까지 도달하는 힘이 있다. 텍스트와 이미지는 대체로 교육이나 훈련을 요구한다. 나도 고등교육을 받았지만, 사람들이 시각예술을 논할 때 쓰는 온갖 -ism에는 능숙하지 않다. 반면 그런 면에서 소리는 거의 이보다 더 민주적이고 접근 가능하기 어렵다.

그리고 소리는 엄청난 양의 내용과 중첩을 품고 있다. 데이터 표현 형식으로 봐도 그 복잡도는 텍스트나 이미지보다 몇 배는 높아서, 그래서 더 흥미롭다. 내 심정은 그냥 이렇다. 멀티모달로 다 줘, 가능한 한 다양한 데이터와 가능한 한 많은 데이터를 가지고 놀고 싶다고. 그래서 팀의 아티스트들이 내 RAVE 모델 학습을 드럼 팩 하나로 제한해 달라고 했을 때, 기술적인 관점에서는 작가에게 색 하나만 가지고 그림을 그리라고 하는 것처럼 느껴져서 정말 의아했다. 다만 감정적인 관점에서라면 어디서 나온 말인지는 이해한다. 표본 크기 1은 특별하고 고유하며, 그 표본 크기 1이라는 감각은 예술, 문화, 나아가 사회적 세계 일반을 만드는 방식과 꽤 구체적이고 자연스럽게 맞닿아 있으니까. 반면 내가 서 있는 자리에서는 드럼 A의 데이터 흐름과 드럼 B의 데이터 흐름은 같은 것이다. A == B. 다른 곳에서 본 다음 문제의식과 비슷하다.

OpenAI의 Jukebox 프로젝트가 함의하는 바가 나를 불편하게 한다. 장르와 아티스트 정보를 조건으로 삼아, 극도로 큰 데이터셋(120만 곡)으로 학습시켜 일종의 “보편적” 음악을 모델링하겠다는 발상 말이다. 어떻게 각각의 음악 작품이 다른 모든 음악 작품과 의미상 동등하다고 여겨질 수 있을까. 모든 맥락에서, 모든 청자에게?

다행히 나는 GPU에 접근할 수 있는 복을 타고났으니 하나만 골라야 하지는 않았다. 그냥 Google Vertex AI에 커스텀 학습 작업을 던져 병렬로 잔뜩 돌리면 되겠다고 생각했다. 최선을 다했는데도 끈질기게 실패했지만. ZZZ… 결국 그달 CoLab의 무료 GPU 시간을 전부 태워서 9000 epoch까지 학습한 모델 하나를 얻었고, 내 3070에서 로컬로 20000 epoch를 끝낸 모델 하나를 더 얻었다. 그리고 흰목물총새 소리가 말레이 드럼처럼 들리는 걸 듣고는 이런 기분이 됐다. 오모, 이거 딥러닝으로 몇 주나 몇 달이 아니라 몇 시간 안에 정말 어떤 악기든 디지털화할 수 있다는 뜻 아닌가????

GPU 시간을 다 써 버린 뒤 CoLab 노트북에서 CPU로 학습되는 속도와, 가볍게 5배는 빠른 내 로컬 학습 속도를 비교해 보니 이런 생각이 든다. GPU 부자와 GPU 빈곤층은 진짜로 존재한다.

Neutone에서 실행하는 RAVE 음색 전이

패키지에 이미 들어 있던 대충 만든 전처리 말고는 아무 전처리도 하지 않았고, 추론에 넣은 입력 데이터에는 배경 잡음도 있어서 아직 이상한 디지털 신호가 조금씩 튀어나온다. 그런데도 무료 Google CoLab에서 제공한 Nvidia T4로 Rebana와 Rentak 소리 고작 229초를 1000 epoch 넘게 학습한 결과가 이 정도라는 사실은, 예전에 드럼 데이터 2시간을 13시간 동안 39 epoch 학습했던 실행과 비교하면 그냥 정신이 아득해진다. 229초, 검증 데이터 포인트 1개, 오류 최소화만으로 드럼의 온갖 뉘앙스와 표현을 어떻게 이렇게 잘 배운단 말인가!? A.I.의 발전 궤적은 인간의 척도로는 상상하기 어렵다.

이 학습이 왜 중요한지는 아래에서 ChatGPT에게 설명을 맡겨 보겠다.

음색이란 무엇인가?

음색은 흔히 소리의 “질감” 또는 “톤 컬러”라고 불리며, 서로 다른 악기나 목소리가 같은 높이와 같은 음량의 소리를 내고 있을 때도 그것들을 구분하게 해 주는 요소다. 본질적으로는 어떤 소리를 알아볼 수 있고 다른 소리와 구별되게 만드는 고유한 성격이나 결이다.

음색 전이란 무엇인가?

신경망 오디오 합성의 맥락에서 음색 전이는 음높이와 리듬 같은 다른 요소는 보존하면서 소리의 음색적 특성을 바꾸는 과정을 가리킨다.

RAVE 모델을 학습시킬 때 무슨 일이 벌어지는가, 또는 기계는 어떻게 이렇게 적은 데이터로 악기를 재현하는 법을 배웠는가?

기본적으로 특정 종류의 드럼으로 모델을 학습시키면, 그 드럼에 맞춰진 가상 악기를 만드는 셈입니다. 모델은 학습 과정에서 그 드럼의 특성과 미묘한 차이를 익히고, 음색 전이나 소리 생성에 사용할 때 그 학습된 지식을 적용해 입력 소리를 학습한 드럼의 스타일로 바꿉니다. 이렇게 하면 원하는 소리를 얻기 위해 음높이나 음량 같은 여러 매개변수를 손으로 일일이 매핑할 필요가 없어지므로 가상 악기 제작 과정이 단순해질 수 있습니다. 대신 학습된 모델이 드럼의 특성을 바탕으로 변환을 처리하게 맡길 수 있습니다.

음색 전이는 오디오 처리에서 한 오디오 신호의 소리 특성을 다른 신호의 특성과 맞도록 바꾸는 기법입니다. 당신이 작업해 온 RAVE 모델 같은 신경망 오디오 합성 맥락에서는, 입력 소리의 음색적 특성을 특정 종류의 드럼 같은 목표 소리의 특성과 닮도록 변환하는 일을 뜻합니다.

당신이 사용해 온 RAVE 모델의 경우, 학습 중에 드럼 묶음의 음색적 특성을 배웁니다. 이 학습 과정은 제공된 학습 데이터에서 드럼 소리의 섬세한 특징과 뉘앙스를 포착하는 일을 포함합니다. 그런 다음 모델은 이렇게 배운 정보를 사용해 입력 소리의 음색이 학습한 드럼과 닮도록 변환합니다.

RAVE 같은 신경망 모델은 비교적 적은 양의 학습 데이터만으로도 일반화하는 법을 배우고, 소리 원천의 핵심 특성을 포착할 수 있습니다. 입력 소리에서 학습된 특징을 나타내는 잠재 공간을 조작하면, 가능한 모든 변주를 명시적으로 녹음하지 않고도 음높이, 음량, 그 밖의 음색 속성처럼 출력 소리의 여러 측면을 제어할 수 있습니다.

따라서 음높이, 음량, 기타 매개변수의 가능한 변주마다 별도의 샘플을 녹음할 필요 없이, 학습된 모델의 잠재 공간을 조작해 비슷한 효과를 얻을 수 있습니다. 대규모 수작업 녹음과 처리 없이도 폭넓은 소리 변주를 탐색할 수 있으므로 과정은 더 효율적이고 유연해집니다.

모든 소리를 만들기 위한 튜토리얼

알고 보니 내가 커스텀 학습 작업을 제출하지 못한 건 GPU 자원이 전반적으로 부족하다는 신호였을지도 모른다. 너무 많은 사람들이 너무 많은 지역에서 시도 때도 없이 커스텀 학습 작업을 제출하다 보니 실제 장애에 가까운 문제가 생겼고, 차라리 전용 서버를 쓰는 편이 훨씬 나았을 수도 있다는 얘기다!? 게다가 코드를 읽을 생각을 안 해서 학습 중에 몇 시간씩 쓸데없는 고통을 겪었다. 문서 어디에도 이런저런 플래그가 필요하다고 쓰여 있지 않았으니까… 그래서 관심 있는 사람들을 위해 언젠가 시간을 내서 짧은 튜토리얼 영상을 만들어 보고 싶다.

이 글은 세상에 더 많은 낯설고 새로운 디지털 소리가 생기기를 바라며 바친다!


원래 PubPub의 erniesg.pubpub.org/pub/r4a1ex9r에 게시했다.