음성 합성(TTS)과 목소리 복제: 멜 스펙트로그램 · 보코더 · 코덱 언어 모델
Tacotron 2 · WaveNet · HiFi-GAN · VALL-E 구조와 MOS, 목소리 복제 책임 원칙을 숫자로 익히는 수업
먼저 알아야 할 것
다루는 내용
TTS를 텍스트 정규화 → 음향 모델(Tacotron 2) → 보코더(WaveNet · HiFi-GAN)로 나누는 이유를 길이 차이로 설명하고, 자기회귀와 병렬 보코더의 속도 차이를 논문 수치로 비교합니다. VALL-E가 EnCodec 토큰과 3초 프롬프트로 제로샷 복제를 하는 방식을 토큰 수로 계산하고, MOS 평균과 95% 신뢰 구간을 직접 구합니다. 동의 · 고지 · 워터마크(AudioSeal) · 별도 확인 절차로 목소리 복제의 책임 있는 사용을 정리합니다.
해설
음성 합성(TTS)과 목소리 복제: 멜 스펙트로그램 · 보코더 · 코덱 언어 모델
음성 합성(TTS, text-to-speech)은 음성 인식의 반대 방향입니다. 글자를 먼저 멜 스펙트로그램 같은 '소리 설계도'로 바꾸고, 보코더가 설계도를 실제 파형으로 그립니다. 최근에는 소리를 토큰으로 바꿔 언어 모델처럼 이어 쓰는 방식이 나와, 몇 초짜리 녹음만으로 목소리를 흉내 내는 일까지 가능해졌습니다. 이 수업은 그 구조를 숫자로 익히고, 품질 평가(MOS)와 목소리 복제의 책임 있는 사용 원칙을 정리합니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Hugging Face Audio Course 6단원(TTS), Tacotron 2(arXiv 1712.05884), WaveNet(arXiv 1609.03499), HiFi-GAN(arXiv 2010.05646), VALL-E(arXiv 2301.02111), AudioSeal(arXiv 2401.17264) |
| 트랙 · 수준 | 음성 · 중급 |
| 이 수업이 다루는 범위 | TTS 2단계 구조, 텍스트 정규화 · 음소, 음향 모델(Tacotron 2), 보코더(WaveNet · HiFi-GAN), 신경 코덱 언어 모델(VALL-E), MOS 평가와 신뢰 구간, 목소리 복제의 위험과 대응(동의 · 고지 · 워터마크 · 탐지) |
들어가기 전에
- 소리를 숫자로: 샘플링 · 푸리에 변환 · 멜 스케일 — 멜 스펙트로그램과 홉 길이
- 음성 인식(ASR): CTC · 인코더-디코더 · WER — 인코더-디코더와 어텐션 정렬
- 생성적 적대 신경망 (GAN) — HiFi-GAN 보코더의 학습 방식
- 언어 모델의 기본: 다음 토큰 예측 · 퍼플렉서티 · 샘플링 — 코덱 언어 모델의 바탕
한눈에 보기
- TTS를 "글자 → 멜(음향 모델) → 파형(보코더)" 두 단계로 나누는 이유를 설명할 수 있습니다.
- 자기회귀 보코더(WaveNet)와 병렬 보코더(HiFi-GAN)의 속도 차이를 숫자로 비교합니다.
- VALL-E가 3초 녹음을 '프롬프트'로 쓰는 방식을 토큰 수로 계산합니다.
- MOS 평균과 95% 신뢰 구간을 직접 구하고, 두 시스템 비교 때 주의할 점을 압니다.
- 목소리 복제를 업무에 쓸 때 지켜야 할 동의 · 고지 · 워터마크 원칙을 정리합니다.
1. 큰 그림: 왜 두 단계로 나누나
직관(해설용 비유). 건물을 지을 때 설계도부터 그리고, 시공은 따로 합니다. TTS도 "무엇을 어떤 억양으로 말할지"(설계도 = 멜 스펙트로그램)와 "그 설계를 실제 떨림으로 만들기"(시공 = 파형)를 나눕니다.
단계.
- 텍스트 정규화: "3시 30분" → "세 시 삼십 분"처럼 읽는 형태로 바꿉니다. 숫자 · 단위 · 약어 처리가 틀리면 아무리 좋은 모델도 엉뚱하게 읽습니다.
- (선택) 음소 변환: 글자를 발음 기호로 바꿉니다. 한국어는 "같이 → [가치]"처럼 표기와 발음이 다른 경우가 많아 도움이 됩니다.
- 음향 모델(acoustic model): 글자 · 음소 → 멜 스펙트로그램.
- 보코더(vocoder): 멜 스펙트로그램 → 파형.
숫자로 해 보기(해설용). 길이 차이가 큽니다. 22.05 kHz 음성 1초는 22,050개 샘플이지만, 홉 256 샘플인 멜 스펙트로그램으로는 약 86프레임()입니다. 글자 몇 개 → 86프레임 → 22,050샘플로, 한 단계에 수백 배씩 늘리는 문제를 두 번에 나눠 푸는 셈입니다.
왜 이렇게 하나. 글자에서 파형으로 바로 가면 길이 차이가 너무 커서 학습이 어렵습니다. 멜 스펙트로그램은 사람 귀에 중요한 정보만 압축한 중간 표현이라, 앞 단계는 '무엇을 · 어떻게 말할지', 뒤 단계는 '음질'에 집중할 수 있습니다. Tacotron 2 논문도 언어 특징 대신 멜 스펙트로그램을 보코더 입력으로 쓰면 보코더를 크게 단순화할 수 있다고 보고했습니다.
2. 음향 모델: Tacotron 2
구조(원 논문 확인). 순환 신경망 기반 시퀀스-투-시퀀스(seq2seq) 모델이 글자 임베딩을 멜 스펙트로그램으로 바꾸고, 수정한 WaveNet이 보코더로 파형을 만듭니다. 디코더는 어텐션으로 "지금 어느 글자를 읽고 있는지"를 따라가며 멜 프레임을 한 장씩 생성합니다.
멜 설정(원 논문 확인). 50 ms 프레임 · 12.5 ms 홉 · Hann 창으로 STFT를 하고, 125 Hz~7.6 kHz를 덮는 80채널 멜 필터뱅크 와 로그 압축을 씁니다. 학습 데이터는 전문 여성 화자 한 명의 24.6시간 음성입니다.
결과(원 논문 표 1, MOS ± 95% 신뢰 구간).
| 시스템 | MOS |
|---|---|
| 파라메트릭(기존 상용) | 3.492 ± 0.096 |
| Tacotron(Griffin-Lim) | 4.001 ± 0.087 |
| 연결 합성(기존 상용) | 4.166 ± 0.091 |
| WaveNet(언어 특징 입력) | 4.341 ± 0.051 |
| Tacotron 2 | 4.526 ± 0.066 |
| 실제 녹음 | 4.582 ± 0.053 |
숫자로 해 보기(해설용). 12.5 ms 홉은 1초에 프레임입니다. 3초 문장이면 디코더가 240장을 차례로 만들어야 합니다. 어텐션이 중간에 글자를 건너뛰거나 되풀이하면 단어가 빠지거나 반복되는 TTS 특유의 오류가 생기며, FastSpeech(2019)는 음소마다 길이를 예측해 늘려 주는 길이 조절기(length regulator)로 이런 건너뛰기 · 반복 문제를 거의 없앴다고 보고했습니다.
3. 보코더: WaveNet에서 HiFi-GAN으로
WaveNet(2016). 오디오 샘플 하나하나를 "앞의 모든 샘플이 주어졌을 때의 확률분포"로 예측하는 완전 확률적 · 자기회귀 모델입니다. 초당 수만 개 샘플의 원시 파형을 직접 다루며, 영어와 중국어(표준어) TTS에서 사람 평가자가 기존 최고 시스템보다 훨씬 자연스럽다고 평가했습니다(원 논문 초록).
| 기호 | 뜻 |
|---|---|
| 파형 전체(샘플 개) | |
| 번째 샘플 | |
| 앞 샘플들이 주어졌을 때 다음 샘플의 분포 |
문제는 속도입니다. 식 그대로면 샘플 하나를 만들 때마다 신경망을 한 번 돌려야 합니다. 24 kHz 음성 10초 = 240,000번의 순차 계산입니다.
HiFi-GAN(2020). 멜 스펙트로그램을 받아 파형 전체를 한 번에(병렬로) 만드는 생성자를, 판별자와 겨루게 하여 학습합니다(GAN). 판별자는 두 종류입니다.
- 다중 주기 판별자(MPD): 파형을 주기 2, 3, 5, 7, 11로 접어 2차원으로 보고, 음성의 주기적 패턴을 검사합니다(주기끼리 겹치지 않도록 소수를 골랐다고 논문은 설명합니다).
- 다중 스케일 판별자(MSD): 원본 · 2배 · 4배로 줄인 파형을 각각 검사합니다.
생성자 손실은 적대 손실에 멜 스펙트로그램 L1 손실(가중치 45) 과 판별자 중간 특징 맞추기 손실(가중치 2) 을 더합니다.
숫자로 해 보기(논문 수치 + 해설용 계산). 논문은 V100 GPU 한 장에서 22.05 kHz 음성을 실시간보다 약 167.9배 빠르게 만든다고 보고했습니다. 그러면 10초 음성은 약 초에 만들어집니다(해설용 환산). 품질은 LJSpeech에서 MOS 4.36(실제 녹음 4.45)으로 보고되었습니다. 작은 버전은 CPU에서도 실시간보다 약 13.4배 빠릅니다.
왜 GAN인가. 멜 L1 손실만 쓰면 여러 가능한 파형의 '평균'을 내어 소리가 뭉개집니다. 판별자가 "진짜 같은 미세한 결"을 요구하므로 또렷한 소리가 납니다. 평균이 흐릿해지는 문제는 이미지 생성에서 GAN이 등장한 이유와 같습니다.
flowchart LR
T[텍스트] --> N[텍스트 정규화<br/>숫자 · 단위 읽기]
N --> P[음소 변환 선택]
P --> AM[음향 모델<br/>Tacotron 2 등]
AM --> M[80채널 멜 스펙트로그램]
M --> V[보코더<br/>WaveNet · HiFi-GAN]
V --> W[파형]
R[3초 화자 녹음] --> C[신경 코덱 인코더<br/>이산 토큰]
T --> L[코덱 언어 모델<br/>VALL-E]
C --> L
L --> D[코덱 디코더]
D --> W
W --> E[워터마크 삽입 · 고지]4. 신경 코덱 언어 모델: VALL-E
직관. 소리를 '단어처럼' 잘게 토큰화할 수 있다면, TTS는 "텍스트 토큰 + 화자 소리 토큰 몇 초 → 이어지는 소리 토큰"을 예측하는 언어 모델 문제가 됩니다. GPT가 앞 문장을 보고 말투를 이어 가듯, 앞 3초의 목소리 특징을 이어 갑니다.
설정(원 논문 확인).
- 토크나이저: 기성 신경 오디오 코덱 EnCodec. 24 kHz 음성을 75 Hz 의 임베딩으로 줄이고(320배 축소), 양자화기 8개 · 각 1,024개 항목 의 잔차 벡터 양자화(RVQ)로 토큰화합니다.
- 데이터: LibriLight의 영어 음성 60K시간, 화자 7,000명 이상.
- 제로샷 복제: 처음 듣는 화자의 3초 녹음 을 음향 프롬프트로 씁니다.
숫자로 해 보기(해설용 계산). 3초 프롬프트는 프레임이고, 프레임마다 코드가 8개이므로 토큰 개입니다. 프레임 하나가 샘플을 대신하므로, 샘플 단위 자기회귀(WaveNet)보다 순차 단계가 훨씬 적습니다.
왜 대단하고, 왜 위험한가. 화자별로 따로 학습하지 않아도 몇 초 녹음만으로 목소리 · 감정 · 녹음 환경까지 흉내 냅니다. 논문도 '더 넓은 영향' 부분에서 이 모델이 음성 신원 확인을 속이거나 특정 화자를 사칭하는 데 오용될 수 있다고 적고, 합성 여부를 가려내는 탐지 모델을 만들 수 있다고 제안했습니다.
5. 평가: MOS를 제대로 읽기
정의. 평균 의견 점수(MOS, mean opinion score)는 사람 평가자가 1~5점으로 자연스러움을 매긴 점수의 평균입니다. Tacotron 2 논문은 샘플마다 최소 8명이 0.5점 단위로 평가했고, 신뢰 구간은 t 분포로 계산했습니다.
| 기호 | 뜻 |
|---|---|
| 번째 평가 점수 | |
| 평가 수 | |
| 점수의 표본 표준편차 | |
| 자유도 인 t 분포의 97.5% 지점(표본이 크면 약 1.96) |
숫자로 해 보기(해설용, 코드로 확인). 평가 8개가 (4.5, 4, 5, 4.5, 4, 3.5, 5, 4.5)라면 평균 4.375, 표본 표준편차 약 0.518, 이므로 구간 폭은 — 즉 입니다. 평가가 8개뿐이면 0.1점 차이는 우연과 구별되지 않습니다. 논문 표처럼 ±0.05~0.1 수준의 좁은 구간을 얻으려면 평가 수가 훨씬 많아야 합니다(폭은 에 비례).
읽을 때 주의할 점.
- MOS는 평가자 집단 · 문장 · 질문 문구에 따라 달라지므로, 다른 논문의 MOS끼리 직접 비교하지 않습니다. 같은 실험 안의 상대 비교가 의미 있습니다(Tacotron 2 논문도 같은 지적을 합니다).
- 목소리 복제는 자연스러움 외에 화자 유사도(예: 화자 임베딩의 코사인 유사도)와 명료도(합성음을 ASR로 받아 적은 WER)도 함께 봅니다.
6. 목소리 복제의 책임 있는 사용
위험. 목소리는 신원을 나타내는 생체 정보이기도 합니다. 가족 · 상사를 사칭한 송금 사기, 음성 인증 우회, 동의 없는 연설 · 광고 제작이 대표적인 오용입니다. Hugging Face Audio Course 6단원도 TTS가 악의적으로 쓰일 수 있음을 경고하며, 음성 데이터는 명시적 동의 를 받아 모으고 당사자가 사용 목적 · 범위 · 위험을 이해하도록 하라고 권합니다.
업무에서 지킬 원칙(해설용 정리).
- 동의: 본인 목소리이거나, 목적 · 범위 · 기간을 적은 서면 동의를 받은 목소리만 씁니다.
- 고지: 듣는 사람이 합성 음성임을 알 수 있게 표시합니다(영상 자막 · 설명란 등).
- 워터마크: 합성음에 사람 귀에는 안 들리는 신호를 넣어 나중에 가려낼 수 있게 합니다. 예를 들어 AudioSeal(2024)은 AI 생성 음성을 샘플 단위까지 위치를 짚어 탐지하는 워터마크 방법으로, 기존 모델보다 최대 두 자릿수(약 100배) 빠른 탐지를 보고했습니다.
- 탐지 · 검증: 중요한 지시(송금 · 계정 변경)는 목소리만 믿지 말고 다른 경로로 다시 확인합니다.
나라별 법 규정은 빠르게 바뀌므로, 실제 서비스에 쓰기 전에는 해당 국가의 공식 법령 · 고시를 확인하고, 이 사이트 '안전·공정성·윤리' 트랙의 규제 수업도 함께 보세요.
연습 문제
- 22.05 kHz, 홉 256인 멜 스펙트로그램에서 5초 음성은 약 몇 프레임인가요?
- 풀이: , 약 431프레임입니다.
- 실시간보다 167.9배 빠른 보코더로 1분 음성을 만드는 데 걸리는 시간은?
- 풀이: 초입니다(해설용 환산).
- EnCodec 75 Hz · 양자화기 8개 설정에서 10초 음성은 토큰 몇 개인가요?
- 풀이: 개입니다.
- 시스템 A의 MOS가 4.30 ± 0.15, B가 4.38 ± 0.15(같은 실험)라면 "B가 낫다"고 말할 수 있나요?
- 풀이: 구간이 크게 겹치므로 이 자료만으로는 차이가 우연일 가능성을 배제할 수 없습니다. 평가 수를 늘리거나 나란히 비교(A/B 선호) 평가를 추가해야 합니다.
스스로 점검
- 멜 스펙트로그램을 중간에 두면 무엇이 좋아지나요?
- 답: 글자에서 파형까지의 큰 길이 차이를 두 단계로 나누고, 귀에 중요한 정보만 담은 압축 표현이라 앞 단계는 내용 · 억양, 뒤 단계는 음질에 집중할 수 있습니다.
- HiFi-GAN이 WaveNet보다 빠른 근본 이유는?
- 답: WaveNet은 샘플을 하나씩 순서대로 만드는 자기회귀 모델이고, HiFi-GAN은 멜 스펙트로그램에서 파형 전체를 병렬로 한 번에 만들기 때문입니다.
- 몇 초 녹음으로 목소리를 복제할 수 있게 되면서 업무 절차에 추가해야 할 것은?
- 답: 목소리 사용 동의서, 합성 음성 고지, 워터마크, 그리고 목소리만으로 중요한 지시를 승인하지 않는 별도 확인 절차입니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 음성 합성(TTS) | 글자를 소리로 바꾸는 일 |
| 텍스트 정규화 | 숫자 · 단위 · 약어를 읽는 형태로 바꾸는 전처리 |
| 음소(phoneme) | 말소리를 구분하는 최소 단위(발음 기호) |
| 음향 모델 | 글자 · 음소에서 멜 스펙트로그램을 만드는 모델 |
| 보코더(vocoder) | 멜 스펙트로그램에서 파형을 만드는 모델 |
| 자기회귀 | 앞에 만든 것을 보고 다음 것을 하나씩 만드는 방식 |
| 신경 오디오 코덱 | 소리를 이산 토큰으로 압축 · 복원하는 신경망(예: EnCodec) |
| 잔차 벡터 양자화(RVQ) | 남은 오차를 여러 단계 코드북으로 차례로 근사하는 양자화 |
| 제로샷 화자 복제 | 그 화자로 추가 학습 없이 짧은 녹음만으로 목소리를 흉내 내기 |
| MOS | 사람 평가자의 1~5점 자연스러움 점수 평균 |
| 워터마크 | 사람은 못 듣지만 기계는 가려낼 수 있게 넣는 숨은 신호 |
더 깊이 보려면
- Hugging Face Audio Course 6단원 — 사전학습 TTS 모델 사용, SpeechT5 미세조정, TTS 평가 실습.
- Tacotron 2 논문 3장 — 멜 설정 · MOS 실험 설계 · 어블레이션.
- HiFi-GAN 논문 2장 — MPD · MSD 판별자와 손실 구성.
- VALL-E 논문 — 코덱 토큰과 자기회귀 · 비자기회귀 두 단계 생성, '더 넓은 영향' 절.
다음에 볼 것
- 그래프 신경망 입문: 메시지 전달 · GCN · GraphSAGE · GAT — 음성 트랙을 마쳤다면, 다음 응용 트랙인 그래프 데이터 학습으로
- 생성적 적대 신경망 (GAN) — HiFi-GAN이 쓰는 적대 학습의 원리
- 잡음 제거 확산 확률 모델 (DDPM) — 최근 음성 · 음악 생성에도 널리 쓰이는 또 다른 생성 방식
라이선스
본문은 KAITABASE 자체 해설입니다. 참고 자료 Hugging Face Audio Course 저장소는 Apache 2.0입니다. 논문 수치는 각 원문(arXiv)에서 확인했으며, 프레임 · 토큰 · 시간 환산과 MOS 평가 예는 이 수업을 위해 만든 해설용 계산입니다(코드로 확인).
출처
- Hugging Face Audio Course, Unit 6: From Text to Speech: huggingface.co/learn/audio-course/chapter…
- Jonathan Shen 외, Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions(Tacotron 2), 2017: arxiv.org/abs/1712.05884
- Aaron van den Oord 외, WaveNet: A Generative Model for Raw Audio, 2016: arxiv.org/abs/1609.03499
- Jungil Kong 외, HiFi-GAN: Generative Adversarial Networks for Efficient and High Fidelity Speech Synthesis, 2020: arxiv.org/abs/2010.05646
- Chengyi Wang 외, Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers(VALL-E), 2023: arxiv.org/abs/2301.02111
- Yi Ren 외, FastSpeech: Fast, Robust and Controllable Text to Speech, 2019: arxiv.org/abs/1905.09263
- Robin San Roman 외, Proactive Detection of Voice Cloning with Localized Watermarking(AudioSeal), 2024: arxiv.org/abs/2401.17264
AI 원리부터 이해하기 · 음성 모듈
음성 모듈 학습
이 글은 음성 모듈의 학습 자료입니다. 전체 3개 자료 중 3번째입니다.
출처·원문
원문 보기요약만