본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Speech

[2026-1] 김지원 - WAVENET: A GENERATIVE MODEL FOR RAW AUDIO

by jw103203 2026. 1. 28.

논문 제목: WAVENET: A GENERATIVE MODEL FOR RAW AUDIO

논문 링크: https://arxiv.org/pdf/1609.03499

논문 인용수: 7000회+(26.01.28 기준)

논문 정보: WaveNet은 2016년 Google DeepMind에서 발표한 획기적인 음성 생성 모델임. 기존의 음성 합성이 "음성의 특징을 추출하고 재조합"하는 방식이었다면, WaveNet은 오디오 파형 자체를 샘플 단위로 직접 생성함.


1. 배경 지식: 오디오 신호와 음성 합성의 이해

1.1 디지털 오디오의 기초

소리는 공기의 진동으로, 본래 연속적인 아날로그 신호임. 이를 컴퓨터에서 처리하려면 두 가지 과정이 필요함.

샘플링 (Sampling)

연속 신호를 일정 간격으로 측정하여 이산적인 값들로 변환함.

  • 샘플링 레이트 (Sampling Rate): 1초에 몇 번 측정하는가
    • CD 품질: 44,100 Hz
    • 전화 품질: 8,000 Hz
    • 일반 음성 처리: 16,000 Hz (WaveNet에서 사용)
  • 나이퀴스트 정리(Nyquist–Shannon Sampling Theorem): 원본 신호의 최대 주파수의 2배 이상으로 샘플링해야 정보 손실 없이 복원 가능. 인간의 가청 주파수가 약 20kHz이므로, CD는 44.1kHz를 사용함.

양자화 (Quantization)

각 샘플 값을 유한한 비트로 표현함.

  • 16-bit: $2^{16} = 65,536$개의 가능한 값 (-32,768 ~ 32,767)
  • 8-bit: $2^8 = 256$개의 가능한 값

결과적으로, 1초의 16kHz 음성 = 16,000개의 정수 시퀀스가 됨. WaveNet이 모델링하는 것이 바로 이 시퀀스임.

1.2 기존 TTS (Text-to-Speech) 시스템의 구조

음성 합성은 텍스트를 음성 파형으로 변환하는 sequence-to-sequence 문제임. 전통적인 TTS 파이프라인은 크게 두 단계로 구성됨.

1단계: 텍스트 분석 (Text Analysis)

  • 문장 분리, 단어 분리
  • 텍스트 정규화 ("$100$" → "one hundred dollars")
  • 품사 태깅 (POS tagging)
  • Grapheme-to-Phoneme 변환 ("hello" → /həˈloʊ/)
  • 운율 예측 (강세, 억양, 길이)

2단계: 음성 합성 (Speech Synthesis)

여기서 두 가지 주요 접근법이 있음:

(A) Concatenative 방식 (연결 합성)

미리 녹음된 음성 조각(unit)들을 데이터베이스에서 선택하여 이어붙임.

구분 내용
장점 원본 녹음을 사용하므로 자연스러운 음질, 특정 구간에서 매우 자연스러움
단점 거대한 음성 데이터베이스 필요, 연결 부분에서 부자연스러운 전이, 새로운 화자/스타일 추가 어려움, 감정 표현 등 유연성 부족

(B) Parametric 방식 (파라미터 합성)

음성을 파라미터로 분해하고, 모델이 파라미터를 예측한 후, Vocoder로 재합성함.

[텍스트] → [언어적 특징] → [음향 모델] → [Vocoder 파라미터] → [Vocoder] → [음성]

주요 Vocoder 파라미터들:

  • MFCC 또는 LSP: 성도(vocal tract)의 특성
  • Fundamental Frequency (F0): 음높이 정보
  • Aperiodicity: 음성의 비주기적 성분 (숨소리, 마찰음 등)
구분 내용
장점 작은 모델 크기, 화자/스타일 변환 용이, 유연한 제어 가능
단점 "로봇 같은" 부자연스러운 음질, Vocoder의 품질 한계, 정보 손실 (분석 → 합성 과정에서)

1.3 Parametric 방식의 근본적 문제

논문의 Appendix A에서 저자들은 기존 음성 모델의 가정들을 비판함:

1) 고정 길이 분석 윈도우

기존 모델들은 20-30ms의 고정 윈도우 내에서 정상(stationary) 신호로 가정함.
하지만 파열음(stop consonants) 같은 음소는 20ms보다 짧아서 이 가정이 맞지 않음.

2) 선형 필터 가정

