Audio-003, SoundStream: An End-to-End Neural Audio Codec, TASLP 2021
◼ Comment
- 오데오 코덱 압축에서 엄청 유명한 논문임
- 압축이란 개념을 알기 위해서 비트레이트란 용어를 알아야함
- 쉽게 말하면 얼마의 비트로 저장하냐의 뜻
- 큰 그림은
- 오디오 시그널을 VQ-VAE-2식으로 압축했다가 복원하는식으로 학습
- + GAN 식의 loss 추가
- 학습된 인코더로 오디오 신호를 코드북벡터로 바꾸면, 이게 압축된것
- 예로 하나의 코드북이 1024개가 있고, 이를 3개(RVQ)를 사용하면 2^10이 3개있으니까 30비트 표현이 가능한것 (코드북당 차원은 32인듯)
- 모델 학습방식
- raw 시그널을 convolution향 인코더에 태운다
- 그러면 embeddings @ 75Hz가 되는데 이는 75xD 을 말한다.
- 이거를 RVQ을 태운다
- RVQ는 코드북형태로 데이터를 바꾼다는 것인데, 여기서는 하나의 코드북을 쓰는게 아니라 residual 형태의 코드북을 쓴다
- 즉 맨 처음에 가장 가까운 코드북벡터(1024개)로 매핑한다.
- 가장 가깝다해도 선택된 코드북이랑 인코더 결과와 일부 다를 것이고
- 이 차이를 다시 2번째 코드북에 매핑한다.
- 이렇게 순차적으로 진행된다.
- 80비트로 데이터를 저장하고, 8개의 코드북(Nq)을 사용한다고하면, 10번의 residual이 진행되고 즉 코드북벡터가 8개가 생기도록 학습이 된다는 것
- 실제 학습될때 디코더입력은 이 코드북 벡터가 다 더해져서 복원되도록 학습
- RVQ의 필요성
- 6000bps 비트레이트를 가정하면, 위의 상황에서 75hz(샘플링)이니까 6000=75(샘플/초)*x(비트/샘플)에서 x값은 80이 나온다.
- 즉 80비트로 데이터를 저장해야한다는 말이고, 이는 2^80의 데이터를 표현가능해야하는데, 이는 현실적으로 불가능하다고 말한다.
- 80차원의 코드북 벡터로 구성하고 학습하면 되는것 안되나 싶긴한데 암튼 데이터표현이 너무 많이되서 제대로 학습되기 힘들다는 의미로 받아들임
- RVQ의 residual 수를 항상 고정된 8개 이렇게 가져가는 것이 아니라, 이중 일부를 dropout처럼 사용했다 안사용했다 학습한다
- 실제 테스트시, 원하는 비트레이트에 맞게 이 수를 조절해서 동적 압축이 가능하다는 것을 보여준다.
- GAN 학습방식을 따르는데, 이는 본문 참고
- 압축과 동시에 enhancement하는 것도 Film layer을 사용한다고 하는데, 본문 참고
- 결과적으로 다양한 압축율을 제공하고, 다른 모델에 비해 성능도 좋다고 함
1. 주관적 품질 평가
-
MUSHRA 기반 크라우드소싱 테스트
-
깨끗한 음성, 잡음 섞인 음성, 음악, 실제 환경 음성을 포함한 샘플 200개를 20명씩 평가.
-
**참조(reference)**는 숨겨 두고, 참가자들이 0~100 점수로 평가.
-
그림 5, 그림 6에서 나온 MUSHRA 점수가 핵심 결과야.
-
결론: 같은 품질을 내려면 EVS, Opus는 SoundStream보다 2~4배 높은 비트율을 써야 했음.
-
2. 객관적 품질 평가
-
ViSQOL (Virtual Speech Quality Objective Listener) 사용
-
ITU-T의 PESQ/POLQA 같은 표준 지표 대신, 라이선스 제약 없는 공개 지표 채택.
-
원본 vs 복원 신호의 스펙트로그램 기반 지각적 유사성을 점수화.
-
ViSQOL 점수와 MUSHRA 점수가 강하게 상관됨을 확인.
-
그림 7에서 SoundStream의 비트율 대비 ViSQOL 곡선이 제시됨.
-
3. 정리
-
압축 효율 = “같은 비트율에서 얼마나 높은 음질을 내느냐”
-
음질 지표 = 사람 평가(MUSHRA) + 자동 지표(ViSQOL)
-
따라서, SoundStream 논문에서 품질 평가는 MUSHRA + ViSQOL 조합으로 이뤄졌다고 보면 돼.
Abstract
우리는 SoundStream이라는 새로운 신경망 기반 오디오 코덱을 제안한다. 이 코덱은 일반적으로 음성 전용 코덱이 목표로 하는 비트레이트에서 음성, 음악, 일반 오디오를 효율적으로 압축할 수 있다. SoundStream은 완전 합성곱 기반 인코더/디코더 네트워크와 **잔차 벡터 양자화기(residual vector quantizer, RVQ)**로 구성된 모델 아키텍처에 기반하며, 이들은 엔드-투-엔드 방식으로 공동 학습된다. 학습은 텍스트-투-스피치(TTS)와 음성 향상 분야의 최신 기법을 활용하며, **적대적 손실(adversarial loss)**과 **재구성 손실(reconstruction loss)**을 결합해 양자화된 임베딩에서 고품질 오디오를 생성할 수 있도록 한다.
양자화기 층에 **구조적 드롭아웃(quantizer dropout)**을 적용해 학습하면, 하나의 모델이 3 kbps에서 18 kbps까지 다양한 비트레이트에서 동작할 수 있으며, 고정된 비트레이트에서 학습된 모델과 비교했을 때 품질 손실은 거의 없다. 또한 이 모델은 **낮은 지연 시간 구현(low-latency implementation)**이 가능해, 스트리밍 추론을 지원하며 스마트폰 CPU에서도 실시간으로 동작한다.
24 kHz 샘플링 레이트의 오디오를 사용한 주관적 평가에서, SoundStream은 3 kbps에서도 Opus(12 kbps)보다 우수한 성능을 보였으며, EVS(9.6 kbps)에 근접한 결과를 나타냈다. 더 나아가, 인코더 또는 디코더 측에서 압축과 향상을 동시에 수행할 수 있으며, 추가 지연(latency)을 유발하지 않는다. 이를 우리는 음성의 배경 소음 억제 사례를 통해 입증한다.
I. INTRODUCTION (서론)
오디오 코덱은 크게 두 부류로 나눌 수 있다: 파형 코덱(waveform codecs) 과 파라메트릭 코덱(parametric codecs).
파형 코덱은 디코더 측에서 입력 오디오 샘플을 충실하게 재구성하는 것을 목표로 한다. 대부분의 경우, 이러한 코덱은 변환 부호화(transform coding) 기법에 의존한다. 즉, (보통 가역적인) 변환을 사용해 입력 시간영역 파형을 시간–주파수 영역으로 사상하고, 그다음 변환 계수를 양자화하고 엔트로피 부호화한다. 디코더 측에서는 변환을 역으로 적용해 시간영역 파형을 재구성한다. 종종 인코더에서의 비트 할당은 지각(perceptual) 모델에 의해 주도되며, 이것이 양자화 과정을 결정한다. 일반적으로 파형 코덱은 오디오 콘텐츠 유형에 대해 거의 혹은 전혀 가정을 하지 않으므로 일반 오디오에 적용될 수 있다. 그 결과, 중–고 비트레이트에서는 매우 높은 음질을 제공하지만, 저비트레이트에서 동작할 때는 부호화 잡음(coding artifacts)을 유발하는 경향이 있다.
파라메트릭 코덱은 (대부분의 경우 음성) 부호화할 원천 오디오에 대한 특정한 가정을 도입하고, 오디오 합성 과정을 설명하는 파라메트릭 모델의 형태로 강한 사전지식을 넣음으로써 이 문제를 극복하고자 한다. 인코더는 모델의 파라미터를 추정하고 이를 양자화한다. 디코더는 양자화된 파라미터로 구동되는 합성 모델을 사용해 시간영역 파형을 생성한다. 파형 코덱과 달리, 목표는 샘플 단위로 충실한 재구성이 아니라 지각적으로 원본과 유사한 오디오를 생성하는 것이다.
- 파형 코덱 = “그림을 그대로 압축해서 복원” (충실 복원, 하지만 저비트레이트에서 잡음 많음)
- 약간 신호처리쪽? 정통 코덱인듯
- 파라메트릭 코덱 = “그림을 보고 특징(색, 모양)을 메모했다가 그걸로 다시 그림을 그림” (특정 도메인에서는 효율적, 하지만 일반성은 떨어짐)
- 요즘 스타일인듯, 모델로 압축하는것
전통적인 파형 및 파라메트릭 코덱은 신호 처리 파이프라인과 세심하게 설계된 공학적 선택에 의존하는데, 이는 부호화 효율을 높이기 위해 음향심리(psycho-acoustics) 및 음성 합성에 대한 도메인 지식을 활용한다. 최근에는 머신러닝 모델이 오디오 압축 분야에 성공적으로 적용되면서 데이터 기반 접근이 가져오는 부가 가치를 입증했다. 예컨대 기존 코덱의 품질을 향상시키는 후처리 단계로 사용할 수 있는데, 이는 오디오 초해상도(즉, 주파수 대역 확장) [1], 오디오 디노이징(손실 부호화 인공물 제거) [2], 혹은 패킷 손실 은폐 [3]를 통해 달성될 수 있다.
또 다른 해결책은 ML 기반 모델을 오디오 코덱 아키텍처의 구성 요소 자체로 채택하는 것이다. 이 영역에서, 최근의 텍스트-투-스피치(TTS) 기술의 발전이 핵심 요소로 작용했다. 예를 들어, 원래 텍스트로부터 음성을 생성하는 데 적용된 강력한 생성 모델인 WaveNet [4]은 신경 코덱의 디코더로 채택되었다 [5], [6]. 다른 신경 오디오 코덱들은 서로 다른 모델 아키텍처를 채택하는데, 예컨대 LPCNet [7]에서는 WaveRNN, Lyra [8]에서는 WaveGRU를 사용하며, 모두 저비트레이트의 음성을 목표로 한다.
본 논문에서는 SoundStream이라는 새로운 오디오 코덱을 제안한다. 이는 그림 1에서 보이듯이, 이전 코덱들보다 음성, 음악, 일반 오디오를 더 효율적으로 압축할 수 있다. SoundStream은 신경 오디오 합성 분야의 최신 해법을 활용하고 새로운 학습 가능한 양자화 모듈을 도입하여, 낮은–중간 비트레이트로 동작하면서도 높은 지각적 품질의 오디오를 제공한다.
그림 2는 코덱의 상위 수준 모델 아키텍처를 보여준다.
- 완전 합성곱 인코더는 시간영역 파형을 입력으로 받아 더 낮은 샘플링 레이트에서의 임베딩 시퀀스를 생성하고, 이는 잔차 벡터 양자화기(residual vector quantizer) 에 의해 양자화된다.
- 완전 합성곱 디코더는 양자화된 임베딩을 입력받아 원래 파형의 근사치를 복원한다. 모델은 재구성 손실과 적대적 손실을 모두 사용하여 엔드-투-엔드로 학습된다.
- 이를 위해 하나(또는 그 이상)의 판별기(discriminator)를 공동으로 학습하는데, 그 목적은 디코딩된 오디오와 원본 오디오를 구별하는 것이며, 부수적으로 특징 공간에서의 재구성 손실을 계산할 수 있는 공간을 제공한다.
- 인코더와 디코더는 모두 인과(concatenated가 아니라 causal) 합성곱만 사용하므로, 모델의 전체 아키텍처 지연(latency)은 원래 시간영역 파형과 임베딩 간의 시간 리샘플링 비율에 의해서만 결정된다.
요약하면, 본 논문은 다음과 같은 핵심 기여를 한다:
-
SoundStream을 제안한다. 여기서 모든 구성 요소(인코더, 디코더, 양자화기)는 재구성 손실과 적대적 손실의 혼합으로 엔드-투-엔드 학습되어, 우수한 오디오 품질을 달성한다.
-
새로운 잔차 벡터 양자화기(residual vector quantizer) 를 도입하고, 그 설계가 내포하는 레이트-왜곡-복잡도(rate-distortion-complexity) 절충을 조사한다. 추가로, 양자화기 드롭아웃(quantizer dropout) 이라는 새로운 학습 기법을 제안하여, 단일 모델이 다양한 비트레이트를 처리할 수 있게 한다.
-
인코더를 학습하는 것이, 멜-스펙트로그램 특징을 채택하는 해법에 비해, 매우 큰 부호화 효율 개선을 가져옴을 보인다.
-
주관적 품질 지표를 통해, SoundStream이 광범위한 비트레이트에서 Opus와 EVS를 능가함을 보인다.
-
모델을 스트리밍 가능한 추론(streamable inference) 을 지원하도록 설계했으며, 저지연으로 동작할 수 있다. 스마트폰에 배치했을 때, 단일 CPU 스레드에서 실시간으로 구동된다.
-
오디오 압축과 향상(enhancement) 을 추가 지연 없이 공동으로 수행하는 SoundStream 변형도 제안한다.
II. 관련 연구 (RELATED WORK)
전통적 오디오 코덱 – Opus [9]와 EVS [10]는 최첨단 오디오 코덱으로, LPC, CELP, MDCT와 같은 전통적인 코딩 도구들을 결합하여 다양한 콘텐츠 유형, 비트레이트 및 샘플링 레이트 전반에 걸쳐 높은 부호화 효율을 제공하면서, 실시간 오디오 통신을 위한 저지연을 보장한다. 우리는 주관적 평가에서 SoundStream을 Opus 및 EVS와 비교한다.
요즘 스타일은 아니고, 과거에 나왔던 전통 오디오 코덱인듯.. 전반적으로 비트레이트 상관없이 잘 작동하는 방법인거 같음
오디오 생성 모델 – 텍스트나 부호화된 특징들을 오디오 파형으로 변환하기 위해 여러 생성 모델이 개발되었다. WaveNet [4]은 전역적 및 지역적 신호 조건화를 모두 허용하여 음성과 음악을 합성한다. SampleRNN [11]은 유사하게 순환 신경망을 사용하지만, 서로 다른 스케일에서 이전 샘플에 의존한다. 이러한 자기회귀(auto-regressive) 모델들은 매우 높은 품질의 오디오를 생성하지만, 샘플을 하나씩 생성하기 때문에 연산 복잡도가 증가한다. 이를 해결하기 위해, Parallel WaveNet [12]은 병렬 연산을 가능하게 하여 추론 속도를 크게 높였다. 다른 접근으로는 경량·희소 모델 [13]과, 모델 내부에서 푸리에 변환을 모방하는 네트워크 [7], [14] 등이 있다. 최근에는 생성적 적대 신경망(GAN) 기반 모델이 더 낮은 연산 복잡도로 고품질 오디오를 생성하는 해법으로 떠올랐다. MelGAN [15]은 멜-스펙트로그램으로 조건화된 오디오 파형을 생성하도록 학습되며, 다중 스케일 파형 판별기를 생성기와 함께 학습한다. HiFiGAN [16]도 유사한 접근을 취하지만, 판별기를 여러 스케일과 여러 주기에 적용한다. SoundStream의 디코더 설계와 손실 함수는 이 계열의 오디오 생성 모델들에 기반한다.
오디오 향상(Audio enhancement) – 심층 신경망은 디노이징 [17]–[21], 디리버베이션(dereverberation) [22], [23], 손실 부호화 디노이징 [2], 주파수 대역 확장 [1], [24] 등 다양한 오디오 향상 과제에 적용되었다. 본 논문에서는 하나의 모델로 추가 지연을 발생시키지 않고, 오디오 향상과 압축을 동시에 수행할 수 있음을 보인다.
벡터 양자화(Vector quantization) – 최적의 양자화를 학습하는 것은 높은 부호화 효율을 달성하는 핵심 요소이다. 로이드(Lloyd)의 알고리즘 [25]에 기반한 최적 스칼라 양자화는 일반화된 로이드 알고리즘(GLA) [26]을 통해 고차원 공간으로 확장될 수 있으며, 이는 k-means 클러스터링 [27]과 매우 유사하다. 벡터 양자화 [28]에서는 고차원 공간의 점이 유한한 코드 벡터 집합에 매핑된다. 벡터 양자화는 전통적인 오디오 코덱의 구성 요소로 흔히 사용되었다 [29]. 예를 들어, CELP [30]는 벡터 양자화 코드북으로 부호화된 여기 신호를 채택한다. 최근에는 벡터 양자화가 신경망 모델의 맥락에서 입력 특징의 잠재 표현(latent representation)을 압축하는 데 적용되고 있다. 예컨대 변분 오토인코더(VAE)에서는 벡터 양자화를 사용해 이미지를 생성 [31], [32]하거나 음악을 생성 [33], [34]한다. 그러나 코드북 크기가 증가하면 연산 비용이 지수적으로 커지므로, 효율과 복잡도 사이의 절충을 위해 잔차, 곱(product), 격자(lattice) 등 구조적 벡터 양자화 [35], [36]가 제안되었다. 본 논문에서는 VQ-VAE [31]의 학습 가능한 벡터 양자화를 확장해, 모델 전체와 함께 엔드-투-엔드 방식으로 학습되는 잔차(다단계) 벡터 양자화기를 도입한다. 저자들이 아는 한, 신경망 맥락에서 이런 형태의 벡터 양자화를 사용하고 전체 모델과 함께 엔드-투-엔드로 학습한 것은 본 논문이 최초다.
신경 오디오 코덱(Neural audio codecs) – 엔드-투-엔드 신경 오디오 코덱은 수작업으로 설계된 신호 처리 구성 요소에 의존하지 않고, 데이터 기반 접근을 통해 효율적인 오디오 표현을 학습한다. 숨겨진 특징을 양자화하는 오토인코더 네트워크가 초창기부터 음성 부호화에 적용되었다 [37]. 최근에는 더 정교한 심층 합성곱 네트워크가 음성 압축에 사용되었다 [38]. 신경망을 통한 효율적인 오디오 압축은 여러 연구에서 입증되었는데, 주로 저비트레이트 음성 부호화를 목표로 한다. VQ-VAE 기반 음성 코덱이 1.6 kbps에서 제안되었으며 [6], Lyra [8]는 멜-스펙트로그램 특징을 양자화해 인코딩하고, 이를 오토리그레시브 WaveGRU 모델로 디코딩하여 3 kbps에서 최첨단 성능을 달성했다. 또, 자기지도 학습으로 얻은 음성 표현을 디코딩해 매우 저비트레이트 코덱을 구현한 연구도 있다 [39]. 일반 오디오를 대상으로 고비트레이트(64 kbps 이상)에서 동작하는 엔드-투-엔드 오디오 코덱도 제안된 바 있다 [40]. 이 모델은 여러 오토인코딩 모듈로 이루어진 잔차 코딩 파이프라인을 채택하며, 학습 중 손실 함수는 심리음향 모델이 주도한다. [39]는 화자·음소·피치 임베딩을 결합해 음성에 특화되었지만, SoundStream은 입력 신호의 종류에 대한 가정을 하지 않으므로 다양한 오디오 콘텐츠에 적용 가능하다.
[8]이 고정된 특징으로부터 디코더를 학습한 것과 달리, SoundStream은 엔드-투-엔드 방식으로 학습된다. 우리의 실험(IV장)은 인코더를 학습하면 오디오 품질이 크게 향상됨을 보여준다. 또한 SoundStream은 비트레이트 확장성(하나의 모델로 여러 비트레이트에서 동작하는 능력)을 갖추는데, 이는 잔차 벡터 양자화기와 본 논문에서 제안한 양자화기 드롭아웃 학습 덕분이다 (III-C 절 참조). 반면 [38], [40]은 특정 비트레이트만 지원하도록 학습되어, 각 목표 비트레이트마다 다른 모델이 필요하다.
여러 비트레이트를 지원하는것도 모델의 능력이라 볼 수 있는듯
하나의 SoundStream 모델은 음성, 음악, 일반 오디오를 24 kHz 샘플링레이트, 3~18 kbps 저·중 비트레이트에서 스마트폰 CPU로 실시간 처리하며, Opus와 EVS를 능가하는 첫 번째 신경 오디오 코덱임을 입증했다.
압축과 향상의 결합(Joint compression and enhancement) – 최근 연구에서는 압축과 향상을 동시에 수행하는 방법이 탐구되었다. [41]은 양자화된 병목 지점을 가진 음성 향상 시스템을 학습했다. 반면 SoundStream은 시간 종속적인 조건화 층을 통합해 실시간으로 제어 가능한 디노이징을 가능하게 한다. 우리는 SoundStream을 범용 오디오 코덱으로 설계했기 때문에, 디노이징 여부를 제어할 수 있으면 원래라면 제거되었을 음향 장면(acoustic scenes) 과 자연음까지도 부호화할 수 있다.
III. MODEL
우리는 샘플링 레이트 에서 샘플링된 단일 채널 녹음 를 고려한다.
SoundStream 모델은 그림 2에 나타난 것처럼 세 가지 블록으로 구성된다:
-
인코더: 를 임베딩 시퀀스로 매핑한다 (III-A 절 참고).
-
잔차 벡터 양자화기(Residual Vector Quantizer): 각 임베딩을 유한한 코드북 집합의 벡터 합으로 대체하여, 목표 비트 수로 표현을 압축한다 (III-C 절 참고).
-
디코더: 양자화된 임베딩으로부터 손실이 있는 재구성 신호 를 생성한다 (III-B 절 참고).
모델은 재구성 손실과 적대적 손실(adversarial loss)의 혼합을 사용해 판별기(discriminator)(III-D 절 참고)와 함께 엔드-투-엔드로 학습된다. 선택적으로, 조건 신호를 추가할 수 있는데, 이는 디노이징이 인코더 쪽 혹은 디코더 쪽에서 적용될지를 결정한다 (III-F 절 참고).
A. 인코더 아키텍처 (Encoder architecture)
인코더 아키텍처는 그림 3에 나타나 있으며, [1]에서 설명된 스트리밍 SEANet 인코더 구조와 동일하지만 스킵 연결(skip connection) 은 없다. 이 인코더는 채널을 가진 1차원 합성곱 층으로 시작하고, 이어서 개의 합성곱 블록으로 구성된다. 각 블록은 세 개의 잔차 유닛(residual unit)으로 이루어져 있으며, 이 유닛들은 각각 팽창율(dilation rate) 이 1, 3, 9인 팽창 합성곱(dilated convolution)을 포함한다. 그 뒤에는 스트라이드 합성곱(strided convolution) 형태의 다운샘플링 층이 뒤따른다. 채널 수는 다운샘플링할 때마다 두 배로 증가하며, 시작은 에서 출발한다. 마지막으로, 커널 크기 3과 스트라이드 1을 가진 1차원 합성곱 층을 사용하여 임베딩의 차원을 로 맞춘다.
실시간 추론을 보장하기 위해, 모든 합성곱은 인과적(causal) 으로 설계된다. 이는 학습과 오프라인 추론 시에는 과거 입력에 대해서만 패딩을 적용하고, 미래에는 패딩을 하지 않는다는 의미이며, 스트리밍 추론 시에는 패딩을 전혀 사용하지 않는다. 우리는 ELU 활성화 함수 [42]를 사용하며, 정규화(normalization)는 적용하지 않는다.
합성곱 블록의 수 와 그에 해당하는 스트라이드 시퀀스는 입력 파형과 임베딩 간의 시간 리샘플링 비율을 결정한다. 예를 들어, 이고 스트라이드가 (2, 4, 5, 8)일 때, 입력 샘플 320개마다 하나의 임베딩이 계산된다. 즉, 인코더 출력은
가 되며, 여기서 이다.
- 여기서 입력은 Waveform@24kHz로 써있는데, 이것이 24,000개의 샘플을 사용한다는 의미이다.
- 즉 1초 음성당 24000개의 실수값을 가진 벡터가 입력이라 보면되고
- 여러 블록들을 통과해서 Embeddings @ 75Hz가 나오는데, 75개의 임베딩벡터를 가지는것이고 임베딩벡터당 D차원을 가지는것
- 즉 최종 출력은 75xD가 되는 것이다.
- 위 식에서 T=24khz=24,000
- M= 다운샘플링 비율 = 2*4*5*8=320
- S=T/M=75가 된다는 것
- 여기서 또 중요한것은 casual 하게 과거정보만 이용해서 convolution들이 이뤄짐
B. 디코더 아키텍처
디코더 아키텍처는 그림 3에 나타난 것처럼 인코더와 유사한 설계를 따른다. 1차원 컨볼루션 레이어로 시작한 후, 여러 개의 컨볼루션 블록을 거친다. 디코더 블록은 인코더 블록을 반대로 배치한 구조로, 업샘플링을 위한 전치 컨볼루션(transposed convolution)과 세 개의 동일한 잔차(residual) 유닛으로 구성된다.
인코더와 동일한 스트라이드(stride)를 사용하되, 반대 순서로 적용하여 입력 파형과 동일한 해상도를 가진 파형을 복원한다. 업샘플링할 때마다 채널 수는 절반으로 줄어들며, 마지막 디코더 블록의 출력은 개 채널이 된다.
마지막 단계에서는 필터 하나, 커널 크기 7, 스트라이드 1을 가진 1차원 컨볼루션 레이어가 임베딩을 파형 도메인으로 사상하여 복원된 파형 를 생성한다.
그림 3에서, 인코더와 디코더의 채널 수는 동일한 매개변수로 제어되며, 즉 이다. 또한 인 경우도 실험하였는데, 이는 계산량이 더 가벼운 인코더와 무거운 디코더, 혹은 그 반대 조합을 가능하게 한다(자세한 내용은 V-D 절 참고).
C. 잔차 벡터 양자화기 (Residual Vector Quantizer)
양자화기의 목표는 인코더 출력인 을 목표 비트율 (bps)로 압축하는 것이다.
- SoundStream을 엔드투엔드로 학습하기 위해서는, 양자화기가 인코더·디코더와 함께 역전파로 공동 학습되어야 한다.
- VQ-VAE 맥락에서 제안된 벡터 양자화기(VQ)는 이러한 요구를 충족한다.
이 양자화기는 의 각 차원 프레임을 부호화하기 위한 크기 의 코드북을 학습한다. 인코딩된 오디오 는 모양이 인 원-핫 벡터들의 시퀀스로 사상되고, 이는 총 비트로 표현될 수 있다.
벡터 양자화의 한계
구체적 예로, 목표 비트율이 bps인 코덱을 생각해 보자. 스트라이딩 계수 을 사용할 때, 샘플링 주파수 Hz의 1초 오디오는 인코더 출력에서 개의 프레임으로 표현된다.
그러면 프레임당 비트 예산은 비트다.
단순 VQ로 이를 처리하려면 크기의 코드북이 필요하며, 이는 현실적으로 불가능하다.
80비트니까 2^80개의 코드북 벡터가 존재한다는 말인듯. 근데 꼭 굳이 그 갯수만큼 코드북이 구성되어야하나? 싶긴함
잔차 벡터 양자화기
이 문제를 해결하기 위해, 우리는 개의 VQ 층을 직렬로 연결하는 잔차(다단) 벡터 양자화기(Residual / Multi-stage VQ)를 채택한다. 먼저 비양자화 입력 벡터를 첫 번째 VQ에 통과시켜 양자화하고, 그 잔차를 계산한다. 이어서 이 잔차를 나머지 개의 VQ가 순차적으로 재양자화한다(알고리즘 1 참조). 총 비트 예산은 각 VQ에 균일하게 할당되어 이 된다. 예를 들어 이면 각 양자화기는 코드북 크기 를 사용한다. 주어진 에서 는 계산 복잡도와 부호화 효율 사이의 절충을 제어하며, 이에 대해서는 V-D 절에서 분석한다.
한번에 코드북벡터로 매핑하지말고, 순차적으로 하겠다는 말임
- 맨 처음에 q1 코드북벡터로 근사
- 그 다음은 r1=y-q1을 q2로 근사
- ...
- y는 원본 표현
- y^는 양자화된 근사된 벡터. 점점 누적하여 y에 가깝게 만들기 위함
코드북 학습과 활용 개선
각 양자화기의 코드북은 VQ-VAE-2의 방식에 따라 지수이동평균(EMA) 업데이트로 학습한다. 코드북 활용도를 높이기 위해 두 가지를 추가로 적용한다. (1) 코드북 벡터를 무작위로 초기화하는 대신, 첫 학습 배치에서 k-means를 실행해 얻은 중심(centroid)으로 초기화한다. 이렇게 하면 코드북이 입력 분포에 더 가깝게 배치되어 활용도가 개선된다. (2) [34]에서처럼, 여러 배치 동안 어떤 코드북 벡터에도 할당이 일어나지 않으면 현재 배치에서 무작위로 샘플한 입력 프레임으로 그 벡터를 교체한다. 구체적으로는, 각 벡터에 대한 할당 횟수의 EMA(감쇠 0.99)를 추적하여 이 통계가 2보다 작아지는 벡터를 교체한다.
좋은 주제 꺼내줬네 👍 이제 VQ-VAE-2를 차근차근 설명해볼게.
1. 먼저 VAE (Variational Autoencoder) 복습
-
VAE는 오토인코더(autoencoder)에 **확률적 잠재공간(latent space)**를 도입한 모델이야.
-
인코더가 입력 를 확률 분포 로 바꾸고, 샘플링한 를 디코더가 재구성해 를 만든다.
-
문제는 이 가 연속 공간에 있어서 “압축이나 심볼 표현”에는 잘 안 맞는다는 점이 있었어.
2. VQ-VAE (Vector Quantized VAE)
-
연속 잠재공간 대신, **유한한 코드북(codebook)**에서 벡터를 고르는 방식을 씀.
-
과정:
-
인코더가 연속 벡터 생성
-
코드북 안에서 가장 가까운 코드워드 를 선택 →
-
이 코드워드 인덱스를 전송/저장 (압축 효과)
-
디코더가 코드워드를 입력받아 재구성
-
-
학습할 때는 straight-through estimator 같은 트릭을 써서 역전파가 가능하게 한다.
-
결과: 코드북이 학습되면서, 연속 벡터 공간을 “이산 심볼 집합”으로 잘게 나눈다.
3. VQ-VAE-2의 개선점
VQ-VAE는 좋았지만, 하나의 단일 코드북만 쓰면 세밀한 구조와 큰 스케일 구조를 동시에 학습하기 어려웠어. 그래서 VQ-VAE-2는 계층적(hierarchical) 구조를 도입해.
-
두 단계(latent hierarchy):
-
Top-level latent: 입력의 전역(global) 구조를 포착 (예: 이미지의 큰 윤곽, 음성의 전체적인 흐름)
-
Bottom-level latent: 지역(local) 세부 정보를 포착 (예: 이미지의 질감, 음성의 세세한 소리)
-
-
디코딩 과정:
-
Top-level latent를 먼저 디코더로 보냄 → 대략적인 스케치 생성
-
Bottom-level latent가 여기에 추가 정보를 보강해서 디테일을 채움
-
즉, coarse-to-fine(거칠게 → 정교하게) 방식으로 표현한다.
4. 학습 방식
-
코드북은 여전히 지수이동평균(EMA) 업데이트로 학습된다.
-
latent 두 단계 모두 각각 코드북을 갖고, end-to-end로 학습된다.
-
loss는 재구성 손실(입력 와 출력 의 차이) + commitment loss(코드북 사용 유도)를 포함한다.
5. 직관적 비유
-
VQ-VAE는 하나의 큰 팔레트에서 색 하나를 골라 그림 그리는 방식.
-
VQ-VAE-2는 **큰 팔레트(top)**로 대략 윤곽을 잡고, **작은 팔레트(bottom)**로 세부 묘사를 덧칠하는 방식.
-
그래서 훨씬 정교하고 복잡한 데이터(고해상도 이미지, 음악, 음성)를 잘 모델링할 수 있어.
6. 응용 사례
-
이미지 생성: 고해상도 이미지를 두 단계 VQ로 분해해 효율적으로 학습.
-
음악/음성 모델링: top-level은 리듬·구조, bottom-level은 실제 파형 질감을 표현.
-
이후 GPT 같은 모델이 top-level 코드 시퀀스에 학습되면 “언어처럼” 이미지를 생성하거나 음악을 샘플링할 수 있게 돼.
✅ 요약:
-
VQ-VAE: 연속 벡터를 코드북 심볼로 양자화하는 VAE.
-
VQ-VAE-2: top/bottom 계층을 둬서 전역 구조 + 세부 디테일을 함께 포착.
-
효과: 더 큰 규모, 더 복잡한 데이터(고해상도, 긴 시퀀스)를 잘 모델링할 수 있음.
좋은 요청이야 👍
VQ-VAE와 VQ-VAE-2를 수식 기반으로 차근차근 비교해서 설명해볼게.
1. VQ-VAE (Vector Quantized Variational Autoencoder)
(1) 인코딩
입력 (예: 오디오, 이미지)를 인코더 로 보내면 연속 잠재벡터가 나온다:
(2) 벡터 양자화
코드북 , .
가장 가까운 코드워드를 선택:
즉, 는 연속값 을 코드북의 이산 벡터로 근사한 것.
(3) 디코딩
디코더 가 양자화된 잠재벡터를 받아 복원:
(4) 손실 함수
VQ-VAE 학습은 다음 세 항을 합한 손실로 진행돼:
여기서 sg
(stop-gradient)는 역전파를 막기 위한 기호.
즉,
-
첫 항: 원본과 복원 차이
-
둘째 항: 코드북 벡터가 encoder 출력 쪽으로 당겨지도록 함
-
셋째 항: encoder 출력이 코드북에 “붙도록(commit)” 강제
sg 없이 하면 encoder와 codebook이 서로를 잘못 끌어다녀서 불안정 → collapse 위험.
그래서 codebook update loss와 commitment loss를 따로 두고, stop-gradient로 업데이트 방향을 분리한다.
이게 안정적이고 효율적인 코드북 학습의 핵심.
2. VQ-VAE-2 (Hierarchical VQ-VAE)
VQ-VAE-2는 계층적(latent hierarchy) 구조가 핵심이야.
잠재 공간을 coarse-to-fine으로 두 단계 이상 쓴다.
(1) Top-level latent
(2) Bottom-level latent
여기서 bottom-level 인코더는 top-level 코드워드도 입력으로 받아, 전역 구조를 반영한 세부 임베딩을 만든다:
(3) 디코딩
디코더는 두 레벨 정보를 모두 받아 최종 복원:
(4) 손실 함수
VQ-VAE와 마찬가지로 재구성 손실 + 두 레벨 각각의 벡터 양자화 손실:
3. 직관적으로 비교
-
VQ-VAE:
-
한 번의 양자화 → 하나의 코드북에서만 선택
-
전역·지역 정보를 동시에 담아야 해서 한계 있음
-
-
VQ-VAE-2:
-
Top 코드북: 전체적 구조/윤곽
-
Bottom 코드북: 세밀한 질감·디테일
-
두 레벨이 결합돼 더 정교한 재구성이 가능
-
✅ 요약:
-
VQ-VAE: , 코드북 하나.
-
VQ-VAE-2: , 계층적 코드북 두 개.
양자화기 드롭아웃으로 비트율 확장성 확보
잔차 VQ는 비트율 제어에 유리하다. 코드북 크기 이 고정되면 VQ 층 수 가 비트율을 결정한다. 인코더/디코더와 함께 VQ도 공동 학습되므로, 원칙적으로는 목표 비트율마다 다른 SoundStream 모델을 학습해야 한다. 대신, 우리는 단일 비트율 확장형 모델이 여러 목표 비트율에서 동작하도록 학습한다.
이를 위해 알고리즘 1을 다음과 같이 수정한다. 각 입력 예제마다 를 샘플링하고, 범위의 양자화기만 사용한다. 이는 양자화 층에 적용하는 구조적 드롭아웃으로 볼 수 있다. 결과적으로 모델은 에 해당하는 모든 목표 비트율에서 인코딩/디코딩하도록 학습된다.
- 사용할 양자화 개수 nq을 다양하게 설정하여 학습하여서 모든 비트율에 대응하려고 하는거 같음
- quantized dropout의 개념
- 즉 원래는 1~Nq까지 모두 loop을 도는건데, 예시를 들면 80비트 코드북에 대해 Nq=8을 쓰면, 10개의 loop을 돌면서 residual을 학습하는건데
- Nq의 일부분을 dropout 하듯이 pass한다는 것
- nq stage에 상관없이 2^10=1024개 코드북 개수로 고정된건 맞음
- 근데 nq을 3개을 쓰면 코드북 인덱스가 3개가 생기고, 이는 1024*1024*1024 개의 종류가 발생할수 있기 때문에 2^30=30비트를 표현하는 능력임
- 실제 내부적으로는 (k1, k2, k3)식으로 각각 stage에서 어떤 코드북을 썼는지를 표기하며
- 복원할때는 이들을 다 더해서 하나의 벡터로부터 재구성하는 구조
추론 시에는 원하는 비트율에 맞춰 를 선택한다. 기존 접근(예: wav2vec 2.0의 제품 양자화, 여러 VQ 층 출력의 단순 연결)은 비트율을 바꾸려면 임베딩 차원이 달라져 인코더/디코더 아키텍처를 바꾸거나 코드북을 재학습해야 한다. 반면 우리 잔차 VQ는 각 층의 출력을 가산적으로 합성하므로 임베딩의 차원(모양)이 변하지 않는다. 따라서 비트율이 달라도 인코더·디코더 아키텍처를 바꿀 필요가 없다. V-C 절에서 이 방법이 비트율별 전용 모델과 대등한 성능을 보임을 보여준다.
D. 판별기 아키텍처
- 판별기가 없이 인코더-디코더 구조만으로 학습하면 MSE을 줄여서 파형복원은 가능하나 귀로 들었을때 자연스럽지 않을 수 있다고함
- GAN처럼 진짜 오디오 vs 가짜 오디오를 구분짓는 능력을 판별기가 학습함으로써 디코더가 이를 속이기 위해 진짜 오디오 스타일로 생성하도록 하는듯
- 여기선 판별기를 2개나 학습하여 사용하는듯
III-E절에서 기술한 적대적 손실을 계산하기 위해, 우리는 두 가지 서로 다른 판별기를 정의한다:
- (i) 단일 파형을 입력으로 받는 파형 기반 판별기(wave-based discriminator),
- (ii) 입력 파형의 복소수 STFT(실수부와 허수부로 표현)를 입력으로 받는 STFT 기반 판별기.
- 두 판별기 모두 완전 합성곱 구조이므로, 출력되는 로짓(logit)의 개수는 입력 오디오 길이에 비례한다.
파형 기반 판별기의 경우, 우리는 [15]에서 제안되고 [45]에서 채택된 다중 해상도 합성곱 판별기를 동일하게 사용한다. 구조적으로 동일한 모델 세 개를 서로 다른 해상도(원본, 2배 다운샘플, 4배 다운샘플)에서 입력 오디오에 적용한다. 각 단일-스케일 판별기는 초기의 단순 합성곱을 거친 뒤 네 개의 그룹 합성곱으로 이어지며, 각 그룹 합성곱은 그룹 크기 4, 다운샘플 계수 4, 채널 배수 4(최대 1024개 출력 채널)로 구성된다. 이후 두 개의 단순 합성곱 레이어가 더 이어져 최종 출력, 즉 로짓을 만든다.
STFT 기반 판별기는 그림 4에 도시되어 있으며, 단일 스케일에서 동작한다.
먼저 창 길이 샘플, 홉 길이 샘플로 STFT를 계산한다. 이어서 커널 크기 , 채널 32의 2D 합성곱을 적용한 뒤, 일련의 잔차 블록을 통과시킨다. 각 잔차 블록은 합성곱으로 시작하고, 그 다음에 또는 합성곱이 뒤따르며, 보폭(stride)은 또는 이다. 여기서 는 시간 축과 주파수 축 방향의 다운샘플 계수를 나타낸다. 보폭은 와 를 번갈아 사용하며, 총 6개의 잔차 블록으로 구성된다. 네트워크의 깊이가 깊어질수록 채널 수는 점진적으로 증가한다. 마지막 잔차 블록의 출력 활성화 텐서는 시간 도메인 샘플 수 와 주파수 빈 수 에 대해 형태를 갖는다. 마지막 레이어는 (다운샘플된) 주파수 빈에 걸친 로짓을 완전연결층(구현상 합성곱)으로 집계하여, (다운샘플된) 시간 도메인에서 1차원 신호를 얻는다.
E. 학습 목적 (Training objective)
를 SoundStream의 생성기(generator)라 두자. 이는 입력 파형 를 인코더, 양자화기, 디코더를 통해 처리하며, 복원된 파형은 이다. 우리는 신호 재구성 정확도와 지각적 품질을 동시에 달성하기 위해, [46]에서 논의된 인지–왜곡 절충(perception–distortion trade-off)의 원칙을 따라 다양한 손실의 혼합으로 SoundStream을 학습한다.
지각적 품질을 높이기 위해 적대적 손실을 사용하며, 이는 여러 판별기에 걸쳐 시간축 방향으로 평균한 로짓(logit)에 대한 힌지(hinge) 손실로 정의된다. 보다 형식적으로, 는 개별 판별기를 가리키며, 은 STFT 기반 판별기, 는 파형 기반 판별기의 서로 다른 해상도(본 연구에서는 )를 뜻한다. 는 -번째 판별기의 시간 차원 출력 로짓 개수이다. 판별기는 원본 오디오와 복원 오디오를 구분하도록 다음을 최소화하며,
생성기의 적대적 손실은
이다.
복원 신호 가 원본 에 충실하도록 하기 위해, 두 가지 추가 손실을 사용한다. (i) 판별기(들)가 정의하는 특성(feature) 공간에서 계산되는 특징 손실 [15]; (ii) 다중 스케일 스펙트럼 재구성 손실 [47]. 보다 구체적으로, 특징 손실은 생성 오디오와 해당 타깃 오디오에 대해 판별기의 내부 계층 출력 간 평균 절댓값 차이로 계산된다:
여기서 은 내부 계층 수이며, 는 판별기 의 -번째 계층에서 시간 인덱스 의 출력, 은 그 계층의 시간 길이를 뜻한다.
다중 스케일 스펙트럼 재구성 손실은 [48]의 규격을 따른다:
여기서 는 창 길이가 , 홉 길이가 인 64-bin 멜 스펙트로그램의 -번째 프레임이며, 로 설정한다.
전체 생성기 손실은 다음 가중 합으로 주어진다:
모든 실험에서 , , 로 설정하였다.
- 즉 discriminator가 기존 오디오와 복원한 오디오를 구분하도록 학습이 이뤄지는것이 LD
- Generator쪽에서는
- 1) 복원한 오디오가 discriminator입장에서 진짜라고 판단하도록 하는 loss
- 2) 기존 오디오와 복원 오디오의 feature가 같도록 하는 loss
- 3) reconstruction loss 이 3가지 loss로인 LG로 학습
- discriminator과 generator는 벌갈아 가면서 학습되는 식인듯
F. 압축과 향상의 결합 (Joint compression and enhancement)
전통적인 오디오 처리 파이프라인에서는, 압축과 향상(enhancement)은 보통 서로 다른 모듈에서 수행된다. 예를 들어, 송신기 측에서 오디오가 압축되기 전에 향상 알고리즘을 적용하거나, 혹은 수신기 측에서 오디오가 디코딩된 이후에 적용할 수 있다. 이러한 설정에서는 각 처리 단계가 종단 간 지연(end-to-end latency)에 기여하는데, 예컨대 각 알고리즘이 요구하는 특정 프레임 길이에 맞추기 위해 입력 오디오를 버퍼링해야 하기 때문이다.
반대로, 우리는 SoundStream을 설계할 때 압축과 향상을 하나의 모델로 동시에 수행할 수 있도록 고안하여 전체 지연을 늘리지 않게 하였다.
향상의 성격은 학습 데이터 선택에 의해 결정된다. 구체적인 예로, 본 논문에서는 압축과 **배경 잡음 제거(noise suppression)**를 결합할 수 있음을 보인다. 보다 구체적으로, 우리는 추론 시에 잡음 제거를 켜거나 끌 수 있도록 모델을 훈련한다. 이를 위해, 학습 데이터는 꼴의 튜플로 구성하였다.
-
이면, 이다.
-
이면, 은 해당 입력에서 **깨끗한 음성 성분(clean speech)**만 포함한다.
따라서 네트워크는 조건 신호에 따라 잡음 제거가 비활성화된 경우에는 원래의 잡음 섞인 음성을 재구성하고, 잡음 제거가 활성화된 경우에는 깨끗한 음성을 재구성하도록 학습된다.
만약 입력 자체가 깨끗한 오디오(음성이나 음악)라면, 이때는 이고, 는 true나 false 둘 다 가능하다. 이렇게 함으로써, 잡음 제거가 켜져 있어도 깨끗한 오디오에는 악영향을 주지 않도록 학습할 수 있다.
- 즉 입력이 잡음이 있을 수가 있고 없을 수가 있는 것이고
- 잡음 입력에 대해서는, 디노이즈 옵션에 따라 타겟이 잡음 음성/깨끗한 음성이 되고
- 깨끗한 입력에 대해서는, 디노이즈 옵션에 상관없이 깨끗한 음성이 타겟되는것
조건 신호는 Feature-wise Linear Modulation (FiLM) 레이어 [49]를 통해 처리된다. FiLM은 네트워크의 피처를 입력으로 받아 다음과 같이 변환한다:
여기서 는 -번째 채널의 -번째 활성화이고, 는 조건 신호(시간에 따라 변할 수도 있는 2차원 원-핫 벡터)를 입력으로 하는 선형층에 의해 계산된다. 이 조건 신호는 잡음 제거 모드를 결정한다. 이 방식은 시간에 따라 잡음 제거 수준을 조정할 수 있게 한다.
원칙적으로 FiLM 레이어는 인코더나 디코더 전체 어디든 삽입할 수 있다. 그러나 우리의 초기 실험에서는, 병목 지점(bottleneck) 즉 인코더 또는 디코더 측에서 조건을 적용하는 것이 효과적이었으며, 더 깊은 층에 FiLM 레이어를 추가하는 것은 추가적인 개선을 가져오지 않았다. V-E절에서는 인코더 측 또는 디코더 측에서 잡음 제거를 활성화했을 때의 영향을, 오디오 품질과 비트율 측면에서 모두 정량적으로 평가한다.
- γ,β는 작은 네트워크로부터 출력되는 값인데, denoise on, 즉 깨끗한 신호가 출력인 경우 작동하는 것
- denoise off면 그냥 입력신호가 타겟이 되는 것
- 이런 과정을 통해 작은 네트워크가 학습되고 테스트시, 음성을 깨끗히 하게 denoise on하면 γ, β을 출력하고 이것으로 feature shift가되서 음성이 깨끗해지는 개념
IV. 평가 설정 (Evaluation Setup)
A. 데이터셋 (Datasets)
우리는 SoundStream을 세 가지 종류의 오디오 콘텐츠(깨끗한 음성, 잡음 섞인 음성, 음악)에 대해 학습하며, 모두 24 kHz 샘플링 속도로 처리한다.
-
깨끗한 음성: LibriTTS 데이터셋 [50]을 사용한다.
-
잡음 섞인 음성: LibriTTS 음성에 Freesound [51]에서 가져온 잡음을 합성하여 생성한다. 구체적으로는 3초 길이의 무작위 샘플을 선택해 피크 정규화를 하고, 잡음 성분의 믹싱 게인을 [-30 dB, 0 dB] 범위에서 균일분포로 샘플링해 조절한다.
-
음악: MagnaTagATune 데이터셋 [52]을 사용한다.
모델 평가는 위 세 데이터셋의 분리된 테스트 셋에서 수행한다. 추가적으로, 실제 환경 데이터셋도 수집했는데, 여기에는 근접-원거리(반향 포함) 음성과 배경 잡음이 있는 샘플들이 포함된다. 달리 언급하지 않는 한, 객관적·주관적 평가는 위 네 가지 데이터셋(깨끗한 음성, 잡음 음성, 음악, 잡음/반향 음성)에서 각각 50개 샘플(총 200개), 길이 2~4초 클립을 사용하여 수행한다.
B. 평가 지표 (Evaluation metrics)
SoundStream의 품질은 사람 평가자에 의한 주관적 평가로 측정한다. MUSHRA [53]에서 영감을 받은 크라우드소싱 방식을 사용하며, **숨겨진 참조(hidden reference)**는 포함하되 저역통과(lowpass) 필터된 앵커는 포함하지 않는다. 평가 데이터셋의 각 200개 샘플(깨끗한 음성, 잡음/반향 음성, 음악 포함)은 각각 20회씩 평가된다. 평가자는 반드시 영어를 모국어로 하는 사람이어야 하고 헤드폰을 사용해야 한다. 데이터 품질을 보장하기 위해 후처리 필터링을 적용했다. 즉, 참조 샘플을 20% 이상 90점 이하로 평가했거나, 참조가 아닌 샘플을 50% 이상 90점 이상으로 평가한 평가자의 데이터는 제외했다.
모델 개발과 하이퍼파라미터 선택에는 객관적 지표를 사용한다. 기존 연구에서는 원본 신호와 처리된 신호 간 지각적 유사성을 측정하는 다양한 지표가 제안되었다. ITU-T 표준인 PESQ [54]와 그 후속인 POLQA [55]가 일반적으로 널리 사용되지만, 라이선스 제약으로 사용이 불편하다. 따라서 우리는 공개된 ViSQOL [56], [57] 지표를 채택했다. 이는 이전 연구에서 POLQA와 비슷한 성능을 보였고, 초기 실험에서도 주관적 평가와 강하게 상관됨을 확인했다. 따라서 ViSQOL을 모델 선택과 ablation 연구에 사용한다.
C. 기준선 (Baselines)
-
Opus [9]: 4~24 kHz 대역폭, 6 kbps~510 kbps의 비트율을 지원하는 다목적 음성/오디오 코덱이다. 2012년 IETF에서 표준화된 이후 인터넷 음성통화 등에 널리 사용되고 있다. 예: Zoom, WebRTC 기반 앱(Microsoft Teams, Google Meet 등). YouTube 스트리밍에서도 주요 코덱 중 하나로 사용된다.
-
EVS [10]: 3GPP가 표준화한 최신 음성 코덱으로, Voice over LTE(VoLTE)를 위해 설계되었다. Opus와 유사하게 4~20 kHz 대역폭, 5.9~128 kbps 비트율을 지원하며, AMR-WB [60]를 대체하고 완전한 하위 호환성을 제공한다.
본 논문에서는 Opus와 EVS를 SoundStream과의 비교 기준으로 사용한다. 특히 저비트율 영역에서는 최근 발표된 **Lyra [8]**도 비교 대상으로 포함했다. Lyra는 3 kbps에서 동작하는 오토리그레시브 생성 코덱이다.
SoundStream과 기준선 코덱들이 다양한 비트율에서 처리한 오디오 샘플은 논문과 함께 공개한 웹페이지1에서 확인할 수 있다.
👉 정리하자면, **평가 설정(IV)**은
-
데이터셋: 깨끗한/잡음/음악/실환경 음성,
-
평가지표: MUSHRA 기반 주관평가 + ViSQOL 객관평가,
-
비교대상: Opus, EVS, Lyra,
로 구성되어 있어.
V. 결과 (Results)
A. 다른 코덱과의 비교
그림 5는 SoundStream과 Opus, EVS를 다양한 비트율에서 비교한 핵심 결과다.
-
3 kbps (저비트율):
-
SoundStream이 Opus 6 kbps, EVS 5.9 kbps보다 훨씬 높은 품질을 보였다.
-
EVS는 9.6 kbps, Opus는 12 kbps 이상에서야 비슷한 품질을 낸다 → 즉 SoundStream이 3.2~4배 더 효율적.
-
SoundStream은 같은 3 kbps에서 Lyra보다도 우수하다.
-
-
6 kbps (중비트율):
-
EVS와 Opus가 같은 품질을 내려면 2.2~2.6배 더 많은 비트 필요.
-
-
12 kbps (고비트율):
-
EVS와 Opus가 같은 품질을 내려면 1.3~1.6배 더 많은 비트 필요.
-
그림 6은 콘텐츠 종류별(깨끗한 음성, 잡음 음성, 음악, 잡음/반향 음성) 주관적 평가 결과다.
-
SoundStream은 깨끗한 음성과 잡음 음성 모두에서 안정적인 품질을 유지한다.
-
음악에서도 3 kbps만으로 Opus 12 kbps, EVS 5.9 kbps보다 훨씬 좋은 결과를 냈다.
-
의미: SoundStream은 매우 낮은 비트율에서도 다양한 콘텐츠(음성·음악)를 처리할 수 있는 최초의 코덱이다.
B. 객관적 품질 지표
그림 7a: ViSQOL로 측정한 SoundStream의 품질–비트율 곡선.
-
3~18 kbps 범위에서 품질이 완만하게 감소하며, 가장 낮은 3 kbps에서도 ViSQOL 3.7 이상 유지.
-
엔트로피 기반 추정으로 7~20% 추가적인 비트율 절약 가능성을 확인.
그림 7b: 콘텐츠별 결과.
-
깨끗한 음성에서 최고 품질.
-
음악이 가장 도전적인 케이스(다양성이 크기 때문).
C. 비트율 확장성 (Scalability)
그림 7c: 세 가지 모델 비교.
-
특정 비트율에 맞춰 학습한 전용 모델 (bitrate specific)
-
18 kbps에서만 학습했지만 테스트 시 낮은 를 써서 비트율 줄인 모델 (not scalable)
-
quantizer dropout을 써서 여러 비트율을 동시에 학습한 모델 (bitrate scalable)
-
놀랍게도 bitrate scalable 모델이 전용 모델과 거의 동등한 성능을 보임.
-
심지어 9 kbps, 12 kbps에서는 전용 모델보다 약간 더 나은 결과도 있음 → dropout이 정규화 효과를 주었을 가능성.
-
그림 5에도 scalable 모델을 포함해 비교했는데, 전용 모델과 품질이 거의 동일.
D. Ablation 연구
몇 가지 설계 선택의 영향을 평가.
-
인코더 학습의 장점: 고정된 mel-spectrogram 인코더(Lyra와 유사)를 쓸 때보다 성능이 확 떨어짐. → 학습형 인코더의 중요성 입증.
-
인코더/디코더 용량 분배 (표 I):
-
인코더를 줄이고 디코더를 늘리면 속도 ↑, 품질 거의 유지.
-
반대로 디코더를 줄이면 품질 저하.
-
결론: encoder는 가볍게, decoder는 무겁게 해도 괜찮음.
-
-
잔차 VQ 깊이와 코드북 크기 (표 II):
-
동일한 비트율을 달성할 수 있는 다양한 조합을 실험.
-
fewer stages + larger codebook → 효율 ↑ 하지만 메모리/복잡도 ↑
-
many stages + small codebook → 학습 가능하고 품질 큰 손실 없음.
-
-
지연(latency) (표 III):
-
스트라이드 조합을 바꿔 지연을 달리했을 때, 품질은 거의 동일.
-
지연을 늘리면 RTF(실시간 처리 여유도)는 커짐.
-
E. 압축+향상 (Joint compression and enhancement)
그림 8: 잡음 제거 모드의 평가.
-
encoder 쪽에서 denoise conditioning을 넣든, decoder 쪽에 넣든 둘 다 효과적으로 잡음 제거 가능.
-
항상 denoise가 켜진 모델(고정형 denoiser)과 비교해도 성능 손실 없음.
-
추가로, encoder 쪽에서 denoise를 적용하면 비트율 절감 효과도 있음 (잡음을 미리 없애고 양자화하므로).
표 IV: SoundStream을 압축+잡음제거 모델로 쓴 경우 vs 분리된 압축모델+잡음제거모델을 조합한 경우 비교.
-
품질은 거의 비슷하지만,
-
SoundStream 단일 모델이 연산량 절반, 추가 지연 없음 → 훨씬 효율적.
요약
-
SoundStream은 기존 코덱(Opus, EVS, Lyra)을 3~18 kbps 범위에서 일관되게 능가한다.
-
비트율 확장성: quantizer dropout 덕분에 하나의 모델로 다양한 비트율 지원.
-
Ablation: 학습형 인코더가 필수, 디코더는 크게 가져가는 게 유리, RVQ는 작은 코드북 여러 개로도 충분.
-
Joint compression+enhancement: 압축과 잡음 제거를 동시에 수행 가능, 별도 모듈을 붙이는 것보다 효율적.
VI. 결론 (Conclusions)
우리는 SoundStream을 제안한다. 이는 다양한 비트율과 콘텐츠 유형 전반에서 최첨단 오디오 코덱들을 능가하는 새로운 신경망 기반 오디오 코덱이다. SoundStream은 인코더, 잔차 벡터 양자화기, 디코더로 구성되며, 우수한 오디오 품질을 달성하기 위해 재구성 손실과 적대적 손실의 혼합으로 엔드투엔드 학습된다. 이 모델은 스트리밍 가능한 추론을 지원하고, 스마트폰의 단일 CPU에서도 실시간으로 동작할 수 있다. 양자화기 드롭아웃으로 학습하면, 하나의 SoundStream 모델만으로도 비트율별 전용 모델과 비교했을 때 성능 손실을 최소화하면서 비트율 확장성을 달성할 수 있다. 또한 우리는 추가 지연을 도입하지 않고 하나의 모델에서 압축과 향상을 결합할 수 있음을 보였다.
Reference
댓글
댓글 쓰기