| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- DeepMind
- ReactNative
- python
- 머신러닝
- 강화학습 기초
- 강화학습
- 논문리뷰
- 클론코딩
- 음성합성
- JavaScript
- Reinforcement Learning
- FirebaseV9
- Instagrame clone
- React
- selenium
- pandas
- Ai
- 딥러닝
- clone coding
- 전국국밥
- TTS
- 카트폴
- coding
- 앱개발
- App
- 사이드프로젝트
- 데이터분석
- expo
- TeachagleMachine
- Ros
- Today
- Total
qcoding
[AI논문리뷰] NaturalSpeech 3 - 음성을 5가지 속성으로 분리해 사람 수준 Zero-Shot TTS를 달성한 Factorized Diffusion 본문
[AI논문리뷰] NaturalSpeech 3 - 음성을 5가지 속성으로 분리해 사람 수준 Zero-Shot TTS를 달성한 Factorized Diffusion
Qcoding 2026. 5. 1. 09:36📄 한 문단 요약
NaturalSpeech 3는 음성을 timbre(음색), prosody(운율), content(내용), acoustic detail(음향 세부), duration(길이) 5가지 속성으로 분리해 각각 독립적으로 생성하는 TTS 시스템이다. 핵심은 두 가지: FACodec는 Vector Quantization과 Gradient Reversal로 속성을 분리 인코딩하는 코덱이고, Factorized Diffusion Model은 속성별 discrete diffusion으로 순서대로 생성한다. LibriSpeech test-clean에서 Sim-O 0.67로 Ground Truth(0.68)와 사실상 동률, WER 1.81%로 GT(1.94%)보다 오히려 낮으며, CMOS 0.00(사람 수준 기준)을 달성했다. 1B 파라미터·200K 시간 데이터로 스케일링 시 성능이 꾸준히 향상된다.
이 논문은 무엇을 해결하려고 했나?
Zero-shot TTS는 학습에 없던 화자의 짧은 음성 샘플만으로 그 목소리를 그대로 합성하는 과제다. VALL-E, VoiceBox, NaturalSpeech 2 같은 선행 연구들이 zero-shot 품질을 빠르게 끌어올렸지만, 공통된 문제가 남아 있었다. 텍스트와 음성을 하나의 복잡한 공간에서 직접 매핑하려다 보니, 모델이 음색(timbre)과 운율(prosody)을 혼동하거나 발음 정확도(intelligibility)와 자연스러움(naturalness)이 동시에 높기 어려웠다.
NaturalSpeech 3의 질문은 간단하다. 사람이 "이 문장을 저 사람 목소리로 읽어라"고 할 때, 우리는 자연스럽게 내용·운율·음색·음향을 분리해서 생각한다. TTS도 이 분리를 명시적으로 모델링하면 어떨까? 즉, "음성 = 독립된 속성들의 조합"이라는 가설 하에 코덱과 생성 모델을 모두 속성별로 분리(factorize)해서 설계한다.
결과는 LibriSpeech에서 CMOS 0.00 (인간 녹음 대비 차이 없음), WER 1.81% (GT 1.94%보다 낮음), **Sim-O 0.67 (GT 0.68과 동급)**으로, 모든 지표에서 SOTA를 갱신했다.
배경지식과 핵심 키워드
|
Zero-Shot TTS
학습 시 본 적 없는 화자의 3~10초짜리 음성 프롬프트만으로 그 화자의 목소리를 복제해 임의의 텍스트를 합성하는 과제다. 화자 적응(fine-tuning) 없이 inference-time에만 동작한다. 난점은 화자의 음색을 텍스트 내용과 분리해 "음색만" 이식하는 것이다. NaturalSpeech 3는 timbre를 별도 벡터로 분리해 조건화함으로써 이 문제를 직접 해결한다.
|
Neural Codec (신경망 코덱)
음성 파형을 이산 토큰(discrete token) 시퀀스로 압축하는 신경망이다. EnCodec, SoundStream이 대표적. Encoder → Vector Quantization(VQ) → Decoder 구조로, VQ에서 연속 벡터를 가장 가까운 코드북 엔트리로 근사한다. TTS에서는 음성 모델링 문제를 "토큰 시퀀스 예측"으로 바꿔 LLM/Diffusion 적용을 쉽게 만든다. NaturalSpeech 3의 FACodec은 기존 단일 코덱과 달리 속성별로 별도 VQ 코드북을 사용한다.
|
|
Vector Quantization (VQ) & Factorized VQ (FVQ)
연속 임베딩 벡터를 유한한 코드북(codebook) 내 가장 가까운 엔트리로 매핑해 이산 인덱스로 표현하는 기법이다. 일반 VQ는 하나의 코드북으로 모든 정보를 압축한다. FVQ(Factorized VQ)는 속성별 독립 코드북 여러 개를 사용해 각 속성을 별도 이산 공간에 매핑한다. NaturalSpeech 3에서 prosody·content·acoustic detail 각각 별도 FVQ를 두어 하나의 VQ로 뒤섞이던 음성 속성을 명시적으로 분리한다.
|
Gradient Reversal Layer (GRL)
Forward pass에서는 그대로 전파하고, Backward pass에서는 gradient의 부호를 반전(-λ 곱)해서 전달하는 층이다. 특정 표현이 어떤 정보를 담지 못하게 "역방향으로 훈련"시키는 데 쓴다. FACodec에서는 prosody 표현이 phoneme 정보를 포함하지 않도록 phoneme classifier에 GRL을 연결하고, content 표현이 F₀(pitch) 정보를 담지 않도록 F₀ predictor에 GRL을 연결한다. 즉 "이 표현으로는 저 정보를 예측할 수 없게" 만드는 적대적 분리 학습이다.
|
|
Discrete Diffusion (이산 확산 모델)
연속 공간이 아닌 이산 토큰 공간에서 동작하는 diffusion 모델이다. Forward process가 Gaussian noise 추가 대신 토큰을 마스킹(Bernoulli masking)하고, reverse process가 마스크를 복원한다. NaturalSpeech 3에서는 σ(t) = sin(πt/2T) 스케줄로 마스킹 비율을 조절하고, 손실은 ℒ_mask = 𝔼[−∑m_{t,i}·log(p_θ(x_i|X_t, X^p, C))]. 연속 diffusion 대비 이산 코덱 토큰과 자연스럽게 결합되며, 단 4 step 반복으로 빠른 추론이 가능하다.
|
Information Bottleneck (정보 병목)
인코더 출력을 일부러 저차원으로 압축(projection)해서 해당 표현이 담을 수 있는 정보량을 제한하는 설계다. FACodec에서는 speech encoder 출력을 8차원으로 투영한 뒤 VQ에 통과시킨다. 차원이 낮으면 모든 정보를 담을 수 없으므로, 지도 학습(phoneme/F₀ supervision)이 정말 원하는 속성만 남게 된다. 이 병목이 없으면 VQ가 다른 속성 정보까지 흡수해 분리가 실패한다.
|
|
Classifier-Free Guidance (CFG)
조건부 생성 모델의 추론 시 조건 강도를 높이는 기법이다. 학습 중 무작위로 조건을 비워서(unconditional) 학습하고, 추론 시 conditional score와 unconditional score의 차이를 증폭한다: x̂ = (1+α)·score_cond − α·score_uncond. NaturalSpeech 3에서 guidance scale α=1.0을 사용했고, CFG 없이는 Sim-O −0.03, Sim-R −0.04, SMOS −0.21 하락이 ablation에서 확인됐다. 특히 화자 유사도(SMOS) 개선에 CFG가 결정적이다.
|
Timbre (음색) vs Prosody (운율)
Timbre는 같은 음고·음량이어도 화자를 구별할 수 있게 하는 음질 특성(성대 형태, 성도 구조에 기인)이다. Prosody는 발화의 리듬·강세·억양 패턴으로 F₀ 변화, 에너지, 음절 길이에 반영된다. TTS에서 이 둘을 혼동하면 목소리는 닮았지만 억양이 어색하거나(timbre 복사, prosody 미복사), 반대로 억양은 비슷하지만 음색이 바뀌는 현상이 생긴다. NaturalSpeech 3는 timbre를 global vector h_t로, prosody를 frame-level FVQ로 분리해 독립 조건화한다.
|
|
Sim-O / Sim-R (화자 유사도 지표)
화자 유사도를 측정하는 자동 평가 지표. Sim-O(Original)는 생성 음성과 원본 화자 음성의 임베딩 코사인 유사도, Sim-R(Reconstructed)는 생성 음성과 코덱 재구성 음성 간 유사도다. 값이 높을수록 화자 특성을 잘 보존한 것. NaturalSpeech 3의 Sim-O 0.67은 GT 0.68과 통계적으로 유의미한 차이가 없으며, 이전 SOTA Voicebox(0.64)를 0.03 차이로 앞선다. Sim-R 0.76은 Voicebox(0.67)보다 0.09 높다.
|
FACodec의 Detail Dropout
학습 중 acoustic detail 코드 z_d를 확률 p로 무작위 마스킹하는 정규화 기법이다. Acoustic detail은 가장 정보량이 많아 prosody·content·timbre 정보가 새어 들어가기 쉽다(information leakage). Dropout으로 detail 코드 없이도 음성을 재구성할 수 있도록 강제하면 다른 속성 코드들이 자신의 역할을 더 명확히 학습한다. 이 설계가 없으면 속성 분리가 실패해 zero-shot 시 음색 모방 품질이 떨어진다.
|
|
WER (Word Error Rate)
생성된 음성을 ASR 모델로 인식한 텍스트와 원본 텍스트를 비교한 오류율. TTS의 발음 정확도(intelligibility)를 자동으로 측정한다. 낮을수록 명료하게 발음된다. NaturalSpeech 3는 WER 1.81%로 GT(1.94%)보다 오히려 낮은데, 이는 모델이 항상 명확하게 발음하도록 학습된 반면 GT는 자연 발화의 노이즈·축약·mumbling을 포함하기 때문이다. Voicebox는 2.03%였다.
|
PESQ / STOI / MSTFT / MCD (코덱 품질 지표)
PESQ(Perceptual Evaluation of Speech Quality)는 ITU 표준 음질 점수(최대 4.5), STOI(Short-Time Objective Intelligibility)는 명료도(0–1), MSTFT는 Multi-Scale STFT 거리(낮을수록 좋음), MCD(Mel Cepstral Distortion)는 mel 공간 거리(낮을수록 좋음)다. FACodec은 4.8 kbps에서 PESQ 3.47(SoundStream 3.03, EnCodec 6kbps 3.28 대비 우위), STOI 0.95(SoundStream 0.90), MSTFT 0.93(SoundStream 1.07), MCD 2.59(SoundStream 3.38)로 동급 대역폭에서 모든 지표 1위다.
|
핵심 인사이트
배경지식의 핵심 연결: FACodec이 Information Bottleneck + GRL + Detail Dropout으로 속성을 분리하고, 분리된 각 속성을 Discrete Diffusion이 순서대로(duration → prosody → content → detail) 생성한다. Classifier-Free Guidance가 음색 프롬프트를 강하게 반영하게 해주고, 이 전체 파이프라인이 "Zero-shot = 음색 코드만 프롬프트에서 가져오고 나머지는 텍스트에서 생성"을 가능하게 한다.
기존 방법의 한계
단일 공간 모델링의 혼동: VALL-E, VoiceBox, NaturalSpeech 2는 음성을 하나의 통합 잠재 공간에서 모델링한다. 이 경우 모델이 음색과 운율, 내용을 얽힌 채로 학습해 zero-shot 시 화자 유사도와 자연스러움 사이 tradeoff가 생긴다.
Autoregressive 모델의 느린 속도: VALL-E 계열은 codec token을 autoregressive하게 생성한다. LibriSpeech 1분 음성 생성에 여러 분이 걸려 실시간 이하다. NaturalSpeech 3는 discrete diffusion 4 step만으로 생성해 VALL-E 대비 15.27× 빠르다.
Prosody 다양성 부족: 결정론적 duration predictor를 쓰는 모델(FastSpeech 2 계열)은 같은 텍스트를 항상 같은 리듬으로 발화한다. NaturalSpeech 3는 prosody를 diffusion으로 확률적 생성해 매번 자연스럽게 다른 억양이 나온다.
스케일링 부재: 선행 연구들은 대체로 데이터나 모델 크기를 키울 때의 체계적 스케일링 실험이 없었다. NaturalSpeech 3는 1K→200K 시간, 500M→1B 파라미터까지 확장하며 성능이 꾸준히 오르는 스케일링 법칙을 확인했다.
제안 방법의 핵심 아이디어
NaturalSpeech 3의 설계는 두 모듈의 협력으로 이루어진다.
FACodec (Factorized Audio Codec): 음성 파형을 속성별로 분리된 이산 코드로 변환한다. Speech Encoder가 200× downsampling(16kHz 기준)으로 frame-level 표현을 만들고, Timbre Extractor(Transformer)가 발화 전체에서 global 음색 벡터 h_t를 추출한다. Phoneme 레이블·F₀·Speaker ID를 감독 신호로 주면서, GRL로 각 표현이 원치 않는 정보를 포함하지 않도록 적대적으로 학습한다. 8차원 Information Bottleneck이 분리를 강화하고, Detail Dropout이 acoustic detail에 다른 속성 정보가 새지 않도록 방어한다.
Factorized Diffusion Model: FACodec 코드를 타겟으로 속성을 순서대로 생성한다. Phoneme Encoder가 텍스트를 인코딩하고, 4개의 독립 diffusion 모듈이 duration → prosody → content → acoustic detail 순으로 생성한다. 각 단계는 앞 단계 결과를 조건으로 받아 점점 세밀해지는 계층적 생성이다. 추론 시 timbre prompt에서 h_t를 추출해 모든 단계에 조건화하면 자동으로 화자 음색이 이식된다.
모델 구조/알고리즘 흐름
FACodec 학습:
- 음성 파형 → Speech Encoder(conv, 200× downsampling) → frame-level 표현
- 전체 발화 → Timbre Extractor(Transformer) → global 음색 벡터 h_t
- frame-level 표현 → 8차원 projection(Information Bottleneck) → FVQ₁(prosody) + FVQ₂(content) + FVQ₃(acoustic detail)
- Supervision: FVQ₁에 F₀ predictor(+phoneme GRL), FVQ₂에 phoneme predictor(+F₀ GRL), FVQ₃ 두 GRL 모두 + Detail Dropout
- h_t + FVQ codes → Speech Decoder → 재구성 파형
- 손실: 재구성 L1 + VQ commitment loss + 지도 classifier losses + GRL 역전파
Factorized Diffusion 추론:
- 텍스트 → G2P → phoneme sequence → Phoneme Encoder → phoneme hidden h_p
- 음성 프롬프트(3–10초) → FACodec Timbre Extractor → h_t (화자 음색 조건)
- Duration Diffusion: h_p + h_t → phoneme-level duration d (4 step masked diffusion)
- Length Regulator: d로 h_p를 frame-level로 upsampling → h_f
- Prosody Diffusion: h_f + h_t + prosody prompt codes X^p_prs → prosody codes (4 step)
- Content Diffusion: h_f + h_t + prosody codes + content prompt codes → content codes (4 step)
- Acoustic Detail Diffusion: 위 모든 조건 + detail prompt codes → detail codes (4 step)
- Prosody + Content + Detail codes + h_t → FACodec Decoder → waveform
총 diffusion step: 4×4 = 16 step (속성 4개 × 4 iteration), CFG guidance scale α=1.0
논문 그림/표로 이해하기
Figure 1 — NaturalSpeech 3 전체 개요 및 스케일링 결과
왼쪽: FACodec이 음성을 timbre(global h_t), prosody, content, acoustic detail 4가지 이산 코드로 분리하는 흐름. 오른쪽: 데이터와 모델 크기를 키울수록 Sim-O와 WER이 꾸준히 개선되는 스케일링 곡선 — 1K시간/500M에서 200K시간/1B까지 단조 향상이 확인된다.
Figure 2 — FACodec 아키텍처 상세
FACodec의 핵심은 그림 중앙의 3개 FVQ 블록이다. 각 VQ 앞에 8차원 bottleneck projection이 있고, VQ 출력에서 각기 다른 감독 신호(phoneme/F₀/speaker)가 GRL로 연결된다. Detail VQ 상단의 점선은 Detail Dropout을 나타낸다. Timbre Extractor는 별도 경로로 global 벡터 h_t를 만들어 Decoder로 직접 공급한다.
실험 설정과 결과 해석
데이터셋: LibriLight 60K 시간(16kHz, ~7000 화자)으로 diffusion model 학습. 평가는 LibriSpeech test-clean(3초 프롬프트 → 임의 텍스트 합성). 운율 평가는 RAVDESS 데이터셋.
주요 결과 (LibriSpeech test-clean):
| 모델 | Sim-O ↑ | Sim-R ↑ | WER ↓ | CMOS | SMOS ↑ |
|---|---|---|---|---|---|
| Ground Truth | 0.68 | — | 1.94 | +0.08 | 3.85 |
| VALL-E | 0.58 | 0.56 | 5.90 | −0.67 | 3.47 |
| VoiceBox | 0.64 | 0.67 | 2.03 | −0.23 | 3.69 |
| NaturalSpeech 2 | 0.63 | 0.65 | 2.58 | −0.18 | 3.82 |
| ✦ NaturalSpeech 3 | 0.67 | 0.76 | 1.81 | 0.00 | 4.01 |
주목할 점은 SMOS(주관 화자 유사도) 4.01로 GT(3.85)를 역전했다는 것이다. 모델이 실제 녹음보다 더 일관되게 화자 특성을 유지한다는 의미다. Sim-R 0.76은 VoiceBox 0.67 대비 0.09 높아 FACodec의 속성 분리 효과가 화자 재현에 직접 기여함을 보여준다.
스케일링 결과: 데이터 1K → 60K → 200K 시간, 모델 500M → 1B으로 확장 시 Sim-O 0.69 → 0.72 → 0.73 → 0.75, WER 3.39 → 3.03 → 2.83 → 2.62로 단조 개선.
FACodec 코덱 품질 (4.8 kbps): PESQ 3.47(SoundStream 3.03 대비 +0.44), STOI 0.95, MSTFT 0.93, MCD 2.59. 동급 대역폭에서 모든 지표 1위.
핵심 인사이트
WER 1.81%가 GT 1.94%보다 낮다는 결과는 표면적으로 "모델이 더 명확하다"는 뜻이지만, 반대로 해석하면 "자연 발화의 축약·강세 변형을 재현하지 못한다"는 한계이기도 하다. 완벽한 intelligibility가 자연스러운 prosody와 반드시 같은 방향은 아니라는 점에 주의해야 한다.
한계와 비판적 관점
화자 윤리 문제: 논문이 직접 명시한 한계다. 목소리 복제 기술은 화자 사칭, 음성 인증 우회에 악용될 수 있다. 저자들은 "robust synthesized speech detection model"의 필요성을 언급하지만 구체적 대응책은 논문 범위 밖이다.
프롬프트 길이 의존성: 3초 프롬프트라는 비교적 짧은 조건을 썼지만, 실제로 더 짧은 프롬프트(1초 미만)에서의 성능 저하는 실험되지 않았다. 실용 환경에서 프롬프트 품질과 길이에 따른 robustness는 미검증이다.
두 단계 학습의 복잡성: FACodec과 Diffusion Model을 별도로 학습한다. FACodec의 분리 품질이 Diffusion Model 성능의 상한이 되므로, 코덱 분리가 실패하면 전체 파이프라인이 영향을 받는다. VITS 같은 완전 end-to-end 대비 오류 전파 경로가 더 복잡하다.
감정·스타일 표현 제한: 현재 factorization은 timbre·prosody·content·detail·duration에 집중됐다. 감정(기쁨, 슬픔, 분노)이나 말하기 스타일(낭독 vs 대화)은 prosody에 일부 포함되지만 독립 속성으로 제어되지 않는다.
추론 비용: diffusion 4단계 × 속성 4개 = 16 diffusion 전진과 CFG를 위한 2배 계산(실제로 0.60 forward pass 기준 언급). VALL-E보다 15× 빠르지만, FastSpeech 2처럼 단순 NAR 모델 대비 여전히 무겁다.
구현하거나 응용한다면 무엇을 봐야 하나?
FACodec 공개: Microsoft Research의 기존 NaturalSpeech 시리즈 코드는 speechresearch GitHub에 있다. 논문 시점 기준 NS3 공식 구현은 공개 전이나, FACodec 학습 코드는 별도 공개가 예상된다.
커뮤니티 구현: huggingface transformers와 amphion TTS 프레임워크에 NaturalSpeech 3 기반 구현이 포함되거나 포크됐다.
GRL 구현: PyTorch에서 torch.autograd.Function으로 forward는 identity, backward는 -λ * grad_output을 반환하는 커스텀 함수로 쉽게 구현된다.
학습 요구 사항: FACodec V100 8대 800K step, Diffusion Model A100 8대 1M step. 전체 학습에 상당한 컴퓨팅이 필요하다. 소규모 실험은 데이터를 LibriSpeech 960h로 줄이고 모델 크기를 500M 이하로 조정해 진행 가능하다.
응용 방향: 음색 프롬프트만 교체해 target speaker voice를 바꾸는 voice conversion, prosody 프롬프트를 별도 제어해 감정·말투를 조절하는 controllable TTS, FACodec 토큰을 LLM 입출력으로 써서 speech language model 구축.
한 줄 결론과 다음에 읽을 논문
NaturalSpeech 3는 음성의 속성 분리라는 단순한 아이디어를 FACodec(코덱 레벨)과 Factorized Diffusion(생성 레벨) 두 곳에서 동시에 구현해, zero-shot TTS에서 처음으로 모든 품질 지표를 사람 수준으로 끌어올린 논문이다.
다음에 읽을 논문:
- VALL-E (2023, arXiv:2301.02111): NaturalSpeech 3가 비교 기준으로 삼는 autoregressive zero-shot TTS. LLM 방식으로 codec token을 생성하는 접근.
- VoiceBox (2023, arXiv:2306.15687): NaturalSpeech 3의 직접 SOTA 경쟁자. Flow matching 기반 non-autoregressive zero-shot TTS.
- VITS (2021, arXiv:2106.06103): 단일 화자 TTS 완성도의 기준점. FACodec 없이 VAE+Flow+GAN으로 end-to-end 접근한 이전 세대 설계와 비교해보면 발전 방향이 더 선명하게 보인다.
출처:
- 논문 원문: arXiv 2403.03100
- 공식 데모: speechresearch.github.io/naturalspeech3
- Figure 1, 2 출처: Ju et al., "NaturalSpeech 3", arXiv 2024. arXiv 라이선스 하에 인용.
'AI논문리뷰-음성인식TTS' 카테고리의 다른 글
| [AI] VALL-E - Neural Codec Language Models (0) | 2026.05.01 |
|---|---|
| [AI논문리뷰] VALL-E - 3초 음성 프롬프트로 누구의 목소리도 흉내내는 언어 모델 TTS (0) | 2026.05.01 |
| [AI논문리뷰] VITS - VAE + Flow + GAN으로 사람 수준 음성을 단일 모델에서 직접 합성 (1) | 2026.05.01 |
| [AI논문리뷰] FastSpeech 2 - Teacher 없이 더 빠르고 자연스러운 Non-Autoregressive TTS (1) | 2026.05.01 |
| [AI논문리뷰] HiFi-GAN - 주기 패턴 판별기로 사람 수준의 음질을 실시간보다 167배 빠르게 합성 (1) | 2026.05.01 |