---
title: "음성 합성을 혁신하는 타코트론: 엔드 투 엔드 접근 방식"
description: "Tacotron은 기존 TTS 시스템의 복잡한 파이프라인을 단순화하여 텍스트 입력만으로 음성을 생성하는 end-to-end 음성 합성 모델이다. Tacotron 1은 attention 기반 seq2seq 모델을 사용하고 Griffin-Lim 알고리즘으로 음성을 생성하며, Tacotron 2는 LSTM과 Location-Sensitive Attention을 도입하여 음질을 향상시켰다. Tacotron 2는 MOS 점수 4.526을 기록하며, 자연스러운 음성을 생성하는 데 성공했지만 느린 추론 속도와 attention 불안정성 등의 한계가 있다."
date: "2024-10-22"
last_modified: "2026-05-15T08:36:00.000Z"
type: "Post"
tags:
  - "speech synthesis"
  - "text-to-speech"
  - "end-to-end model"
  - "deep learning"
categories:
  - "📄 Research Paper"
canonical_url: "https://blog.pieroot.xyz/tacotron-end-to-end"
markdown_url: "https://blog.pieroot.xyz/tacotron-end-to-end.md"
---

# 음성 합성을 혁신하는 타코트론: 엔드 투 엔드 접근 방식

Tacotron은 기존 TTS 시스템의 복잡한 파이프라인을 단순화하여 텍스트 입력만으로 음성을 생성하는 end-to-end 음성 합성 모델이다. Tacotron 1은 attention 기반 seq2seq 모델을 사용하고 Griffin-Lim 알고리즘으로 음성을 생성하며, Tacotron 2는 LSTM과 Location-Sensitive Attention을 도입하여 음질을 향상시켰다. Tacotron 2는 MOS 점수 4.526을 기록하며, 자연스러운 음성을 생성하는 데 성공했지만 느린 추론 속도와 attention 불안정성 등의 한계가 있다.

## Tacotron: End-to-End Speech Synthesis

---

기존의 TTS(Text-to-Speech) 시스템은 **문장 → 음소 → 발음 → 음성 매칭**이라는 복잡한 파이프라인을 거쳐야 했습니다. 각 단계마다 별도의 모델과 전문 지식이 필요했기 때문에, 시스템을 구축하고 유지하는 것이 상당히 번거로웠죠.

```
기존 TTS 파이프라인:
문장 → 텍스트 정규화 → 음소 변환(G2P) → 운율 예측 → 음향 모델 → 보코더 → 음성
```

하지만 Tacotron은 이 모든 과정을 **하나의 신경망**으로 통합한 end-to-end 모델입니다. 텍스트를 넣으면 바로 음성이 나오는, 말 그대로 "끝에서 끝까지" 처리하는 구조입니다.

> **한 줄 요약**
> 
> Attention 기반 Sequence-to-Sequence 모델로, 문자(character) 입력만으로 멜 스펙트로그램을 직접 생성하여 기존 TTS 파이프라인의 복잡성을 획기적으로 줄인 **end-to-end 음성 합성 모델**입니다.

> **논문 정보**
> 
> - **Tacotron**: *Tacotron: Towards End-to-End Speech Synthesis* (Yuxuan Wang et al., Google, 2017)
> 
> - **Tacotron 2**: *Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions* (Jonathan Shen et al., Google, 2018)
> 
> - **arXiv**: 1703.10135 (Tacotron), 1712.05884 (Tacotron 2)

---

### 배경: 기존 TTS의 문제점

---

기존 TTS 시스템은 여러 모듈이 파이프라인으로 연결된 구조였습니다. 각 모듈은 독립적으로 학습되기 때문에 **에러가 누적**되고, 전체 시스템을 최적화하기가 매우 어려웠습니다.

Tacotron은 이런 복잡한 전처리(음소 변환, 운율 예측 등) 없이 **문자 시퀀스를 바로 멜 스펙트로그램으로 변환**하는 접근 방식을 제안했습니다.

---

### Tacotron 1 아키텍처

---

