상세 컨텐츠

본문 제목

[논문 리뷰 스터디] Natural TTS Synthesis by Conditioning WaveNet on Mel Spectrogram Predictions

심화 스터디/논문 리뷰 스터디

by 임청수 2023. 5. 4. 00:55

본문

 

 

작성자 : 17기 임청수

 

본 논문은 대중적인 TTS(Text to Speech)모델인 Tacotron2을 설명합니다. Tacotron2의 특징은 다음과 같습니다.

 

1. Attention기반 Seq-to-Seq TTS 모델 구조를 제시합니다.

2. <문장, 음성> 쌍으로 이루어진 데이터로 별도의 작업없이 학습이 가능한 End-to-End 모델입니다.

3. 음성합성 품질 테스트(MOS)에서 높은 점수를 획득하였습니다. 

 

 

TTS(text to Speech)란 텍스트를 음성으로 변환하는 기술을 의미합니다. 흔히 음성 합성이라고 부르기도 합니다. 마치 사람이 말하는 것처럼 음성을 만들어내는 기술입니다. 주변에서 쉽게 볼 수 있지만 잘 모르는 경우가 많습니다. 예를 들어 지하철 안내음성, 연예인 오디오북, 트위치 방송 음성 도네이션, 유튜브 shorts 등이 있습니다. 

 

이러한 TTS 기술은 1) 문자열을 처리하고 2) 문자에 맞는 운율(리듬감)을 검색한 후  3)음성 조각을 선택하고 4)음성을 합성하는 과정을 포함합니다.  각 작업이 매우 어렵고 전문가의 지식이 필요했기 때문에 어려움이 많았습니다. 

 

하지만 딥러닝을 도입하면서 별도의 작업없이 <문장, 음성> 쌍의 데이터만 있으면 TTS 모델 개발이 가능해졌습니다. 전문가의 지식 없이도 개발이 가능해졌고 4개의 작업으로 나누어 개발하는 것이 아니라 End-to-End 모델로 구조를 변경하면서 음성 합성의 성능도 개선되었습니다. 

 

 

0. 음성특징 추출

 

일반적으로 음성 데이터는 다양한 주파수의 목소리가 섞여 있습니다. 따라서 데이터를 그대로 활용하기보다는 음성을 분해하여 학습이 잘 되도록 변환하는 과정이 필요합니다. 

 

여러가지 주파수로 뭉쳐있는 음성 데이터를 세밀하게 분석하기  위하여 주파수 단위로 분해하는 작업을 푸리에 변환이라고 합니다. 

푸리에 변환을 통해서 음성을 분해하여 주파수와 그 주파수의 세기를 추출할 수 있습니다. 

 

이러한 푸리에 변환은 시간에 따른 각 주파수의 변화를 반영하지 못한다는 한계가 있습니다. 이를 해결하기 위해서 숏타임 푸리에 변환(Short Time Fourier Transform : STFT)을 활용합니다. 숏타임 푸리에 변환은 슬라이딩 윈도우를 만들어 음성을 일정한 길이로 잘라서 시간 흐름에 따른 주파수의 변화를 반영하는 것입니다. 

 

Short Time Fourier Transform

 

위 그림에서 음성 데이터를 일정한 간격으로 자른 후 각각 푸리에 변환을 적용하여 나타낸 것이 가운데 그림입니다. 같은 세로축이면 동일한 시간대를 의미하고 각 시간대마다 3개의 주파수로 분해된 모습을 나타냅니다. 

 

우측은 스펙트로그램(Spectrogram)으로 소리의 스펙트럼을 시각화하여 그래프로 표현하는 기법입니다. 

x축은 시간의 변화, y축은 주파수 크기, z축은 진폭을 의미합니다. 주파수가 높을수록 남성보다는 여성목소리에 가깝고, 진폭이 클수록 더 큰 소리를 의미합니다. 

 

 

