검색
← 모듈 로드맵

음성 합성(TTS)과 목소리 복제: 멜 스펙트로그램 · 보코더 · 코덱 언어 모델

강의 · 준전문가 · KAITABASE 정리

원제 · Text-to-Speech and Voice Cloning (Hugging Face Audio Course Unit 6 참고)

Tacotron 2 · WaveNet · HiFi-GAN · VALL-E 구조와 MOS, 목소리 복제 책임 원칙을 숫자로 익히는 수업

먼저 알아야 할 것

멜 스펙트로그램인코더-디코더와 어텐션GAN 개요다음 토큰 예측

다루는 내용

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 평가와 신뢰 구간, 목소리 복제의 위험과 대응(동의 · 고지 · 워터마크 · 탐지)

들어가기 전에

한눈에 보기

  • TTS를 "글자 → 멜(음향 모델) → 파형(보코더)" 두 단계로 나누는 이유를 설명할 수 있습니다.
  • 자기회귀 보코더(WaveNet)와 병렬 보코더(HiFi-GAN)의 속도 차이를 숫자로 비교합니다.
  • VALL-E가 3초 녹음을 '프롬프트'로 쓰는 방식을 토큰 수로 계산합니다.
  • MOS 평균과 95% 신뢰 구간을 직접 구하고, 두 시스템 비교 때 주의할 점을 압니다.
  • 목소리 복제를 업무에 쓸 때 지켜야 할 동의 · 고지 · 워터마크 원칙을 정리합니다.

1. 큰 그림: 왜 두 단계로 나누나

직관(해설용 비유). 건물을 지을 때 설계도부터 그리고, 시공은 따로 합니다. TTS도 "무엇을 어떤 억양으로 말할지"(설계도 = 멜 스펙트로그램)와 "그 설계를 실제 떨림으로 만들기"(시공 = 파형)를 나눕니다.

단계.

  1. 텍스트 정규화: "3시 30분" → "세 시 삼십 분"처럼 읽는 형태로 바꿉니다. 숫자 · 단위 · 약어 처리가 틀리면 아무리 좋은 모델도 엉뚱하게 읽습니다.
  2. (선택) 음소 변환: 글자를 발음 기호로 바꿉니다. 한국어는 "같이 → [가치]"처럼 표기와 발음이 다른 경우가 많아 도움이 됩니다.
  3. 음향 모델(acoustic model): 글자 · 음소 → 멜 스펙트로그램.
  4. 보코더(vocoder): 멜 스펙트로그램 → 파형.

숫자로 해 보기(해설용). 길이 차이가 큽니다. 22.05 kHz 음성 1초는 22,050개 샘플이지만, 홉 256 샘플인 멜 스펙트로그램으로는 약 86프레임(22050/256≈86.122050/256 \approx 86.1)입니다. 글자 몇 개 → 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 24.526 ± 0.066
실제 녹음4.582 ± 0.053

숫자로 해 보기(해설용). 12.5 ms 홉은 1초에 1/0.0125=801/0.0125 = 80 프레임입니다. 3초 문장이면 디코더가 240장을 차례로 만들어야 합니다. 어텐션이 중간에 글자를 건너뛰거나 되풀이하면 단어가 빠지거나 반복되는 TTS 특유의 오류가 생기며, FastSpeech(2019)는 음소마다 길이를 예측해 늘려 주는 길이 조절기(length regulator)로 이런 건너뛰기 · 반복 문제를 거의 없앴다고 보고했습니다.

3. 보코더: WaveNet에서 HiFi-GAN으로

WaveNet(2016). 오디오 샘플 하나하나를 "앞의 모든 샘플이 주어졌을 때의 확률분포"로 예측하는 완전 확률적 · 자기회귀 모델입니다. 초당 수만 개 샘플의 원시 파형을 직접 다루며, 영어와 중국어(표준어) TTS에서 사람 평가자가 기존 최고 시스템보다 훨씬 자연스럽다고 평가했습니다(원 논문 초록).

p(x)=∏t=1Tp(xt∣x1,…,xt−1)p(\mathbf{x}) = \prod_{t=1}^{T} p(x_t \mid x_1, \dots, x_{t-1})
기호뜻
x\mathbf{x}파형 전체(샘플 TT 개)
xtx_ttt 번째 샘플
p(xt∣⋅)p(x_t\mid\cdot)앞 샘플들이 주어졌을 때 다음 샘플의 분포