음성을 선형 시불변(LTI) 필터의 출력으로 모델링함:

$x_t = \sum_{p=1}^{P} a_p x_{t-p} + \epsilon_t$

하지만 실제 음성 샘플 간의 관계는 고도로 비선형적임.

3) 가우시안 분포 가정

오차항 $\epsilon_t \sim \mathcal{N}(0, G^2)$을 가정하지만, 실제 음성 신호의 분포는 가우시안과 크게 다름.

WaveNet은 이러한 가정들을 모두 제거하고, 데이터로부터 직접 학습함.


2. WaveNet의 핵심 아이디어

2.1 Autoregressive 생성 모델

WaveNet의 기본 원리는 놀랍도록 단순함.
파형 $\mathbf{x} = {x_1, x_2, \ldots, x_T}$의 결합 확률을 조건부 확률의 곱으로 분해함:

$p(\mathbf{x}) = \prod_{t=1}^{T} p(x_t | x_1, x_2, \ldots, x_{t-1})$

이는 언어 모델이 "이전 단어들이 주어졌을 때 다음 단어의 확률"을 모델링하는 것과 동일한 원리임.

차이점은 스케일임:

도메인 단위 1초당 예측 횟수
텍스트 (언어 모델) 단어/토큰 ~10개
이미지 (PixelCNN) 픽셀 - (64×64 = 4,096개)
오디오 (WaveNet) 샘플 16,000개

이 접근법은 PixelCNN에서 영감을 받음.
PixelCNN이 이미지의 픽셀을 하나씩 생성하듯, WaveNet은 오디오 샘플을 하나씩 생성함.

2.2 왜 이 문제가 어려운가?

문제 1: 긴 의존성 (Long-range Dependencies)

자연스러운 음성을 위해서는 상당히 긴 과거 정보를 참조해야 함:

  • 음소(phoneme) 하나: ~50-100ms
  • 음절(syllable): ~200-300ms
  • 운율(prosody): 수 초

16kHz에서 300ms = 4,800 샘플임.
즉, 현재 샘플을 예측하기 위해 수천 개의 과거 샘플을 효과적으로 참조해야 함.

문제 2: 계산 효율성

RNN으로 이렇게 긴 시퀀스를 처리하면:

  • Vanishing/exploding gradient 문제
  • 순차적 계산으로 인한 느린 학습
  • 메모리 사용량 증가

문제 3: 고해상도 출력

16-bit 오디오의 각 샘플은 65,536개의 가능한 값을 가짐.
이를 그대로 분류 문제로 풀기엔 출력 공간이 너무 큼.


3. 핵심 기술 #1: Dilated Causal Convolution

WaveNet의 가장 중요한 기술적 기여는 dilated causal convolution임.

3.1 Causal Convolution이란?

"Causal"은 인과적이라는 의미로, 미래 정보를 사용하지 않는다는 뜻임.

일반적인 1D convolution은 중심 위치의 양쪽을 모두 봄:

일반 Conv (kernel=3): [x_{t-1}, x_t, x_{t+1}] → y_t

Causal convolution은 현재와 과거만 봄:

Causal Conv (kernel=3): [x_{t-2}, x_{t-1}, x_t] → y_t

이를 구현하는 방법은 간단함: 출력을 왼쪽으로 shift하거나, 입력의 왼쪽에 padding을 추가함.

Receptive Field 문제

일반 causal convolution의 receptive field는 다음과 같이 계산됨:

$\text{Receptive Field} = (\text{kernel size} - 1) \times \text{layers} + 1$

kernel size = 2, layers = 4인 경우: $(2-1) \times 4 + 1 = 5$ 샘플

16kHz에서 5샘플 = 0.3ms... 이는 턱없이 부족함.
300ms를 커버하려면 4,800개 레이어가 필요함!

3.2 Dilated Convolution의 원리

Dilated convolution (또는 "atrous convolution", "convolution with holes")은 필터 원소들 사이에 간격(dilation)을 두어 적용함.

Dilation d=1 (일반):  ■ ■       (인접한 2개 참조)
Dilation d=2:        ■ _ ■     (1칸 건너뛰고 참조)
Dilation d=4:        ■ _ _ _ ■ (3칸 건너뛰고 참조)
Dilation d=8:        ■ _ _ _ _ _ _ _ ■ (7칸 건너뛰고 참조)

수학적으로, dilation $d$인 convolution은:

$(F *d k)(p) = \sum{s+dt=p} F(s) \cdot k(t)$

