본문 바로가기

TTS

JDI-T: Jointly trained Duration Informed Transformer for Text-To-Speech without Explicit Alignment

저자: Dan Lim, Won Jang, Gyeonghwan O, Heayoung Park, Bongwan Kim, Jaesam Yoon

 

TTS inference를 parallel하게 돌리기 위해서는 Transformer, GAN, Flow 같은 non-sequential한 모델이 필요할 뿐만 아니라, duration predictor가 필요하다.

inference할 때 duration predictor가 없으면 autoregressive하게 한땀 한땀 입력 텍스트와 이전 프레임을 보고 이에 걸맞는 새 프레임을 생성해야 한다.

하지만 duration predictor가 있다면 parallel하게, 이전 프레임에 대한 디펜던시 없이 inference를 할 수 있다.

 

GlowTTS는 고전적인 DP로 해결하되, DP가 잘되냐, 못되냐를 평가하는 cost를 latent variable z의 i번째 text에 대한 조건부 확률로 표현한 likelihood로 두었다. 이 likelihood를 최대화하는 attention을 G.T.러 하여 duration predictor가 훈련된다. 모델 파라미터 스페이스에 alignment space까지 포함하면 search spacer가 너무 넓어지기 때문에 모델 파라미터 업데이트와 alignment search를 iterative하게 하는 트릭을 사용하였다.

 

JDI-T에서는 explicit하게 autoregressive decoder를 둔다는 점이 GlowTTS보다는 FastSpeech와 유사하지만, 2-phase의 훈련이 필요하지 않다는 점에서는 GlowTTS와 유사하다. 한번에 autoregressive decoder와 feedforward decoder, duration predictor를 훈련시킨다. 이랬을 때 드는 의문은 당연히, '초기 alignment가 쓰레기값일텐데, 저게 똑바로 수렴할까?'이다. 이를 극복하려고 CTC Loss와 Guided attention loss를 추가한다. 

* CTC loss: 음소인식기를 autoregressive decoder output에 다는 효과. 

* Guided attention loss: monotonous filter를 autoregressive decoder의 attention matrix에 씌우는 효과

위의 방법으로 autoregressive TTS의 alignment가 비교적 처음부터 유의미하게 뽑아질 수 있고 모델도 수렴할 수 있었다고 한다.

그런데 여기서 드는 의문이 있다.

JDI-T에서 사용한 forward attention algorithm도 말하자면 dynamic programming의 soft attention 버전이라고 할 수 있는데, GlowTTS에서는 어떻게 CTC loss나 Guided attention loss 같은 특별한 트릭 없이 모델이 수렴할 수 있었을까? 

이 alignment 부분은 내 전문분야도 아니고, 그냥 막연한 추측이지만, Hard alignment가 soft alignment보다 powerful한 것에 기인하지 않을까?

 

  JDI-T GlowTTS
Baseline Transformer Glow
훈련을 one-pass로 만든 핵심 Autoregressive decoder, feedforward decoder와 duration predictor를 동시에 훈련 Latent variable의 log likelihood를 최대화하는 alignment를 찾도록 frame sequence와 text sequence 사이에서 dynamic programming
초기 쓰레기 alignment 극복 방법 * CTC loss on teacher decoder output
* Guided attention loss
언급 없었던 것 같음..
기타 트릭   Search space 줄여 연산 가능하게 만들기 위해 $\theta update과 A* update을 iterative하게 했다.

 

+ Attention error나 total training time 측면에서 실험한 것도 있으면 좋겠는데 음질 결과밖에 없는게 좀 아쉽다.