문제는 속도입니다. 식 그대로면 샘플 하나를 만들 때마다 신경망을 한 번 돌려야 합니다. 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초 음성은 약 10/167.9≈0.0610/167.9 \approx 0.06 초에 만들어집니다(해설용 환산). 품질은 LJSpeech에서 MOS 4.36(실제 녹음 4.45)으로 보고되었습니다. 작은 버전은 CPU에서도 실시간보다 약 13.4배 빠릅니다.

왜 GAN인가. 멜 L1 손실만 쓰면 여러 가능한 파형의 '평균'을 내어 소리가 뭉개집니다. 판별자가 "진짜 같은 미세한 결"을 요구하므로 또렷한 소리가 납니다. 평균이 흐릿해지는 문제는 이미지 생성에서 GAN이 등장한 이유와 같습니다.

mermaid
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초 프롬프트는 3×75=2253\times75 = 225 프레임이고, 프레임마다 코드가 8개이므로 토큰 225×8=1,800225\times8 = 1{,}800 개입니다. 프레임 하나가 24000/75=32024000/75 = 320 샘플을 대신하므로, 샘플 단위 자기회귀(WaveNet)보다 순차 단계가 훨씬 적습니다.

왜 대단하고, 왜 위험한가. 화자별로 따로 학습하지 않아도 몇 초 녹음만으로 목소리 · 감정 · 녹음 환경까지 흉내 냅니다. 논문도 '더 넓은 영향' 부분에서 이 모델이 음성 신원 확인을 속이거나 특정 화자를 사칭하는 데 오용될 수 있다고 적고, 합성 여부를 가려내는 탐지 모델을 만들 수 있다고 제안했습니다.

5. 평가: MOS를 제대로 읽기

정의. 평균 의견 점수(MOS, mean opinion score)는 사람 평가자가 1~5점으로 자연스러움을 매긴 점수의 평균입니다. Tacotron 2 논문은 샘플마다 최소 8명이 0.5점 단위로 평가했고, 신뢰 구간은 t 분포로 계산했습니다.

s‾=1n∑i=1nsi,95% 신뢰 구간≈s‾±t0.975, n−1 σ^n\overline{s} = \frac{1}{n}\sum_{i=1}^{n} s_i,\qquad \text{95\% 신뢰 구간} \approx \overline{s} \pm t_{0.975,\,n-1}\,\frac{\hat\sigma}{\sqrt n}
기호뜻
sis_iii 번째 평가 점수
nn평가 수
σ^\hat\sigma점수의 표본 표준편차
t0.975,n−1t_{0.975,n-1}자유도 n−1n-1 인 t 분포의 97.5% 지점(표본이 크면 약 1.96)

숫자로 해 보기(해설용, 코드로 확인). 평가 8개가 (4.5, 4, 5, 4.5, 4, 3.5, 5, 4.5)라면 평균 4.375, 표본 표준편차 약 0.518, t0.975,7≈2.365t_{0.975,7}\approx2.365 이므로 구간 폭은 2.365×0.518/8≈0.432.365\times0.518/\sqrt8 \approx 0.43 — 즉 4.375±0.434.375 \pm 0.43 입니다. 평가가 8개뿐이면 0.1점 차이는 우연과 구별되지 않습니다. 논문 표처럼 ±0.05~0.1 수준의 좁은 구간을 얻으려면 평가 수가 훨씬 많아야 합니다(폭은 1/n1/\sqrt n 에 비례).

읽을 때 주의할 점.

  • MOS는 평가자 집단 · 문장 · 질문 문구에 따라 달라지므로, 다른 논문의 MOS끼리 직접 비교하지 않습니다. 같은 실험 안의 상대 비교가 의미 있습니다(Tacotron 2 논문도 같은 지적을 합니다).
  • 목소리 복제는 자연스러움 외에 화자 유사도(예: 화자 임베딩의 코사인 유사도)와 명료도(합성음을 ASR로 받아 적은 WER)도 함께 봅니다.

6. 목소리 복제의 책임 있는 사용

위험. 목소리는 신원을 나타내는 생체 정보이기도 합니다. 가족 · 상사를 사칭한 송금 사기, 음성 인증 우회, 동의 없는 연설 · 광고 제작이 대표적인 오용입니다. Hugging Face Audio Course 6단원도 TTS가 악의적으로 쓰일 수 있음을 경고하며, 음성 데이터는 명시적 동의 를 받아 모으고 당사자가 사용 목적 · 범위 · 위험을 이해하도록 하라고 권합니다.

