제목: Parallel Tacotron: Non-Autoregressive and Controllable TTS
저자: Isaac Elias, Heiga Zen, Jonathan Shen, Yu Zhang, Ye Jia, Ron J. Weiss, Yonghui Yu
소속: Google
발표: ICASSP 2021
오디오샘플: https://google.github.io/tacotron/publications/parallel_tacotron/
- Parallel Tacotron
- 이름대로 Tacotron에 기반하였지만 non-autoregressive방식의 neural TTS.
- variational autoencoder-based residual encoder를 이용하여 speech의 잔잔한 특성을 살려 naturalness를 높임.
- lightweight convolutions을 사용했는데 TTS에 특히 적합한 모델이어서 Transformer보다 더 나은 성능을 보여주었음.
- iterative spectrogram loss 방식을 사용하니 성능이 '약간' 더 올라갔음
Story
Tacotron2[Shen18]은 확실히 좋은 TTS임(같은 회사 제품 칭찬). 그런데 이 모델은 LSTM-based decoder를 사용함. 따라서 그렇게 효율적인 방법은 아님. 또한 teacher forcing 방법을 사용하여 훈련하는데 이러면 훈련과 현실의 괴리(;)가 생길 수 있음. 또한 soft attention mechanism을 사용하는데 이로 인해 단어를 반복한다든지 건너뛴다든지 이런저런 에러가 발생하게 됨. 물론 [Shen20]등에서도 Tacotron2의 개선사항을 소개하였지만, 여기에서도 다른 몇가지의 발전 방향을 보여주겠음.
Parallel Tacotron
전체 아키텍쳐는 아래와 같음
크게 보면 input encoder(파랑), residual encoder(보라), duration decoder(분홍), upsampling block(하양), spectrogram decoder(오렌지)등으로 구성되어 있음.
모델은 Transformer 혹은 lightweight convolution(LConv)와 함께 self-attention 블락을 많이 사용함. LConv는 몇몇 output channel들을 공유하고, 시간에 따라서 weight가 normalized되는 형태의 depth-wise convolution임[Wu19]. 이는 일반적인 convolution보다 훨씬 적은 파라미터를 가지고 있음. Transformer기반 self-attention과는 달리, LConv는 고정된 context window를 가지고 같은 웨이트를 재사용함. 이러한 특징은 서로 연관있는 context들이 근처에 있는 TTS에 특히 유용하게 작용될 수 있음. 위 그림에 LConv Block 컴포넌트들을 찾아볼 수 있음.
Input Encoder
Tacotron2[Shen18]처럼 input encoder는 phoneme embedding lookup 뒤에 3개의 conv block이 이어지고 positional embedding이 더해지고 6개의 Transformer가 적용됨. 이렇게 인코딩된 결과값은 contextual phoneme representation이라고 할 수 있음. 이제 여기에 speaker embedding과 residual encoder로부터 들어오는 latent representation이 더해지게 됨.
Variational Residual Encoder
두 가지 다른 종류의 VAE가 적용될 수 있음. 하나는 [Hsu19]와 유사한 global VAE(per speaker), 다른 하나는 [Sun20]과 유사한 fine-grained phoneme-level VAE임.
Global VAE per Speaker
speaker에 대한 global VAE가 더해짐. 이 VAE로부터 나오는 latent representation은 input phoneme 시퀀스나 speaker ID로 표현될 수 없는 residual information, 예를 들어 prosodic variations등을 의미한다고 할 수 있음. residual encoder(posterior network이라고도 부를 수 있음)는 인풋으로 타겟 멜을 받고 이를 LConv block의 스택으로 보냄. 이 스택은 3개의 17x1 LConv block + 5개의 17x1 LConv block(+ strided 3x1 convolutions)로 구성되어 있음(head=8). 이러한 모델은 representation을 성공적으로 downsample한 뒤 global average pooling을 적용하여 최종 global latent representation을 구할 수 있게 함. 마지막으로 8차원의 representation을 32차원으로 projection함. 인퍼런스시에는 speaker prior mean이 사용됨.
Phoneme-Level Fine-Grained VAE
fine-grained phoneme-level VAE을 위해서 (attention을 통하여) GT 스펙트럼과 encoder output이 각기 매치되어 있는 posterior network을 만들어야 함. 이렇게 하기 위하여 positional embedding(뒤에 설명)과 speaker embedding이 GT스펙트럼 프레임에 더해지고 5개의 8개의 head를 갖는 17x1 LConv 블락에 적용됨. 8차원의 representation은 speaker embedding과 encoder output과 더해지고 32차원으로 projection됨.
그리고 [Sun20]처럼 인퍼런스동안에 latent representation의 sequence를 예측하도록 별도의 autoregressive LSTM을 훈련함. 위에서 설명한 posterior network과 유사하게 이 모델도 speaker embedding과 encoder output을 입력으로 받음. 그리고 L2 loss를 이용하여 posterior mean을 예측하도록 teacher forcing방식으로 훈련됨.
Duration Decoder
latent representation + speaker embedding이 더해진 encoder output은 duration decoder로 들어감. 말그대로 phoneme의 duration을 예측하는 부분. 여기에서는 (HMM같은) external aligner가 계산한 GT phoneme duration가 있다고 가정함. 인풋 시퀀스는 phoneme과 silence, punctuation mark등으로 구성되어 있는데, 뒤에 두 구성성분은 duration이 0이라고 가정함.
duration decoder는 두 가지 타입의 결과를 예측함. 1)0이냐 아니냐. 2) phoneme duration이 몇 초인가? 컴포넌트를 보자면 먼저 4개의 LConv block을 지난 후 두개의 독립적인 projection 부분을 지나게 됨. 첫부분은 signoid activation을 가지고 있어 non-zero duration의 확률을 예측하게 함. 두번째 부분은 softplus activation을 가지고 있어서 phoneme duration을 예측하게 함.
Upsampling and Positional Embeddings
duration decoder의 마지막 LConv block의 activation을 받아 이를 phoneme duration을 이용하여 타겟 멜프레임 길이로 업샘플링함. 업샘플링 후에는 3가지 다른 종류의 positional embedding이 더해짐. 1) phoneme안 frame position에 대한 sinusoidal embedding. 2) phoneme duration에 대한 sinusoidal embedding. 3) phoneme안에 frame의 fractional progression(1D CoordConv[Liu18]). 이렇게 여러 positional embedding이 사용되므로 채널다마다 weight를 훈련하여 weighted sum형태로 함께 사용함.
Spectrogram Decoder with Iterative Loss
업샘플링된 아웃풋은 이제 spectrogram decoder로 들어감. 여기는 6개의 8-headed self-attention 블락(17x1 LConv)로 되어 있음. 각 블락의 마지막 FF 레이어의 아웃풋은 128빈 멜스펙트로그램으로 projection됨. 여기서 iterative loss를 사용함. 즉 각 self-attention 블락들의 마지막 FF 레이어의 아웃풋은 독립적으로 projection되어 $L_1$ 로스가 더해져 최종 로스가 됨([Tjandra20]에서도 사용한 형태).
Training Objective
이제 global VAE과 fine-grained VAE의 최종 로스는 다음과 같음.
여기에서 $L_{spec_i}$는 spectrogram decoder의 $i$번째 LConv block에 대한 $L_1$ spectrogram loss. $L_{dur}$는 두 종류의 duration loss. $D_{KL}$은 prior와 residual encoder에서 나온 posterior간의 KL divergence. $L_{prior}$는 phoneme-level VAE의 learned prior loss를 의미함. $T$는 프레임의 수, $K$는 스펙트로그램의 크기, $N$은 token의 수.
Experiments
Training Setup
내부 데이터셋(405시간, 45스피커, 3영어 액센트)를 사용. 일반적인 Transformer schedule을 이용한 Adam optimizer는 성능이 안좋아 Nesterov momentum을 사용하여 훈련함. 비교를 위해서 Tacotron2[Shen18]를 약간 수정해서 사용함(GMM attention을 사용하고 reduction factor를 2로 하면 성능이 더 좋아짐[Shen20]). 보코더는 WaveRNN[Kalchbrenner18]을 사용.
Evaluation Setup
훈련에서 사용되지 않은 1000개의 문장으로 테스트함. 5-scale MOS를 이용하여 naturalness를 측정하고, side-by-side preference test는 [-3, 3]범위로 측정. positive 점수가 첫번째가 더 좋다는 의미
Experimental Results
먼저 iterative loss가 효과가 있었는지부터 봄. 일단 Tacotron2와 (VAE 없이) 비교해보면 큰 차이가 있진 않았지만 그래도 약간은 좋아진듯?
여러 버전의 Parallel Tacotron을 사용하여 iterative loss를 쓰고 안쓰고를 테스트해보니, 쓸 때가 더 좋다는 평가가 나왔음.
다음으로 VAE의 종류 및 영향을 알아봄. VAE를 안쓰면 Tacotron2보다 더 떨어지는 결과가 나왔는데, global VAE를 쓰니 거의 동등한 수준까지 올랐고 fine-grained phoneme-level VAE를 더하니 Tacotron2보다 더 좋아졌음.
같은 Parallel Tacotron2 모델에서 VAE의 유/무 및 종류를 바꿔서 테스트해봐도 위와 비슷한 결과가 나옴.
세번째 실험은 Transformer와 LConv의 비교. Tacotron2와 Transformer+Parallel Tacotron, 그리고 Tacotron2와 LConv+Parallel Tacotron과의 비교임. 결과적으로 LConv를 사용한 모델이 더 나았음.
같은 모델안에서 비교도 위와 비슷한 결과를 얻음. LConv을 사용했을 때가 더 좋았음.
마지막으로 GT speech와 비교를 해봤음. 결과를 보면 Fine VAE를 사용했을 때 거의 비슷한 수준까지 간다는 것을 알 수 있음.
Inference Efficiency
인퍼런스 속도를 확인할 차례. TPU에서 돌린 결과. Parallel Tacotron이 Tacotron2보다 13배는 더 빠르다는 측정 결과가 나왔음. 또한 Transformer를 사용하는 것보다 LConv를 사용하는 것이 더 좋은 속도가 나왔음.
오랫만에 Tacotron의 이름을 들고 나온 모델.
고로 그 사이에 나온 이런저런 기술들을 사용하여 더 좋아져야겠지?
- [Kalchbrenner18] N.Kalchbrenner, E.Elsen, K.Simonyan, S.Noury, N.Casagrande, E.Lockhart, F.Stimberg, A.van den Oord, S.Dieleman, K.Kavukcuoglu. Efficient neural audio synthesis. ICML 2018. [논문리뷰]
- [Liu18] R. Liu, J. Lehman, P. Molino, F. P. Such, E. Frank, A. Sergeev, and J. Yosinski, “An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution,” in Proc. NeurIPS, 2018, pp. 9605–9616.
- [Shen18] J.Shen, R.Pang, R.J.Weiss, M.Schuster, N.Jaitly, Z.Yang, Z.Chen, Y.Zhang, Y.Wang, RJ S.Ryan, R.A.Saurous, Y.Agiomyrgiannakis, Y.Wu. Natural TTS synthesis by conditioning WaveNet on mel spectrogram predictions. ICASSP 2018. [논문리뷰]
- [Hsu19] W.-N. Hsu, Y. Zhang, R. J. Weiss, H. Zen, Y. Wu, Y. Wang, Y. Cao, Y. Jia, Z. Chen, J. Shen, P. Nguyen, and R. Pang, “Hierarchical Generative Modeling for Controllable Speech Synthesis,” in Proc. ICLR, 2019.
- [Wu19] F. Wu, A. Fan, A. Baevski, Y. N. Dauphin, and M. Auli, “Pay Less Attention with Lightweight and Dynamic Convolutions,” in Proc. ICLR, 2019.
- [Shen20] J. Shen, Y. Jia, M. Chrzanowski, Y. Zhang, I. Elias, H. Zen, and Y. Wu, “Non-Attentive Tacotron: Robust and Controllable Neural TTS Synthesis Including Unsupervised Duration Modeling,” arXiv:2010.04301, 2020.
- [Sun20] G. Sun, Y. Zhang, R. J. Weiss, Y. Cao, H. Zen, and Y. Wu, “Fully- Hierarchical Fine-Grained Prosody Modeling for Interpretable Speech Synthesis,” arXiv:2002.03785, 2020.
- [Tjandra20] A. Tjandra, C. Liu, F. Zhang, X. Zhang, Y. Wang, G. Synnaeve, S. Nakamura, and G. Zweig, “DEJA-VU: Double Feature Presentation and Iterated Loss in Deep Transformer Networks,” in Proc. ICASSP, 2020, pp. 6899–6903.