이는 필터를 0으로 확장(dilate)한 것과 동일하지만, 실제 계산은 원래 필터 크기만큼만 수행하므로 효율적임.

3.3 Exponentially Increasing Dilation

WaveNet의 핵심 통찰은 dilation을 기하급수적으로 증가시키는 것임:

$\text{dilation} = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512$

이 패턴을 하나의 "블록"이라 하고, 여러 블록을 반복함:

Block 1: 1, 2, 4, 8, ..., 512
Block 2: 1, 2, 4, 8, ..., 512
Block 3: 1, 2, 4, 8, ..., 512

Receptive Field 계산

Dilation이 $1, 2, 4, \ldots, 2^{n-1}$인 $n$개 레이어의 receptive field:

$RF = 2^n = 1024 \text{ (n=10인 경우)}$

이 블록을 $B$번 반복하면:

$RF = B \times (2^n - 1) + 1$

3개 블록, 10개 레이어/블록이면: $3 \times 1023 + 1 = 3070$ 샘플 ≈ 192ms (16kHz 기준)

왜 이게 효과적인가?

  1. 지수적 receptive field 성장: $O(log_2 RF)$개의 레이어로 $RF$ 크기의 receptive field 확보
  2. 계산 효율성: 파라미터 수와 계산량은 레이어 수에 비례 (선형)
  3. 다중 해상도: 낮은 레이어는 세밀한 패턴, 높은 레이어는 거시적 패턴 학습
  4. 입력 해상도 유지: pooling 없이도 긴 의존성 포착

4. 핵심 기술 #2: Softmax Distribution과 μ-law Encoding

4.1 왜 Softmax인가?

연속적인 오디오 값을 모델링하는 방법은 여러 가지가 있음:

(A) 회귀 (Regression)

  • 평균과 분산을 예측하는 가우시안 분포
  • 간단하지만, 복잡한 분포(다봉 분포 등)를 표현하기 어려움

(B) Mixture Density Network (MDN)

  • 여러 가우시안의 혼합으로 모델링
  • 유연하지만 파라미터 수 증가, 학습 불안정

(C) Softmax (Categorical Distribution)

  • 연속 값을 이산화하고 분류 문제로 변환
  • PixelCNN에서 이미지에 효과적임이 입증됨

WaveNet은 (C) Softmax 방식을 채택함. 저자들은 "softmax가 데이터 분포에 대한 가정 없이 임의의 분포를 모델링할 수 있다"고 설명함.

4.2 μ-law Companding

16-bit 오디오를 그대로 사용하면 65,536개 클래스의 분류 문제가 됨.
이는 다음과 같은 문제가 있음:

  • 계산량이 과도함
  • 대부분의 클래스에 데이터가 희소함
  • 인접한 값들 간의 관계를 무시함

해결책: μ-law companding

통신 분야에서 오랫동안 사용되어 온 비선형 양자화 기법임:

$f(x_t) = \text{sign}(x_t) \cdot \frac{ln(1 + mu |x_t|)}{ln(1 + mu)}, \quad -1 < x_t < 1, \quad \mu = 255$

이 변환의 특징:

  1. 비선형 압축: 작은 값에서 해상도가 높고, 큰 값에서 해상도가 낮음
  2. 인간 청각 특성에 부합: Weber-Fechner 법칙 - 인간은 절대적 차이보다 상대적 차이에 민감
  3. 256개 값으로 양자화: $\mu = 255$이면 자연스럽게 256 레벨로 매핑

저자들은 "특히 음성의 경우, 양자화 후 재구성된 신호가 원본과 매우 유사하게 들렸다"고 보고함.


5. 핵심 기술 #3: Gated Activation Units

5.1 PixelCNN의 Gated Activation

WaveNet은 PixelCNN에서 가져온 gated activation을 사용함:

$\mathbf{z} = \tanh(W_{f,k} \mathbf{x}) \odot \sigma(W_{g,k} \mathbf{x})$

여기서:

  • $*:$ convolution 연산
  • $\odot$: element-wise 곱셈 (Hadamard product)
  • $\sigma(\cdot)$: sigmoid 함수
  • $k$: 레이어 인덱스
  • $f$: filter, $g$: gate

5.2 왜 Gating이 효과적인가?

이 구조는 LSTM의 forget gate와 유사한 역할을 함:

tanh branch (Filter):  "무엇을" 출력할지 결정 (-1 ~ 1 범위)
sigmoid branch (Gate): "얼마나" 출력할지 결정 (0 ~ 1 범위)