![image](https://blog.pieroot.xyz/api/image-proxy?id=d7915043-f52b-4cbd-9c05-ea839d0b8e7c&kind=s3&pageId=2ff067c0-15d0-802c-b609-ddc87c8d9410&source=block&blockId=2ff067c0-15d0-8073-9bb4-f6408c4bd210)

Tacotron의 backbone은 **attention 기반 seq2seq 모델**입니다. 텍스트를 입력하면 멜 스펙트로그램을 출력하고, 이를 Griffin-Lim 알고리즘으로 오디오 파형으로 변환합니다.

#### Encoder: 문자를 벡터로 변환

---

Encoder는 입력 문자 시퀀스를 **고차원 벡터 표현**으로 변환하는 역할을 합니다.

1. **Character Embedding**: 입력 문자를 one-hot encoding으로 변환한 뒤, 학습 가능한 임베딩 벡터로 매핑합니다. 한글의 경우 초성, 중성, 종성을 각각 분리하여 인코딩합니다.

1. **Pre-net**: 임베딩된 벡터를 2개의 Fully Connected Layer(256차원, ReLU + Dropout)를 통해 변환합니다. Dropout이 병목(bottleneck) 역할을 하여 attention 학습을 도와줍니다.

1. **CBHG 블록**: Tacotron 1의 핵심 모듈로, 1D Convolution Bank + Highway Network + Bidirectional GRU로 구성됩니다. 다양한 크기의 n-gram 패턴을 포착하여 텍스트의 **장기적 문맥 정보**를 인코딩합니다.

> **CBHG 블록이란?**
> 
> - **C**onvolution **B**ank: K개의 서로 다른 크기(1~K)의 1D 합성곱 필터 세트. 다양한 길이의 n-gram을 동시에 포착
> 
> - **H**ighway Network: 게이팅 메커니즘으로 정보 흐름을 제어하는 Fully Connected 레이어
> 
> - Bidirectional **G**RU: 양방향 순환 신경망으로 시퀀스의 전후 문맥을 모두 반영
> 
> 이 세 가지를 결합하여 로컬 패턴(합성곱)과 글로벌 문맥(GRU)을 모두 학습할 수 있습니다.

#### Attention: 텍스트와 음성의 정렬

---

Attention 메커니즘은 디코더가 매 타임스텝마다 **인코더 출력의 어떤 부분에 집중할지** 결정합니다. 사람이 문장을 읽으며 하나씩 발음하는 것처럼, attention이 텍스트의 각 문자와 출력 오디오 프레임 간의 정렬(alignment)을 학습합니다.

Tacotron 1에서는 Bahdanau attention(additive attention)을 사용합니다:

$$
\alpha_{ij} = \frac{\exp(e_{ij})}{\sum_{k} \exp(e_{ik})}, \quad e_{ij} = \text{score}(s_{i-1}, h_j)
$$

- $s_{i-1}$: 디코더의 이전 hidden state

- $h_j$: 인코더의 j번째 출력

- $\alpha_{ij}$: attention weight (텍스트의 j번째 문자에 대한 가중치)

#### Decoder: 멜 스펙트로그램 생성

---

Decoder는 attention context와 이전 프레임 정보를 기반으로 **멜 스펙트로그램 프레임을 autoregressive하게 생성**합니다.

1. **Pre-net**: 이전 타임스텝의 출력 프레임을 Pre-net(2층 FC + Dropout)에 통과

1. **Attention RNN**: GRU 셀을 사용하여 attention context vector를 생성

1. **Decoder RNN**: attention context와 Pre-net 출력을 결합하여 멜 스펙트로그램 프레임을 예측

1. **Reduction Factor (r)**: 한 번에 r개의 프레임을 동시에 생성하여 디코딩 속도를 높임 (논문에서는 r=5 사용)

> **Reduction Factor의 효과**
> 
> r=5로 설정하면 디코더의 반복 횟수가 1/5로 줄어들어 학습과 추론 속도가 크게 향상됩니다. 동시에 attention 학습도 쉬워지는데, 정렬해야 할 타임스텝 수가 줄어들기 때문입니다.

#### Vocoder: Griffin-Lim

---

Tacotron 1의 출력층은 **Griffin-Lim** 알고리즘을 사용합니다. 멜 스펙트로그램에서 오디오 파형으로 변환해주는 vocoder로, 별도의 학습 없이 사용할 수 있는 고전적인 알고리즘입니다.

```
Griffin-Lim 알고리즘
- 멜 스펙트로그램 → 리니어 스펙트로그램 (Post-net CBHG로 변환)
- 리니어 스펙트로그램 → 오디오 파형 (반복적 위상 추정)
- 학습이 필요 없는 신호 처리 기반 방식
- 단점: 위상 정보 손실로 인한 음질 저하 ("금속성" 느낌)
```

---

### Tacotron 2 아키텍처

---

![image](https://blog.pieroot.xyz/api/image-proxy?id=36c1836b-014b-499b-9456-3d3a8875adad&kind=s3&pageId=2ff067c0-15d0-802c-b609-ddc87c8d9410&source=block&blockId=2ff067c0-15d0-80c6-9b8a-e79573b19449)

Tacotron 2는 Tacotron 1의 구조를 **단순화**하면서도 음질을 크게 향상시킨 모델입니다. 핵심적인 변경 사항은 CBHG 블록을 LSTM + Convolution으로 교체하고, Griffin-Lim 대신 **WaveNet vocoder**를 도입한 것입니다.

#### 주요 구성 요소

Tacotron 2는 크게 두 부분으로 나뉩니다:

1. **Feature Prediction Network**: 입력 문자 시퀀스로부터 멜 스펙트로그램 프레임을 예측하는 attention 기반 seq2seq 네트워크

1. **Modified WaveNet**: 예측된 멜 스펙트로그램을 시간 도메인 파형(time-domain waveform)으로 합성하는 vocoder

이 두 구성 요소를 **멜 스펙트로그램**으로 연결합니다. 멜 스펙트로그램은 시간 도메인 파형으로부터 쉽게 계산할 수 있고, 더 낮은 차원으로 주파수 내용을 요약하며, WaveNet이 고품질의 오디오를 생성할 수 있도록 합니다.

#### Encoder (Tacotron 2)

---

Tacotron 2의 인코더는 Tacotron 1의 CBHG 블록 대신 **3층 1D Convolution + Bidirectional LSTM** 구조를 사용합니다.

1. **Character Embedding**: 512차원 임베딩 벡터로 변환

1. **3개의 Convolution Layer**: 각 레이어는 512개의 5×1 필터를 사용하며, Batch Normalization + ReLU 활성화 함수를 적용합니다. N-gram 패턴을 포착하는 역할을 합니다.

1. **Bidirectional LSTM**: 512 유닛(각 방향 256)의 양방향 LSTM으로 시퀀스의 전후 문맥을 모두 반영한 인코딩 특징을 생성합니다.

#### Attention (Tacotron 2)

---

Tacotron 2에서는 기존의 additive attention 대신 **Location-Sensitive Attention**을 사용합니다. 이전 타임스텝의 누적된 attention weight를 추가 입력으로 사용하여, 모델이 텍스트를 **순방향으로 일관되게 읽어나가도록** 유도합니다.

이 방식은 attention이 앞뒤로 왔다갔다 하거나, 특정 부분을 건너뛰는 문제를 줄여줍니다.

#### Decoder (Tacotron 2)

---

1. **Pre-net**: 2층 Fully Connected(256차원) + Dropout. 이전 멜 스펙트로그램 프레임을 bottleneck으로 처리

1. **2층 LSTM**: 1024 유닛의 uni-directional LSTM 2개를 적층. Tacotron 1의 GRU 대신 LSTM을 사용하여 장기 의존성 학습 능력 향상

1. **Post-net**: 5층 1D Convolution으로 구성된 후처리 네트워크. 멜 스펙트로그램의 전체적인 품질을 향상시키는 잔차(residual)를 예측

1. **Stop Token Prediction**: 시그모이드 출력으로 시퀀스 종료 시점을 예측하여 자동으로 생성을 멈춤

#### Vocoder: WaveNet

---

Tacotron 2에서 가장 큰 변화는 vocoder를 **WaveNet**으로 교체한 것입니다. Griffin-Lim의 "금속성" 음질 문제를 완전히 해소하고, 사람에 가까운 자연스러운 음성을 생성할 수 있게 되었습니다.

> **WaveNet이 뭔지 궁금하다면?**
> 
> WaveNet은 DeepMind이 개발한 자기회귀 모델로, 원시 오디오 파형을 샘플 단위로 직접 생성합니다. Dilated Causal Convolution 구조로 넓은 수용 영역을 확보하면서도 효율적으로 동작합니다. Tacotron 2에서는 멜 스펙트로그램을 조건으로 받아 오디오를 생성하는 **Modified WaveNet**을 사용합니다.

Modified WaveNet의 주요 변경 사항:

- 30개의 Dilated Convolution 레이어 사용 (10개 레이어 × 3 사이클)

- 멜 스펙트로그램을 Local Conditioning으로 주입

- 8-bit µ-law 대신 **Mixture of Logistics(MoL)** 분포를 사용하여 더 높은 음질 달성

---

### Tacotron 1 vs Tacotron 2 비교

---

> **학습 방법의 핵심 차이**
> 
> - **Tacotron 1**: Griffin-Lim 알고리즘을 출력층으로 사용하여 **Tacotron 모델 자체를 학습**하는 것이 중점. 내부 인코딩/디코딩에 CBHG 블록(CNN 기반)을 사용
> 
> - **Tacotron 2**: 출력층을 WaveNet으로 교체하여 **두 모델(Feature Prediction + WaveNet)을 모두 학습**. 내부 인코딩/디코딩에 LSTM을 적용하여 구조를 단순화

---

### 성능 평가

---

Tacotron 2는 MOS(Mean Opinion Score) 테스트에서 **4.526점**을 달성하여, 전문적으로 녹음된 사람 음성(4.582점)과 거의 동일한 수준의 자연스러움을 보여주었습니다.

#### Ablation 연구

모델의 다양한 구성 요소를 변경하여 실험한 결과, 다음과 같은 인사이트를 얻었습니다:

- **멜 스펙트로그램**을 중간 표현으로 사용하는 것이 리니어 스펙트로그램보다 효과적

- **Post-net** 추가 시 멜 스펙트로그램 품질이 유의미하게 향상

- WaveNet의 레이어 수를 줄여도(30 → 12) 고품질 오디오 생성 가능

- **Location-Sensitive Attention**이 기존 attention 대비 안정적인 정렬 학습을 보임

---

### 한계점

---

Tacotron이 TTS 분야에 큰 혁신을 가져왔지만, 몇 가지 명확한 한계점이 존재합니다:

1. **느린 추론 속도** 🐌: Autoregressive 방식이라 한 프레임씩 순차적으로 생성해야 함. 실시간 서비스에 직접 적용하기 어려움

1. **Attention 불안정성** ⚠️: 긴 문장이나 반복적인 구절에서 attention이 정렬을 잃어 단어를 건너뛰거나 반복하는 문제 발생

1. **대규모 학습 데이터 필요** 💰: 자연스러운 음성을 위해 수십 시간 이상의 고품질 단일 화자 데이터 필요

1. **WaveNet vocoder의 느린 속도**: Tacotron 2의 WaveNet도 autoregressive라 생성이 느림

> **이후 발전**
> 
> 이 한계를 극복하기 위해 다양한 후속 연구가 등장했습니다:
> 
> - **FastSpeech** (2019): Non-autoregressive 구조로 수백 배 빠른 추론 속도 달성
> 
> - **FastSpeech 2** (2020): Duration Predictor 개선으로 품질과 속도 모두 향상
> 
> - **VITS** (2021): End-to-end로 vocoder까지 통합, Flow 기반 생성
> 
> - **WaveGlow** (2018): Flow 기반 vocoder로 WaveNet 대비 실시간 생성 가능
> 
> 현재 프로덕션 TTS 시스템에서는 Tacotron 계열보다 **FastSpeech 2 + HiFi-GAN** 또는 **VITS** 조합이 더 많이 사용되고 있습니다.

---

### 핵심 정리

✅ **End-to-End TTS**: 텍스트에서 음성을 직접 생성, 복잡한 전처리 파이프라인 제거

✅ **Tacotron 1**: CBHG 블록 + GRU + Griffin-Lim vocoder로 end-to-end TTS의 가능성을 입증

✅ **Tacotron 2**: LSTM + Location-Sensitive Attention + WaveNet vocoder로 사람 수준의 음질 달성

✅ **Encoder**: 문자 임베딩 → Conv 레이어 → Bidirectional RNN으로 텍스트의 문맥 정보 인코딩

✅ **Attention**: 텍스트와 오디오 프레임 간의 정렬을 학습하여 순차적 생성을 가이드

✅ **Decoder**: Autoregressive하게 멜 스펙트로그램을 프레임 단위로 생성

✅ **MOS 4.526**: Tacotron 2는 사람 음성(4.582)과 거의 동일한 자연스러움을 달성

✅ **한계**: 느린 추론 속도와 attention 불안정성 → FastSpeech, VITS 등 후속 연구로 극복 중

---

### 참고 링크

> - [Tacotron 논문 (arXiv)](https://arxiv.org/abs/1703.10135)
> 
> - [Tacotron 2 논문 (arXiv)](https://arxiv.org/abs/1712.05884)
> 
> - [NVIDIA Tacotron 2 (PyTorch Hub)](https://pytorch.org/hub/nvidia_deeplearningexamples_tacotron2/)
> 
> - [Coqui TTS - Tacotron 1 & 2 문서](https://docs.coqui.ai/en/latest/models/tacotron1-2.html)
> 
> - [WaveNet 논문 (arXiv)](https://arxiv.org/abs/1609.03499)