업무에서 지킬 원칙(해설용 정리).

  1. 동의: 본인 목소리이거나, 목적 · 범위 · 기간을 적은 서면 동의를 받은 목소리만 씁니다.
  2. 고지: 듣는 사람이 합성 음성임을 알 수 있게 표시합니다(영상 자막 · 설명란 등).
  3. 워터마크: 합성음에 사람 귀에는 안 들리는 신호를 넣어 나중에 가려낼 수 있게 합니다. 예를 들어 AudioSeal(2024)은 AI 생성 음성을 샘플 단위까지 위치를 짚어 탐지하는 워터마크 방법으로, 기존 모델보다 최대 두 자릿수(약 100배) 빠른 탐지를 보고했습니다.
  4. 탐지 · 검증: 중요한 지시(송금 · 계정 변경)는 목소리만 믿지 말고 다른 경로로 다시 확인합니다.

나라별 법 규정은 빠르게 바뀌므로, 실제 서비스에 쓰기 전에는 해당 국가의 공식 법령 · 고시를 확인하고, 이 사이트 '안전·공정성·윤리' 트랙의 규제 수업도 함께 보세요.

연습 문제

  1. 22.05 kHz, 홉 256인 멜 스펙트로그램에서 5초 음성은 약 몇 프레임인가요?
    • 풀이: 5×22050/256≈430.75\times22050/256 \approx 430.7, 약 431프레임입니다.
  2. 실시간보다 167.9배 빠른 보코더로 1분 음성을 만드는 데 걸리는 시간은?
    • 풀이: 60/167.9≈0.3660/167.9 \approx 0.36 초입니다(해설용 환산).
  3. EnCodec 75 Hz · 양자화기 8개 설정에서 10초 음성은 토큰 몇 개인가요?
    • 풀이: 10×75×8=6,00010\times75\times8 = 6{,}000 개입니다.
  4. 시스템 A의 MOS가 4.30 ± 0.15, B가 4.38 ± 0.15(같은 실험)라면 "B가 낫다"고 말할 수 있나요?
    • 풀이: 구간이 크게 겹치므로 이 자료만으로는 차이가 우연일 가능성을 배제할 수 없습니다. 평가 수를 늘리거나 나란히 비교(A/B 선호) 평가를 추가해야 합니다.

스스로 점검

  1. 멜 스펙트로그램을 중간에 두면 무엇이 좋아지나요?
    • 답: 글자에서 파형까지의 큰 길이 차이를 두 단계로 나누고, 귀에 중요한 정보만 담은 압축 표현이라 앞 단계는 내용 · 억양, 뒤 단계는 음질에 집중할 수 있습니다.
  2. HiFi-GAN이 WaveNet보다 빠른 근본 이유는?
    • 답: WaveNet은 샘플을 하나씩 순서대로 만드는 자기회귀 모델이고, HiFi-GAN은 멜 스펙트로그램에서 파형 전체를 병렬로 한 번에 만들기 때문입니다.
  3. 몇 초 녹음으로 목소리를 복제할 수 있게 되면서 업무 절차에 추가해야 할 것은?
    • 답: 목소리 사용 동의서, 합성 음성 고지, 워터마크, 그리고 목소리만으로 중요한 지시를 승인하지 않는 별도 확인 절차입니다.

용어 정리

용어쉬운 뜻
음성 합성(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 논문 — 코덱 토큰과 자기회귀 · 비자기회귀 두 단계 생성, '더 넓은 영향' 절.

다음에 볼 것

라이선스

본문은 KAITABASE 자체 해설입니다. 참고 자료 Hugging Face Audio Course 저장소는 Apache 2.0입니다. 논문 수치는 각 원문(arXiv)에서 확인했으며, 프레임 · 토큰 · 시간 환산과 MOS 평가 예는 이 수업을 위해 만든 해설용 계산입니다(코드로 확인).

출처

AI 원리부터 이해하기 · 음성 모듈

음성 모듈 학습

이 글은 음성 모듈의 학습 자료입니다. 전체 3개 자료 중 3번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 Hugging Face Audio Course(Apache 2.0)