| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Instagrame clone
- expo
- python
- ReactNative
- 데이터분석
- coding
- TeachagleMachine
- 강화학습
- 앱개발
- App
- JavaScript
- pandas
- 논문리뷰
- DeepMind
- 클론코딩
- clone coding
- 전국국밥
- 사이드프로젝트
- FirebaseV9
- TTS
- selenium
- 카트폴
- 딥러닝
- Ros
- 머신러닝
- Reinforcement Learning
- 강화학습 기초
- Ai
- 음성합성
- React
- Today
- Total
qcoding
[AI논문리뷰] Tacotron 2 - 텍스트에서 사람에 가까운 음성을 만드는 두 단계 신경망 본문
📄 한 문단 요약
Tacotron 2는 "텍스트를 어떻게 사람 목소리처럼 읽게 만들 것인가"라는 TTS 문제를 두 단계로 나눈 논문이다. 첫 번째 네트워크는 문자 입력을 80채널 mel spectrogram으로 변환하고, 두 번째 WaveNet vocoder는 그 spectrogram을 실제 waveform으로 합성한다. 핵심 결과는 MOS 4.526으로, 전문 성우 녹음의 4.582에 가까웠다. 이 논문의 가치는 점수가 높다는 데만 있지 않다. 텍스트 정렬, 음향 표현, 파형 생성을 한 덩어리로 억지로 풀지 않고, mel spectrogram이라는 중간 표현을 두어 각각 학습 가능한 문제로 분리한 설계에 있다.
이 논문은 무엇을 해결하려고 했나?
이 논문이 겨냥한 문제는 text-to-speech, 즉 문장을 자연스러운 음성으로 합성하는 것이다. 기존 TTS는 오랫동안 발음 사전, 언어학적 특징, 음소 지속 시간, 기본 주파수 같은 중간 특징을 사람이 많이 설계했다. 이런 방식은 잘 만들면 안정적이지만, 시스템 전체가 복잡해지고 언어·화자·데이터 조건이 바뀔 때 손이 많이 간다.
Tacotron 2의 질문은 꽤 실용적이다. "텍스트와 음성 쌍 데이터만으로, 복잡한 feature engineering 없이, 실제 녹음에 가까운 음성을 만들 수 있는가?" 논문은 이 질문에 대해 완전한 한 덩어리 모델 대신, feature prediction network와 WaveNet vocoder를 결합한 구조로 답한다. 즉 텍스트에서 바로 waveform을 만들기보다, 먼저 음성의 시간-주파수 지도를 만들고, 그 지도를 바탕으로 파형을 만든다.
배경지식과 핵심 키워드
이 논문을 읽을 때 알아두면 좋은 핵심 개념 다섯 가지다.
기존 방법의 한계
논문이 지적하는 이전 흐름은 크게 세 갈래다. Unit selection 기반 concatenative TTS는 녹음 조각을 이어 붙이는 방식이라 자연스러운 구간에서는 강하지만, 데이터베이스 밖 조합이나 연결부에서 한계가 생긴다. Statistical parametric TTS는 더 유연하지만 vocoder를 거치며 음질이 부드럽고 탁해지는 문제가 있었다. WaveNet 계열은 음질은 좋지만, 언어학적 특징·duration·F0 같은 조건을 넣기 위해 여전히 복잡한 전처리 파이프라인에 기대는 경우가 많았다.
초기 Tacotron은 텍스트에서 spectrogram을 예측하고 Griffin-Lim으로 파형을 복원했다. 여기서 bottleneck은 vocoder였다. Griffin-Lim은 phase를 추정해서 음성을 복원할 수 있지만, 신경망 vocoder만큼 선명한 음질을 내기 어렵다. Tacotron 2는 이 약점을 정확히 찌른다. prosody를 잡는 Tacotron식 seq2seq와 음질이 좋은 WaveNet을 연결하되, 둘 사이의 접착제로 mel spectrogram을 사용한다.
제안 방법의 핵심 아이디어
Tacotron 2의 핵심은 "텍스트 이해와 파형 생성을 분리하되, 그 사이를 너무 사람이 설계한 특징으로 채우지 않는다"는 점이다. Feature prediction network는 문자 sequence를 받아 mel spectrogram frame을 한 장씩 예측한다. 이 과정에서 attention은 입력 문장과 출력 시간축을 정렬한다. 그리고 WaveNet vocoder는 예측된 mel spectrogram을 조건으로 받아 실제 waveform sample을 생성한다.
mel spectrogram이 좋은 중간 지점인 이유는 양쪽 모두와 잘 맞기 때문이다. 텍스트 네트워크 입장에서는 waveform보다 예측하기 쉽다. WaveNet 입장에서는 linguistic feature보다 음향에 가까운 조건이라 더 작은 구조로도 좋은 결과를 낼 수 있다. 논문은 이 선택이 WaveNet 구조를 줄이는 데도 도움이 된다고 보고한다.
핵심 인사이트
mel spectrogram은 "텍스트 네트워크에는 예측하기 쉬운 타깃, WaveNet에는 음향에 가까운 조건"이라는 두 조건을 동시에 만족하는 중간 표현이다. 이 선택 하나가 전체 파이프라인의 학습 안정성을 결정한다.
모델 구조/알고리즘 흐름
입력 문자는 512차원 character embedding으로 바뀐다. 그 뒤 512개 filter를 가진 3개의 convolution layer가 문자 주변 문맥을 잡고, 512 unit bidirectional LSTM이 인코딩한다. Decoder는 location-sensitive attention으로 현재 참조할 입력 위치를 정한다.
Decoder 쪽에서는 이전 mel frame을 pre-net에 넣는다. 이 pre-net은 256 hidden ReLU unit을 가진 fully connected layer 2개로 구성된다. 논문은 이 pre-net이 attention을 배우는 데 중요한 information bottleneck으로 작동했다고 설명한다. 이후 attention context와 합쳐진 표현이 1024 unit LSTM 2개를 지나고, linear projection으로 mel spectrogram frame을 예측한다.
예측된 mel은 5-layer convolutional post-net을 통과해 residual 보정을 받는다. 학습 손실은 post-net 전후 예측 모두에 대해 MSE를 더한 형태다. 동시에 stop token도 예측한다. inference에서는 stop 확률이 0.5를 넘는 첫 frame에서 생성을 끝낸다.
WaveNet vocoder는 30개의 dilated convolution layer를 3개의 dilation cycle로 묶어 사용한다. 출력 분포는 8-bit mu-law softmax 대신 mixture of logistics를 쓴다. 학습은 두 네트워크를 따로 한다. 먼저 feature prediction network를 teacher-forcing으로 학습하고, 그 다음 예측 mel과 waveform이 정렬되도록 WaveNet을 학습한다.
논문 그림/표로 이해하기
논문 Table 1의 핵심 결과를 아래 표로 정리했다.
| 모델 | MOS | 95% CI |
|---|---|---|
| Parametric (baseline) | 3.492 | ±0.096 |
| Concatenative (baseline) | 4.166 | ±0.091 |
| Tacotron + Griffin-Lim | 4.001 | ±0.087 |
| WaveNet + Linguistic Features | 4.341 | ±0.051 |
| ✦ Tacotron 2 (제안) | 4.526 | ±0.066 |
| Ground Truth (실제 녹음) | 4.582 | ±0.053 |
위 결과에서 가장 눈에 띄는 것은 Tacotron 2의 MOS 4.526이다. Ground truth 녹음은 4.582였고, WaveNet에 linguistic feature를 조건으로 준 비교 모델은 4.341, 기존 Tacotron과 Griffin-Lim 조합은 4.001이었다. Tacotron 2의 개선은 "seq2seq를 썼다" 하나만으로 설명되지 않는다. Griffin-Lim을 WaveNet vocoder로 바꾼 효과, 그리고 WaveNet 조건을 linguistic feature가 아니라 mel spectrogram으로 둔 효과가 함께 작동한다.
논문은 Table 2에서도 중요한 관찰을 남긴다. WaveNet을 ground truth mel로만 학습시키고 inference에서 예측 mel을 넣으면 품질이 떨어진다. 반대로 예측 mel에 맞춰 학습한 WaveNet이 실제 inference 조건에 더 잘 맞는다.
실험 설정과 결과 해석
데이터셋은 내부 US English 데이터로, 단일 전문 여성 화자의 24.6시간 음성이다. 모든 텍스트는 normalized text로 처리된다. 예를 들어 숫자 "16"은 "sixteen"처럼 풀어 쓴다. 평가에는 테스트셋에서 고정된 100개 예문을 뽑고, 각 음성 샘플을 최소 8명의 평가자가 1-5점, 0.5점 간격으로 평가했다.
주요 결과는 세 가지로 볼 수 있다. 첫째, Tacotron 2는 기존 production baseline인 parametric 3.492, concatenative 4.166을 모두 넘었다. 둘째, 기존 Tacotron + Griffin-Lim의 4.001보다 훨씬 높다. 이 차이는 vocoder의 중요성을 보여준다. 셋째, ground truth 4.582와 Tacotron 2 4.526의 차이는 작지만, side-by-side 평가에서는 여전히 실제 녹음 쪽 선호가 통계적으로 유의하게 있었다. 평가자 코멘트에서 주요 원인은 occasional mispronunciation이었다.
추가 평가도 흥미롭다. 별도 100문장 테스트에서는 반복 단어 0개, 오발음 6개, skipped words 1개, 부자연스러운 prosody 23개가 관찰되었다. endpoint prediction 실패는 가장 긴 문장 1건이었다. 이 결과는 모델이 attention 정렬은 꽤 안정적으로 배웠지만, 강세·억양·발음의 세부 품질은 아직 남은 문제였다는 뜻이다.
핵심 인사이트 — Vocoder 학습 분포
WaveNet을 ground truth mel로만 학습하면 inference 시 예측 mel의 분포와 달라져 음질이 무너진다. Vocoder는 반드시 feature predictor가 실제로 생성하는 mel 분포에 맞춰 학습(또는 fine-tune)해야 한다. train/inference 분포 일치가 품질의 열쇠다.
한계와 비판적 관점
첫 번째 한계는 데이터 조건이다. 논문은 24.6시간의 단일 전문 여성 화자 영어 데이터로 학습했다. 따라서 이 결과를 다화자, 감정 표현, 소음 많은 녹음, 한국어 같은 다른 언어로 그대로 일반화하기는 어렵다. 특히 한국어 TTS에서는 형태소, 숫자 읽기, 조사와 억양, 한자어 발음 같은 전처리 문제가 다시 등장한다.
두 번째 한계는 완전한 end-to-end라고 부르기에는 조심스럽다는 점이다. 텍스트에서 음성까지 신경망으로 이어지지만, feature prediction network와 WaveNet은 별도로 학습된다. 이 분리는 안정성과 품질 면에서 장점이지만, 전체 목적 함수를 waveform 품질 하나로 직접 최적화하는 구조는 아니다.
세 번째는 inference 비용이다. 논문 시점의 WaveNet은 autoregressive waveform 생성이라 품질은 좋지만 빠르지 않다. 이후 Parallel WaveNet, WaveRNN, HiFi-GAN 같은 vocoder 연구가 중요해진 이유도 여기에 있다. Tacotron 2를 서비스에 쓰려면 모델 구조뿐 아니라 생성 속도와 배포 비용을 같이 봐야 한다.
구현하거나 응용한다면 무엇을 봐야 하나?
직접 구현 관점에서는 세 가지를 먼저 봐야 한다.
text normalization: 논문은 normalized text를 사용한다. 실제 제품에서는 숫자, 약어, 날짜, 단위, 외래어를 어떻게 읽을지 정하는 전처리가 품질을 크게 좌우한다.
attention 안정성: Tacotron류 모델은 문장 길이가 길어지면 반복, 생략, 조기 종료 문제가 생길 수 있다. 논문이 location-sensitive attention과 stop token을 강조한 이유도 여기에 있다. 학습 로그에서는 loss뿐 아니라 alignment plot을 계속 확인해야 한다.
vocoder 학습 데이터 분포: 논문 Table 2가 보여주듯이 vocoder는 inference 때 받을 mel과 비슷한 분포로 학습해야 한다. ground truth mel로만 학습한 vocoder가 항상 좋은 것은 아니다. feature predictor가 만든 약간 oversmoothed mel을 실제로 넣어 보고, 그 조건에 맞춰 vocoder를 학습하는 과정이 필요하다.
응용 면에서는 이 논문을 "현대 음성 생성의 출발점"으로 읽으면 좋다. 지금은 diffusion TTS, flow matching, neural codec language model 같은 더 강한 방법이 많지만, 텍스트와 음성을 중간 표현으로 연결하고 vocoder로 복원한다는 발상은 여전히 많은 시스템의 기본 골격으로 남아 있다.
한 줄 결론과 다음에 읽을 논문
한 줄로 말하면, Tacotron 2는 mel spectrogram을 중심에 놓고 seq2seq의 정렬 능력과 WaveNet의 음질을 결합해, 신경망 TTS가 실제 녹음에 가까워질 수 있음을 보여준 논문이다.
다음에 읽을 논문으로는 원형이 되는 Tacotron 논문, raw audio 생성의 기반인 WaveNet, 그리고 inference 속도 문제를 다룬 Parallel WaveNet을 추천한다. Tacotron 2를 제대로 이해하려면 "mel spectrogram 예측기"와 "neural vocoder"를 따로 떼어 읽는 편이 훨씬 선명하다.
출처
- 논문: https://arxiv.org/abs/1712.05884
- PDF: https://arxiv.org/pdf/1712.05884
- Google Tacotron 2 샘플 페이지: https://google.github.io/tacotron/publications/tacotron2