여러 소리가 섞인 녹음에서 각 소리를 다시 떼어내는 작업을 음원 분리라고 한다. 영화 사운드 복원, 음악 리믹싱, 회의록 자막처럼 "섞인 걸 풀어야 하는" 자리에 쓴다.
분리기에 소리를 넣으려면 먼저 주파수 축을 잘게 쪼갠다. 그 조각이 수백~수천 개라 통째로 넣으면 계산이 무겁다. 그래서 요즘 모델은 조각들을 몇 개의 묶음(대역)으로 합쳐 넣는다. 묶음 하나가 모델이 한 번에 처리하는 정보 단위, 곧 토큰 하나다.
문제는 그 묶는 경계를 사람이 미리 고정해 둔다는 데 있다. 베이스가 깔린 구간과 바이올린 솔로 구간은 정보가 몰린 자리가 다른데, 칸막이는 어느 소리가 들어오든 똑같다. 이 논문은 칸 개수는 그대로 두고 칸막이만 입력에 맞춰 옮긴다. 이름은 동적 대역 분할(Dynamic Band Splitting, DBS)이다.
영화형 혼합음 벤치마크 DnR v2에서, 같은 128개 대역을 쓰되 경계를 고정한 BSRNN은 평균 SI-SDR 7.69 dB, 경계를 움직인 DBS판은 9.07 dB였다(SI-SDR는 분리된 소리가 정답에 얼마나 가까운지 재는 지표, 높을수록 좋다). 토큰 수는 그대로다. 대신 뒤에서 보듯 이 설정에서는 연산이 더 든다.
그런데 "어디서 자를지"를 모델이 정한다는 간판과 달리, 점수를 가장 크게 떠받친 건 경계 그 자체가 아니었다. 거기까지 가 보자.
이런 손질은 두 갈래 사이에 있다. 한쪽은 대역 경계를 설계 때 못 박아 모든 입력에 공유한다(BSRNN, BS-RoFormer, Mel-Band RoFormer, TIGER 등). 다른 쪽은 주파수 전단 자체를 통째로 학습시켜 자유롭게 바꾼다. DBS는 가운데를 고른다. 전단 구조와 원래 주파수 격자는 그대로 두고, 연속한 대역 사이의 경계만 입력에 따라 옮긴다. 왜 하필 가운데인지는 결과가 말해 준다.
소리를 STFT(단시간 푸리에 변환, 소리를 주파수-시간 격자로 펼치는 변환)로 바꾸면 주파수 축이 수백~수천 개의 빈(가장 작은 주파수 칸)으로 늘어난다. 대역 분할은 이 빈들을 미리 정한 레이아웃으로 묶어 수십~수백 개 대역으로 압축한다. 토큰이 줄어 계산은 가벼워지지만, 묶는 자리가 늘 고정이다.
고정 경계는 두 군데서 샌다. 성격이 다른 성분을 넓은 한 칸에 뭉뚱그리거나, 별 내용 없는 구간에 촘촘한 칸을 낭비한다. 칸을 늘리면 해상도는 오르지만 분리기 비용이 같이 오른다. 그러니 손댈 곳은 분명하다. 칸 개수는 고정하고, 그 해상도를 어디에 몰아줄지만 입력마다 바꾸면 된다.
DBS는 세 걸음으로 움직인다.
먼저 경계를 고른다. 주파수 축을 훑으며 "여기서 소리의 결이 확 바뀐다" 싶은 지점에 높은 점수를 주고, 상위에서 정해진 개수만 집는다. 경계 위치와 대역 폭은 입력마다 달라지지만 개수는 변하지 않는다.
다음은 묶기. 폭이 제각각인 대역을 대역당 토큰 하나로 압축한다. 폭과 상관없이 같은 크기 토큰이 나와야 분리기가 받는다.
마지막이 복원인데, 여기가 까다롭다. 넓은 대역 하나를 토큰 하나로 눌러 담았으니, 되돌릴 때 원래 해상도를 공짜로 복구할 수 없다. 경계 부근에서 값이 계단처럼 튀고, 한 칸에 뭉뚱그린 세부는 소실된다. 그래서 경계 확률로 전환 부분을 매끄럽게 다듬고, 이웃 주파수 정보를 다시 섞어 원래 격자로 편다.
경계를 하나도 못 받는 구간이 생기지 않게 안전장치를 뒀다. 주파수 축을 큰 블록 넷으로 먼저 나누고 블록마다 최소 예산을 배정한다. 경계는 블록 안에서만 움직인다. 조용한 대역이라고 통째로 버려지지 않는다.
남은 건 학습이다. "점수 가장 높은 것만 딱 고른다"는 결정은 자르는 순간 미분이 끊겨, 보통은 최종 오차가 경계 고르는 단계까지 거슬러 오지 못한다. DBS는 추론할 땐 경계를 실제로 딱 잘라 선택하되, 학습할 땐 그 선택 점수를 조금씩 조정할 수 있게 근사한다. 덕분에 분리가 틀린 만큼이 경계 예측기까지 되먹여진다.
각 블록의 실수부·허수부를 시간 방향 합성곱으로 처리한 뒤, 주파수 빈마다 세 가지 크기 통계(시간 평균, 피크 대 평균 비, 표준편차 대 평균 비)를 뽑는다. BiLSTM이 빈마다 맥락 벡터(주변을 함께 반영한 요약 벡터)로 정리하고, 이웃한 두 빈 사이 경계 후보마다 점수를 매긴다. 점수는 두 축으로 구성된다 — 특징 항(이웃 빈의 학습된 표현 비교)과 크기 항(이웃 빈의 음향 통계가 얼마나 바뀌는지, 이를 음향 전환 사전이라 부른다). 선택은 Hard Top-K로, 블록마다 상위 경계를 정해진 개수만 고르고 첫 빈은 늘 경계로 둔다. 폭이 제각각인 대역은 내용 기반 가중 풀링으로 묶으며, 가중치를 시간 프레임에 걸쳐 공유해 폭과 무관하게 같은 차원의 토큰을 낸다. 학습은 straight-through estimator(순전파는 하드한 선택, 역전파는 부드러운 근사를 통과시키는 기법)로 경계 예측기를 분리 손실과 함께 돌리고, 블록별 목표 압축비를 맞추는 정규화 항을 더한다.
복원 단은 확률 기반 평활화(Probability-Guided Smoothing, 경계 확률을 써서 경계 전환을 매끄럽게 다듬는다)를 거치고, 토큰을 원래 STFT 격자로 펼친 뒤 주파수 정제로 이웃 빈 특징을 섞는다. 그다음 주파수 공유 헤드로 복소 마스크(실수·허수)를 디코딩해 역STFT로 파형을 복원한다. 평활화와 이름이 헷갈리는 신뢰 경로(confidence path)는 이와 별개의 장치다 — 순전파 값은 그대로 두고, 역전파 때 경계 확률에 기울기를 추가로 흘려보내 경계 예측기 학습을 돕는다.
성격이 다른 벤치마크 셋을 썼다. DnR v2는 음악·말소리·효과음 세 소스가 섞인 영화형 혼합음, MUSDB18-HQ는 보컬·드럼·베이스·기타 네 스템 음악 분리, EchoSet은 잡음·잔향이 낀 2화자 음성이다. 분석 주파수 폭도 일부러 갈랐다. 앞 둘은 0~22.05 kHz 광대역, EchoSet은 0~8 kHz. 대역폭이 달라도 적응 배분이 통하는지 보려는 설계다.
토큰 예산은 데이터셋마다 고정했다. DnR v2·MUSDB18-HQ는 STFT 빈 1025개를 128토큰으로, EchoSet은 321개를 67토큰으로 묶는다. 분할은 추론 창마다 한 번 계산해 인코딩과 복원에 똑같이 쓴다.
지표는 성격에 맞췄다. DnR v2는 소스별 SI-SDR와 그 평균, MUSDB18-HQ는 스템별 SDR, EchoSet은 SDRi·SI-SDRi다. 다만 이 지표들은 파형이 정답에 가까운 정도를 잴 뿐 체감 음질이나 지연은 재지 않는다. 그래서 파라미터 수와 초당 MACs(곱셈-덧셈 연산량)를 따로 보고해 비용을 같이 드러낸다.
세 겹으로 나눠 읽으면 각 숫자가 어디까지 말하는지 분명해진다.
DnR v2에서 DBS-BSRNN은 9.07 dB, 같은 128대역 고정 BSRNN은 7.69 dB. 차이 +1.38 dB가 같은 조건에서 DBS 구성 전체가 보탠 몫이다. 초록의 "29.0% 상대 향상"은 기준선이 다르다. 원조 BSRNN 보고치 7.03 dB 대비 9.07 dB이니, 두 수치는 섞어 말하면 안 된다. TIGER도 고정판 8.74에서 DBS판 10.13으로 +1.39, 세 소스 모두 올랐다.
MUSDB18-HQ (외부 데이터 없이 단일 모델로 네 스템 동시 분리, 네 스템 평균 SDR)
| 백본 | 고정판 | DBS판 |
|---|---|---|
| BSRNN | 5.09 | 5.43 |
| BS-RoFormer | 4.50 | 6.34 (+1.84) |
| MelRoFormer | 7.25 | 8.07 |
EchoSet (보고된 기준 모델 대비 개선폭)
| 모델 | SDRi | SI-SDRi |
|---|---|---|
| DBS-BSRNN | +0.46 | +0.43 |
| DBS-TIGER | +0.33 | +0.31 |
MUSDB18-HQ는 한 모델이 외부 데이터 없이 네 스템을 한꺼번에 분리한 설정이다. 스템별 전용 모델을 쓰는 음악 분리 SOTA와는 조건이 달라 직접 줄 세울 값은 아니다. 여기서 보는 건 "같은 틀 안에서 DBS가 고정판을 이기나"뿐이고, 백본을 가리지 않고 이겼다.
경계를 기계적으로 균일하게 나눠 학습한 Uniform은 8.00 dB. 같은 구조·일정에서 DBS가 +1.07 높다. 이건 "경계를 내용에 맞춰 두는 학습"의 몫이다(Mel 대역으로 고정하면 5.87로 더 낮다). 학습된 가중치는 그대로 두고 추론할 때 경계만 원래 BSRNN 레이아웃으로 바꿔치기하면 9.07에서 8.62로 내린다. 경계 위치만 되돌렸을 때의 손실, 즉 0.45 dB다. 경계는 실제로 입력마다 움직였다. DnR v2 테스트 혼합음 64개가 모두 다른 분할을 냈고, 같은 녹음 안 이웃 창끼리도 달랐다. 반대로 같은 입력을 반복하면 늘 같은 분할이 나왔다. 입력엔 적응하되 결과는 결정적이다.
구성 요소를 하나씩 빼 보면 무게중심이 드러난다. 복원 쪽 주파수 정제를 빼자 9.07에서 3.92로 내려앉았다(-5.15). 경계 점수에서 음향 전환 사전을 빼면 -4.98, 블록을 4→2→1개로 줄이면 9.07→8.32→6.30, 학습된 특징 없이 통계만 쓰면 -2.14, 신뢰 경로를 빼면 -1.54였다.
여기서 제목과 결과가 어긋나는 지점이 보인다. 경계를 스스로 고르는 게 이 논문의 간판이지만, 추론 때 경계만 되돌렸을 때의 손실(0.45)보다 복원 단 하나를 뺐을 때의 손실(5.15)이 훨씬 크다. 성능은 정보를 어디서 묶느냐와 그걸 어떻게 다시 펴느냐가 함께 만든다. 경계를 잘 잡아도 펴는 단이 부실하면 점수가 크게 꺾인다.
단, 하락 폭으로 요소를 그대로 줄 세우긴 어렵다. 한 요소를 빼면 다른 요소가 역할을 일부 떠안거나, 뒤 단계가 망가져 앞 단계 이득까지 못 살린다. 하락 폭은 "그 요소가 빠진 전체가 얼마나 버티나"이지 "그 요소 하나의 순수 기여"가 아니다.
DBS가 붙으면 연산량이 어떻게 변하는지는 데이터셋·백본에 따라 갈린다. DnR v2의 DBS-BSRNN(128)은 파라미터가 4.7M으로 고정 BSRNN의 35.5M보다 훨씬 작지만, 초당 MACs는 124.0으로 고정판 76.6보다 높다. 경계를 매번 예측하고 복원 단을 더 거치는 값이다. 반대로 MUSDB18-HQ에서는 BSRNN이 21.8→20.8, BS-RoFormer가 292.7→290.5 G/s로 오히려 줄고, EchoSet의 BSRNN은 98.7→38.1 G/s로 크게 줄었다. 파라미터가 준다고 반드시 가벼워지는 것도, DBS를 붙이면 늘 무거워지는 것도 아니다 — 연산량은 데이터셋과 백본에 달렸다.
저자들도 선을 긋는다. 대역 개수는 고정이고, 추론 창마다 분할은 하나다. 한 창 안에서 소리가 중간에 바뀌어도 경계는 창 내내 그대로라, 창보다 짧은 변화는 못 따라간다. 개수까지 학습시킨 예비 변형은 블록마다 허용된 최대 예산을 다 쓰려는 쪽으로 쏠렸다. 개수를 유연하게 두려면 복잡도에 별도 제약이 필요하다고 본다.
앞서 미뤄 둔 "왜 하필 가운데냐"도 여기서 답이 된다. 전단을 통째로 학습시키는 가장 자유로운 쪽(학습형 필터뱅크)은 같은 설정에서 -11.72 dB로 주저앉았다. 자유도를 높이면 표현력은 늘지만, 복원과 순서 있는 대역 구조를 함께 맞추기가 그만큼 어려워진다. 구조는 두고 경계만 옮긴 절충은 이 난점을 피해 간 선택이다.
온틀은 AI 프로젝트 매니저를 붙여 주는 서비스다. DBS를 그대로 가져다 쓰진 못해도, 원리 하나는 빌릴 만하다. 고정된 검토 예산 안에서 모든 곳에 최소 점검량은 보장하고, 남는 몫을 변화가 큰 쪽에 몰아주는 것.
장면 하나. 한 고객이 "납기를 사흘 앞당겨 달라"는 메시지를 보냈다. AI PM이 하루에 깊게 들여다볼 수 있는 양(연산·컨텍스트)은 정해져 있다. 기본은 모든 프로젝트에 최소 점검을 돌리되(블록 예산처럼), 방금 기한이 바뀐 이 프로젝트에 추가 검토를 몰아준다. 일정 재배치, 선행 작업 충돌, 담당자 여력을 더 깊게 본다. 그동안 평소대로 흐르는 다른 프로젝트는 가벼운 요약만.
빌려올 신호는 "상태가 평소와 얼마나 달라졌나"다. 태스크 상태 변경 빈도, 기한 변경 같은 것. 이게 득인지는 세 숫자로 확인한다. 모든 곳을 똑같이 점검할 때와 견줘, 놓치는 일이 줄었는가(누락률), 그 배분에 드는 검토 비용은 얼마인가, 응답이 느려지진 않았는가. DBS가 어떤 설정에선 파라미터를 줄이고도 MACs를 늘렸듯, "필요한 곳에 몰아주는 판단" 자체가 비용일 수 있다. 아끼는 것보다 그 비용이 커지면 안 하느니만 못하다. 적용은 여기서부터 검토 과제가 된다.
그게 설계 목표입니다. DBS는 토큰의 개수와 차원을 보존하도록 만들어, 기존 백본이 토큰을 받던 입력 자리에 그대로 들어갑니다. 논문은 BSRNN·TIGER·BS-RoFormer·MelRoFormer 넷에 얹어 모두 고정판보다 좋은 결과를 냈습니다. 단, 경계 예측기는 분리기와 처음부터 함께 학습해야 효과가 납니다.
소리를 제대로 되돌리려면 각 주파수의 세기뿐 아니라 위상(파형의 타이밍) 정보가 필요하기 때문입니다. 실수부와 허수부를 함께 추정해야 위상이 살아납니다.
논문은 백본별 향상 폭의 이유를 따로 특정하지 않습니다. 고정판 점수(4.50)가 다른 백본보다 낮았던 자리에서 적응 이득이 크게 났다고 읽을 수 있는 정도입니다.
논문 초록에 코드와 오디오 데모 주소가 공개돼 있습니다(https://cslikai.cn/Dynamic-Band-Splitting). 본문은 아래 arXiv·HuggingFace 링크에서 확인할 수 있습니다.