Gating의 이점:

  1. 정보 흐름 제어: 불필요한 정보를 차단하고 중요한 정보만 전달
  2. Gradient 흐름 개선: multiplicative interaction이 gradient를 더 잘 전파
  3. 복잡한 패턴 학습: 두 경로의 조합으로 더 풍부한 표현 가능

저자들은 실험에서 gated activation이 ReLU보다 오디오 신호 모델링에 훨씬 효과적임을 발견함.
이는 오디오 신호의 특성(진동, 주기성 등)과 관련이 있을 수 있음.


6. 아키텍처 상세 분석

6.1 전체 구조

논문의 Figure 4는 WaveNet의 전체 아키텍처를 보여줌.
크게 세 부분으로 나눌 수 있음:

입력 처리

Input → Causal Conv (1×1) → Residual Block 입력

Residual Block (×k layers)

입력 → Dilated Conv → [tanh ⊙ σ] → 1×1 Conv → (+) → 다음 블록
                                      ↓
                                 Skip Connection → 합산

출력 처리

모든 Skip Connection 합산 → ReLU → 1×1 Conv → ReLU → 1×1 Conv → Softmax

6.2 Residual Connection

각 레이어의 출력을 입력에 더함:

$\mathbf{x}_{l+1} = \mathbf{x}_l + \mathcal{F}(\mathbf{x}_l)$

이점:

  • 깊은 네트워크 학습 가능: gradient가 shortcut을 통해 직접 전파
  • 학습 안정성: 최소한 identity function은 쉽게 학습
  • He et al. (2015)의 ResNet에서 효과 입증

6.3 Skip Connection

각 레이어의 출력을 최종 출력으로 직접 연결함:

$\mathbf{y} = \sum_{l=1}^{L} \mathbf{s}_l$

이점:

  • 다중 스케일 정보 통합: 각 레이어가 다른 receptive field를 가지므로, 다양한 시간 스케일의 정보가 최종 예측에 기여
  • Gradient 흐름 개선: 깊은 레이어도 직접적인 gradient를 받음
  • 앙상블 효과: 여러 레이어의 예측을 결합하는 것과 유사

6.4 1×1 Convolution의 역할

1×1 convolution은 여러 곳에서 사용됨:

  1. 채널 변환: dilated conv 출력을 skip/residual 채널 수로 변환
  2. 비선형 변환: 파라미터 효율적인 fully-connected layer 역할
  3. 차원 축소/확장: 계산량 조절

7. Conditional WaveNet: 조건부 생성

WaveNet의 강력한 기능 중 하나는 조건부 생성임. 추가 입력 $\mathbf{h}$가 주어지면:

$p(\mathbf{x} | \mathbf{h}) = \prod_{t=1}^{T} p(x_t | x_1, \ldots, x_{t-1}, \mathbf{h})$

7.1 Global Conditioning

전체 시퀀스에 동일하게 적용되는 조건 (예: 화자 ID, 장르)

$\mathbf{z} = \tanh(W_{f,k} \mathbf{x} + V_{f,k}^T \mathbf{h}) \odot \sigma(W_{g,k} \mathbf{x} + V_{g,k}^T \mathbf{h})$

  • $\mathbf{h}$: 조건 벡터 (예: one-hot 화자 ID 또는 학습된 embedding)
  • $V_{f,k}, V_{g,k}$: 학습 가능한 선형 변환
  • $V^T \mathbf{h}$는 시간 축으로 broadcast됨

응용 예시:

  • 다중 화자 TTS: 화자 ID로 조건화 → 하나의 모델로 여러 화자 생성
  • 음악 생성: 장르 태그로 조건화 → 원하는 스타일의 음악 생성

7.2 Local Conditioning

시간에 따라 변하는 조건 (예: 언어적 특징, F0 contour)

TTS에서 linguistic features는 보통 5ms 단위로 추출됨 (200Hz).
이를 16kHz 오디오에 맞추려면 80배 upsampling이 필요함.

방법 1: Transposed Convolution (Learned Upsampling)

$\mathbf{y} = f(\mathbf{h}) \quad \text{(upsampled to audio resolution)}$

$\mathbf{z} = \tanh(W_{f,k} \mathbf{x} + V_{f,k} \mathbf{y}) \odot \sigma(W_{g,k} \mathbf{x} + V_{g,k} \mathbf{y})$

방법 2: Repeat and 1×1 Conv

조건 벡터를 단순 반복한 후 1×1 convolution 적용.
저자들은 이 방법이 약간 성능이 낮았다고 보고함.

7.3 Context Stacks (추가 기법)