하지만 Spectrogram은 실제 사람이 음성을 인식한 결과와 차이가 있습니다. 사람은 달팽이관 구조에 의해 고주파보다 저주파를 더 잘 인식합니다. 이러한 특징을 반영하기 위해서 Mel Filter Bank를 활용합니다.

Mel Filter Bank의 기본 아이디어는 사람의 청력은 1000Hz 이하의 주파수에서만 민감하므로 1000Hz까지는 Linear하게, 그 이상은 Log scale로 변환해주자는 것입니다. 

 

다시 말해 기존의 Hertz scale에서는 5000Hz와 8000Hz를 들었을 때 3000Hz가 차이난다는 것을 사람이 인지하지 못합니다. 따라서 이를 사람이 쉽게 인지 가능한 log scale로 변환해준 것이 Mel scale입니다. 앞서 설명한 것처럼 1000Hz까지는 Linear하게 변환하다가 그 이후로는 Mel scale triangular filter를 만들어 곱해줍니다. 

 

Mel Filter Bank(https://hyunlee103.tistory.com/46)

이 과정을 거치면 최종적으로 아래와 같은 Mel spectogram을 얻게 됩니다. 

 

본 논문에서 설명하는 Tacotron2는 위 그림의 Mel spectrogram을 생성하는 모델입니다.

 

TTS 모델은 텍스트를 받아 음성을 합성합니다. 따라서 최종 Input과 Output은 각각 텍스트와 음성입니다. 하지만 텍스트로부터 바로 음성을 생성하는 것은 어려운 작업이므로 Tacotron2 논문에서는 TTS를 두단계로 나누어 처리합니다.

 

모델의 음성 생성과정은 두 가지로 나누어 수행됩니다.

Task 1 : 텍스트로부터 Mel-Spectrogram을 생성하는 단계

Task 2 : Mel-Spectrogram으로부터 음성을 합성하는 단계

 

Task1에서는 Tacotron2 모델이 사용되고 Task2에는 WaveNet이라는 모델이 사용됩니다. 

 

모델학습 단계 예시 (https://joungheekim.github.io/2020/10/08/paper-review/)

 

1. Tacotron2 전처리

 

한글 텍스트 인코딩

 

한글 문장을 초성, 중성, 종성과 같이 모두 다른 character로 분해합니다. 이후 전처리한 character를 one-hot encoding하여 정수로 변환합니다. 

 

 

 

2. Encoder

 

Encoder는 Input값을 Encoder feature로 변환하는 역할을 합니다. Encoder는 character embedding, 3개의 convolution Layer, Bi-directional LSTM으로 구성되어 있습니다.

 

Input값으로 정수열이 들어오면 Embedding Matrix를 통해 512차원의 embedding vector로 변환됩니다. 이후 3개의 conv-layer(1D convolution layer + batch norm)을 지난 후 bi-LSTM layer를 거쳐서 encoding된 feature를 추출합니다.

3. Attention

 

Attention은 single vector에 한 문장의 의미를 완벽하게 담을 수 없기 때문에 필요한 순간에, 필요한 정보를 사용하기 위한 방법입니다. 기본적으로 query vector와 key vector의 조합으로 attention weight가 계산됩니다. 여기서 “조합”의 방법에는 크게 두 가지가 있습니다. 하나는 Additive Attention으로 query vector와 key vector에 feed-forward network를 적용한 것이고, 다른 하나는 Dot-Product Attention으로 문자그대로 query vector와 key vector의 dot-product를 이용한 것입니다. 

 

Tacotron2논문에서는 Additive Attention을 활용합니다.

위 식에 따르면 W,V,w,b는 가중치이며 t-1 시점의 Decoder LSTM에서 생성된 feature와 t시점에 Encoder bi-LSTM에서 생성된 feature를 활용하여 t시점의 attention score를 계산합니다. 

 

Tacotron2 모델은 Location sensitive Attention을 사용합니다. Location sensitive attention이란 앞서 설명한 Additive attention에 attention alignment 정보를 추가한 것입니다. 

 

 

 

이전 시점(t−1)에서 생성된 attention alignment(t-1)를 이용하여 다음 시점(t) Attention alignment(t)를 구할 때 추가로 고려한 형태입니다. k개의 filter를 갖고 있는 1D convolution을 이용하여 Attention alignment(t−1)를 확장하여 f matrix를 생성합니다. 이후 학습이 가능한 가중치(U)와 내적하여 활용합니다.

 

 

4. Decoder 

 

Decoder의 역할은 3가지입니다.

이전 시점에서 생성된 Mel-spectrogram을 이용하여,

 

1) 현재시점의 Mel-spectrogram을 생성

2) 현재시점의 모델 학습 종료확률을 계산

