chldkato

DCTTS 정리 본문

딥러닝

DCTTS 정리

chldkato 2020. 10. 28. 17:17

DCTTS 논문은 타코트론과 타코트론2 사이에 발표됐다

 

DC는 deep convolutional 인데 lstm, gru 같은 recurrent layer가 하나도 없는 것이 특징이다

 

모든 레이어가 1d convolution이고 dilation을 적용해서 recurrent와 같이 유사하게 동작한다

 

DCTTS의 구조인데 convoluton으로 이루어진 seq2seq라고 생각하면 이해하기 쉽다

 

TextEnc, Attention, AudioEnc, AudioDec를 합쳐서 Text2Mel이라고 하고 이후는 SSRN이라고 칭했다

 

text2mel은 말그대로 텍스트를 입력해서 멜-스펙을 출력하도록 한다

 

SSRN은 멜-스펙을 입력해서 stft를 출력하는데 타코트론에서 post CBHG랑 역할이 같다

 

 

1. 데이터 전처리

 

데이터 전처리는 타코트론과 똑같다

 

다만 차이점은 reduction에 있다

 

타코트론에는 reduction이란게 있는데 멜-스펙 출력을 몇 개를 출력할지 설정한다

 

'안녕하세요' 를 출력한다고 할때 추정되는 멜-스펙 길이가 10이라고 할때 reduction이 1이라면

 

멜-스펙 출력은 [batch, 10, mel_dim=80]이 될것이다

 

만약 reduction이 5라면 멜-스펙 출력은 [batch, 10 // 5 = 2, 80 * 5 = 400]이 된다

 

 

dctts는 이런 방식이 아니라 학습 데이터의 멜-스펙 길이 자체를 줄인다

 

reduction이 4이고 길이가 20인 데이터가 있다면 20 // 4 = 5 만큼의 길이만 뽑아서 학습한다

 

줄인만큼 나중에 다시 늘려야하기 때문에 eduction을 수정하면 SSRN의 layer도 수정해야한다

 

 

2. Text2Mel

 

1d conv를 계속 쌓은 구조이기 때문에 크게 설명할만한 부분은 없다

 

어텐션은 Luong을 사용했다

 

타코트론의 CBHG 처럼 highway를 적용한 conv이 있다는 점

 

audioenc, audiodec에서는 dilation이 적용된 causal conv라는 점 정도가 특징이다

 

 

3. SSRN

 

SSRN도 1d conv를 쌓는 구조인데 1d conv transpose가 들어간다

 

데이터 전처리에서 멜-스펙의 길이를 4만큼 줄였기 때문에 1d conv transpose가 두번 들어가서 

 

다시 길이를 4만큼 늘여서 스펙트로그램을 복원한다

 

 

4. Loss

 

text2mel에서 loss는 3개가 있다

 

가장 기본이 되는 멜-스펙 출력과 타겟 간의 MSE loss가 있고 여기에 cross entropy loss도 추가했다

 

그리고 guided attention loss라는게 있는데 TTS의 경우 attention 그래프가 일직선인것을 이용했다

 

가운데에 나란히 대각선으로 직선이 되는 함수를 하나 만들고 여기에 가까워지도록 loss를 만들었다

guided attention이 있는 것과 없는 것의 차이라고 논문에 나온 그래프이다

 

실제로 해봤을 때 cross entropy loss는 없어도 별 차이가 없었고

 

guided attention은 있으면 그래프가 잘 나오긴 하는데 최종 출력에는 크게 영향을 끼치지 않았다

 

 

DCTTS는 recurrent layer가 없어도 TTS를 잘 구현할 수 있다는데 의의가 있다

 

학습 속도는 타코트론보다 빨랐고 최종 출력도 크게 차이나지 않았다

'딥러닝' 카테고리의 다른 글

한국어 노래 합성 정리  (8) 2022.09.19
Montreal Forced Aligner (MFA) 한국어 사용법  (25) 2021.06.02
Tacotron2 정리  (0) 2020.05.08
윈도우에서 MelGAN 학습하기  (42) 2020.04.08
Tacotron 정리  (8) 2020.04.03
Comments