Tacotron2는 Google DeepMind에서 발표한 논문 'TACOTRON2 : Natural TTS Synthesis By Conditioning WAVENET On Mel Spectrogram Predictions, ICASSP 2018'이다.
동시에 논문에서 발표한 Attention모델을 이용한 Seq2Seq형태의 End-to-End TTS Acoustic Model을 말한다.
Acoustic Model에 관해서는 전 게시글에서 설명하고 있다.
End-to-End TTS
기존 TTS 시스템의 과정은 매우 복잡했다. 문자를 음성으로 변환하는 것은 난이도가 높고 복잡하기 때문에, 여러단계로 분리해 처리하는 과정 속에서 품질이 저하되는 문제가 있었다.
딥러닝 아키텍쳐를 이용해 Text-Analysis과정을 생략하고 <문장,음성>의 데이터만으로 처음부터 끝까지 한번에 진행해 좋은 품질의 음성을 생성하는 TTS를 End-to-End TTS라고 한다.
Sequence-to-sequence Model은 Transformer 아키텍쳐의 인코더와 디코더 그리고 Attention 아키텍쳐를 사용해 Text를 Mel-Spectrogram으로 변환하는 모델이다.
Mel-spectrogram에 대해 설명 하기 전, 음성에 관련된 기본 지식을 이해하고 넘어가자.
아날로그 음성 데이터를 컴퓨터로 처리할 수 있는 디지털 데이터로 만들기 위해서는 두가지 과정을 거치게 된다.
- 표본화(Sampling): 일정 시간 간격으로 음성신호를 샘플링
- 양자화(Quantization): 음성 신호의 크기를 양자화 해 연속적인 값을 특정 대푯값으로 설정
음성데이터는 다양한 주파수가 혼합되어 음성을 구성하고 있기 때문에,음성을 분해해 변환하는 과정이 필요하다.
이때, 주파수 단위로 데이터를 분할하는 퓨리에 변환(Fourier Transform)이 사용된다.
퓨리에 변환은 전체적인 음성 속 어떤 주파수와 세기의 데이터가 있는지만 표시할 뿐, 시간에 따른 주파수 변환이 어렵다.
시간에 따라 변하는 주파수를 분석하고, 주파수를 의미 있는 음성 신호로 사용하기 위해 Short Time Fourier Transform을 적용한다.
STFT는 음성을 시간에 따라 Sliding Window 방식으로 자르고 분해한다.
시간에 따른 주파수의 형태는 Spectrogram라 칭한다.
하지만 이것은 사람의 음성 특징을 고려하지 않기 때문에, 사람이 민감한 저주파에 집중할 수 있도록 처리해야한다.
Spectrogram을 사람의 귀의 특성에 맞게 고려할 수 있도록 Mel-Filter Bank를 적용해 Mel-Spectrogram으로 변환하는 것이 그 방법이다.
Mel - Spectrogram 생성과정
0.디지털 데이터에 Short Time Fourier Transform을 적용해 Spectrogram을 만든다.
1.주파수 참조 간격에 따른 Mel Bank를 만들고 Gaussian과 같은 특정 모양으로 가중치를 생성한다.(Mel-Filter Bank Log Transform)
2.Mel Bank에 해당하는 주파수를 weight sum해 Spectrogram의 주파수 간격을 재조정하면 Mel-Spectrogram이 생성된다. (Mel-Scale 적용)
앞서, Tacotron2에 대해 Transformer 아키텍쳐의 인코더와 디코더 그리고 Attention 아키텍쳐를 사용한 Sequence-to-sequence Model이라고 설명했다.
자세한 과정은 다음과 같다.
1)Text 전처리
2)Encoder
3)Attention
4)Decoder
Text -> Char 단위의 정수열로 변환하는 과정이다. (one-hot encoding 사용)
19개의 초성, 21개의 중성, 27개의 종성, 특수문자와 같이 음절단위를 분리한다.
이때 초성과 종성을 구분해 encoding하는게 중요하다.
ex) 나는 -> ㄴ ㅏ ㄴ ㅡ ㄴ -> 0 8 0 4 3
초성ㄴ과 종성ㄴ을 다른 값으로 처리한다.
특징을 추출하는 과정이다.
TTS에서 사용하는 Attention은 일반적인 Attention과 다르다.
Attention은 매 시점 Decoder에서 사용할 정보를 Encoder에서 추출하고 할당하는 역할을 한다. 특징시점의 Decoder 쿼리로 Encoder 정보를 추출하기 때문에 매 시점의 할당 정보가 달라진다.
TTS Attention 은 일반적인 Attention과 달리 시점 정보를 활용한다.
t시점에 사용할 정보는 t-1시점의 Attention Alignment 정보를 필요로 한다.
Attention에서 얻은 정보와 이전 시점의 Mel-Spectrogram을 이용해 다음과 같은 동작을 수행한다.
4-1)현재시점 Mel-Spectrogram 생성
4-2)현재시점 종료 확률 계산
4-3)Mel-Spectrogram 품질 향상
Pre-Net : Fully Connectied Linear Layer (512dim) + ReLU
이전 시점 생성된 Mel-Vector(STFT계산)을 바탕으로 정보 추출한다.
Decoder LSTM : uni-deriect LSTM Layer
Attention과 연계해 현재 시점 정보를 생성한다.
Decoder LSTM을 기억하자.
이후 발전된 Tacotron은 LSTM-based decoder의 방법이 효율적이지 못하다 지적하며 다른 방식의 Tacotron(Parallel Tacotron)을 제안한다.
FC Layer : Fully Connected Linear Layer (Mel dim)
현재 시점 Mel-Spectrogram을 생성한다.
Total Loss = MSE Loss + BCE Loss