3) Mel-spectrogram의 품질을 향상

 

 

Decoder Pre-Net, Decoder LSTM, Projection Layer, Post-Net으로 구성됩니다.

 

Pre-Net은 2개의 Fully Connected Layer + ReLU함수로 구성되어 있습니다. 이전 시점에서 생성된 mel-spectrogram이 decoder의 input으로 들어오면 가장먼저 Pre-Net을 통과합니다. Pre-Net은 bottle-neck 구간으로써 중요 정보를 거르는 역할을 합니다.

 

Decoder LSTM은 2개의 uni-directional LSTM Layer(1024 dim) 으로 구성되어 있습니다. Pre-Net을 통해 생성된 vector와 이전 시점(t−1)에서 생성된 context vector(t−1)를 합친 후 Decoder LSTM을 통과합니다. Decoder LSTM은 Attention Layer의 정보와 Pre-Net으로부터 생성된 정보를 이용하여 특정 시점(t)에 해당하는 정보를 생성합니다.

 

Decoder LSTM에서 생성된 매 시점(t) vector는 두개로 분기되어 처리됩니다.

  1. 모델 종료 조건의 확률을 계산하는 경로
  2. mel-spectrogram을 생성하는 경로

모델 종료 조건의 확률을 계산하는 경로는 Decoder LSTM으로부터 매 시점 생성된 vector를 Fully Connected layer를 통과시킨 후 sigmoid 함수를 취하여 0에서 1사이의 확률로 변환합니다. 이 확률이 Stop 조건에 해당하면 mel-spectrogram 생성을 멈춥니다. 

 

 

mel-spectrogram을 생성하는 경로는 Decoder LSTM으로부터 매 시점 생성된 vector와 Attention에서 생성된 context vector를 합친 후 Fully Connected Layer를 통과시킵니다. 이렇게 생성된 mel-vector는 Decoder의 다음 시점의 input이 됩니다.

 

 

Decoder는 mel-spectrogram의 품질을 향상시키는 역할도 수행합니다. Post-Net은 5개의 1D Convolution Layer로 구성되어 있습니다. Post-Net은 mel-vector를 보정하는 역할을 하며 Tacotron2 Task1의 최종 결과물인 mel-spectrogram의 품질을 높이는 역할을 합니다.

 

 

 

5. 평가

모델을 평가하기 위한 데이터로 약 24시간동안 한 사람의 음성을 담은 US English dataset을 이용합니다.

피실험자에게 음성을 들려주고 1점에서 5점까지 0.5점씩 증가하여 점수를 매기는 mean opinion score(MOS) 테스트를 진행합니다.

 

위 그림에서 Ground truth가 실제 사람의 음성을 평가한 것이고, Tacotron2가 생성된 음성을 평가한 것인데 두 Mos값이 오차 범위 내에서 겹치는 모습을 확인할 수 있습니다. 따라서 사람의 음성과 큰 차이가 없음을 알 수 있습니다.

 

<Reference>

https://www.youtube.com/watch?v=BmD8OA9FGR0 

https://joungheekim.github.io/2020/10/08/paper-review/

https://chldkato.tistory.com/176

https://velog.io/@seven7724/Attention-Mechanism

 

 

 

 

 

 

 

 

관련글 더보기

댓글 영역