매우 긴 의존성이 필요한 경우, context stack을 사용할 수 있음:

[긴 오디오 히스토리] → [Context Stack (작은 모델)] → Local Conditioning
                                                          ↓
[최근 오디오] → [Main WaveNet (큰 모델)] → Output

Context stack은:

  • 더 넓은 receptive field
  • 더 적은 채널 수 (계산량 절약)
  • Pooling 사용 가능 (낮은 해상도로 동작)

이는 "먼 과거는 대략적으로, 가까운 과거는 세밀하게" 보는 직관에 부합함.


8. 실험 결과 상세 분석

8.1 Multi-Speaker Speech Generation (텍스트 없이)

데이터셋: VCTK (CSTR Voice Cloning Toolkit)

  • 109명의 영어 화자
  • 44시간의 음성 데이터

설정:

  • 텍스트 조건화 없이 오디오만으로 학습
  • 화자 ID를 one-hot 벡터로 global conditioning

관찰 결과:

  1. 언어 유사 발화 생성: 실제 단어는 아니지만 영어처럼 들리는 음성 생성
    • 현실적인 억양과 리듬
    • 자연스러운 음소 전이
    • 실제 단어가 아닌 이유: receptive field (~300ms)가 2-3개 음소만 커버
  2. 화자 특성 포착: 하나의 모델이 109명 모두의 목소리 생성 가능
    • 음색, 억양, 발화 속도 등 개인 특성 유지
    • 화자 추가 시 validation 성능 향상 (internal representation 공유)
  3. 부수적 특성 학습: 음성 외 특성도 모델링
    • 녹음 환경의 음향 특성
    • 호흡과 입 움직임 소리
    • 녹음 품질 차이

8.2 Text-to-Speech 실험

데이터셋:

  • 북미 영어: 24.6시간, 전문 여성 화자
  • 만다린 중국어: 34.8시간, 전문 여성 화자

비교 시스템:

  1. LSTM-RNN Parametric: LSTM 기반 통계적 파라미터 합성
  2. HMM Concatenative: HMM 기반 단위 선택 연결 합성
  3. WaveNet (L): 언어적 특징만으로 조건화
  4. WaveNet (L+F): 언어적 특징 + log F0로 조건화

평가 방법:

  • Paired Comparison Test: 두 샘플 중 선호하는 것 선택 (또는 "선호 없음")
  • Mean Opinion Score (MOS): 5점 척도 자연스러움 평가 (1: Bad ~ 5: Excellent)

정량적 결과:

핵심 발견:

  1. 격차 감소:
    • 영어: 자연 음성과의 격차 0.69 → 0.34 (51% 감소)
    • 중국어: 자연 음성과의 격차 0.42 → 0.13 (69% 감소)
  2. F0 조건화의 중요성:
    • WaveNet (L): 때때로 잘못된 운율 (단어 강세 오류)
    • WaveNet (L+F): 운율 문제 해결
    • 이유: F0 예측 모델이 200Hz로 동작해 더 긴 의존성 학습 가능
  3. Paired Comparison 결과 (북미 영어):
    • WaveNet (L+F) vs 최고 baseline: 49.3% vs 20.1% (30.6% 선호 없음)

8.3 Music Generation

데이터셋:

  1. MagnaTagATune: ~200시간, 188개 태그 (장르, 악기, 분위기 등)
  2. YouTube Piano: ~60시간, 솔로 피아노

관찰 결과:

  1. Receptive Field의 중요성: 충분히 큰 receptive field가 "음악적" 샘플 생성에 필수
  2. 한계점:
    • 수초 단위의 일관성은 있음
    • 장기적 구조 (멜로디 진행, 곡 구조) 부재
    • 장르/악기/음량이 시시각각 변함
  3. 조건부 생성 가능:
    • 태그 벡터로 조건화
    • 특정 장르/악기 스타일 제어 가능
    • 태그 데이터가 노이즈가 많아 정교한 제어는 어려움

8.4 Speech Recognition (음성 인식)

데이터셋: TIMIT (음소 인식 벤치마크)

모델 수정:

  • Dilated convolution 후 mean-pooling layer 추가 (10ms 프레임으로 downsampling)
  • 비인과적(non-causal) convolution 추가
  • 두 가지 loss 동시 사용: 다음 샘플 예측 + 프레임 분류

결과: 18.8% PER (Phoneme Error Rate)

  • Raw audio에서 직접 학습한 모델 중 당시 최고 성능
  • 다음 샘플 예측 loss가 정규화 역할을 하여 일반화 성능 향상