본문 바로가기

audio/audio generation (tts)

[논문리뷰] FastSpeech2: Fast and High-Quality End-to-End Text to Speech (ICLR21)

제목: FastSpeech2: Fast and High-Quality End-to-End Text to Speech

저자: Yi Ren, Chenxu Hu, Xu Tan, Tao Qin, Sheng Zhao, Zhou Zhao, Tie-Yan Liu

소속: Zhejiang University, Microsoft Research Asia, Microsoft Azure Speech

발표: ICLR 2021

논문: https://arxiv.org/abs/2006.04558

오디오샘플: https://speechresearch.github.io/fastspeech2/

 

- FastSpeech 2와 FastSpeech 2s (아이폰이여 머여)
- FastSpeech[Ren19]이 확실히 빠른 좋은 모델이긴 하지만 teacher-student distillation 방식으로 인한 여러 단점이 있었음. 
- 그래서 이를 개선한 모델을 소개, 즉 바로 모델의 훈련이 가능하고 스피치에 대한 더욱 다양한 정보(피치, 에너지, 정확한 duration등)을 사용하여 생성하도록 함.
- FastSpeech 2s는 fully end-to-end 방식의 시스템.
- 결과적으로 버전 2는 버전 1보다 3배 빠르고, 버전 2s는 인퍼런스 속도가 더 빠르고, 버전 1보다 오디오 퀄리티도 더 좋게 나옴.

 

Story 

여러 non-autoregressive TTS방식 중 FastSpeech은 가장 좋은 모델 중 하나임(이라고 주장하고 있음. 셀프칭찬). 하지만 물론 단점이 있는데 일단 1) teacher-student distillation 방식은 복잡하고 2) teacher 모델에서 생성하는 멜스펙트로그램은 information loss가 일어나서 퀄리티가 좀 떨어지고 3) teacher 모델의 attention map에서 생성하는 duration도 충분히 정확하지 않음. 따라서 이 논문에서는 이를 개선하여 더 빠르고 좋은 모델을 만듬. 먼저 한번에 훈련이 가능하게 하고 스피치의 다양한 특성등도 더욱 많이 이용함. 또한 duration을 구하는 다른방법(MFA)을 이용함. 그동안 놀지않고 열심히 일했다는 의미.

 

거기다가 일을 더 많이 했음. end-to-end 방식으로 텍스트에서 바로 오디오를 생성하는 모델까지 제안함. 이러면 인퍼런스 속도가 더 빨라질거임. 그리고 이정도로 일을 한 것을 보여주면 왠만하면 논문을 떨어트리지도 못할거임.

 

FastSpeech2 and 2s

Motivation

TTS는 기본적으로 one-to-many mapping problem임. 무슨말이냐면 하나의 text에서도 매우 다양한 speech가 나올 수 있다는 의미. 말하는 스타일이 사람마다 다 다를 것이니. 하지만 일반 TTS에서는 인풋 정보가 text밖에 없기 때문에 훈련셋에 있는 스피치의 variation에 overfit하기가 쉽고, 그만큼 generalization능력이 떨어질 수 밖에 없음. FastSpeech에서도 이 문제를 해결하고자 노력했지만 위에서 언급한 몇가지 문제들이 있었음. 이제 어떻게 개선을 했는지 설명하겠음.

 

Model Overview

전체 모델 아키텍쳐 및 세부 구조는 아래와 같음.

먼저 encoder는 phoneme embedding 시퀀스를 phoneme hidden 시퀀스로 변경하고, variance adaptor는 여기에다가 다양한 variance information(duration, pitch, energy, ...)를 더함. 마지막으로 (FastSpeech 2의 경우) mel-spectrogram decoder는 이를 멜시퀀스로 바꿈. encoder와 mel-spectrogram decoder의 기본구조로는 feed-foward Transformer를 사용. 

 

FastSpeech 오리지널 버전과의 차이점을 보면 먼저 teacher-student distillation을 사용하지 않고 바로 ground-truth 멜을 타겟으로 사용하여 훈련을 함. 이로서 모델도 단순해지고 distilled 멜스펙트로그램에 있었던 정보 손실등을 피할 수 있기 때문에 오디오 퀄리티도 높아짐.  원래는 duration predictor만 있었지만 여기에서는 variance adaptor가 duration뿐만 아니라 이것저것 다 predict을 해서 더욱 다양한 결과를 만들게 됨. 그리고 duration predictor 또한 원래는 teacher model의 attention map을 통해 얻었지만 여기서는 forced alignment[McAuliffe17] 방법을 사용하여 더욱 정확한 duration을 얻을 수 있음. 

 

Variance Adaptor

variance adaptor는 phoneme hidden 시퀀스에 variance information(duration, pitch, energy, ...)등을 추가하는 역할을 함. 이러면 variant speech를 예측하기 위하여 충분한 정보를 제공하기 때문에 one-to-many problem 해결에 도움을 줄 수 있음.  여기서는 duration, pitch, energy predictor를 이용하는데 원한다면 더 추가할 수도 있음(위 그림의 (b)). 타겟 스피치에서 duration, pitch, energy를 추출하여 이 모듈들을 훈련하는데 사용. 각 predictor들은 똑같이 생겼음(위 그림의 (c)). 

 

Duration Predictor: speech voice가 얼마나 길게 소리나는지를 예측하는 부분. 즉 하나의 phoneme이 몇개의 mel 프레임을 차지하는지를 예측함. 로스는 MSE를 이용하고, 앞서 언급한데로 Montreal forced alignment (MFA) [McAuliffe17]를 이용하여 duration을 예측함(이거 오픈소스로 있어서 그걸 이용했다함). 

 

Pitch Predictor: 피치는 감정을 전달하는데 중요한 역할을 하고, prosody에도 크게 영향을 미치게 됨. 이전 TTS시스템에서도 pitch 즉, $F_0$을 예측하여 사용하는 경우들이 있었음[Arık17]. 그런데 이전방법들은 예측한 pitch contour를 ground truth와 직접 비교하곤 했는데 이게 상당히 variation이 높은 값인지라 직접 비교하면 좋지 않음. 따라서 여기에서는 continuous wavelet transform (CWT)를 이용하여 연속적인 pitch값들을 pitch spectrogram으로 바꾸어 ground truth와 MSE로스로 차이를 구하게 됨. 이 변환은 역변환도 가능하기 때문에 인퍼런스 때 이용할 수도 있음. 예측된 pitch는 256개의 값으로 quantize되고 pitch embedding vector로 변환되어 hidden sequence에 추가됨.

 

Energy Predictor: 에너지는 스피치의 볼륨과 prosody에 영향을 미침. 에너지 계산은 STFT의 amplitude의 L2 norm으로 계산함. 에너지값도 256개의 값으로 quantize되고 energy embedding vector로 인코딩되어 hidden sequence에 추가됨.

 

FastSpeech 2s

이제 위 구조에서 디코더 부분을 보코더(waveform decoder)로 바꾸면 end-to-end TTS를 만들 수 있음. 즉 이전 다른 모델들처럼 멜을 중간 representation으로 이용하는 것이 아니라 모델 내부에서 생성된 더욱 compact한 hidden representation을 이용하여 바로 오디오를 생성하게 됨.

 

Challenges in Text-to-Waveform Generation: 하지만 쉬웠다면 먼저 다들 했겠지. 어려운 점을 두가지만 뽑아보자면, 일단 1) 웨이브폼은 phase등을 포함하여 보다 다양한 정보를 담고 있는 형태이므로, 텍스트-멜 보다는 텍스트-오디오 사이의 information gap이 더 큼. 2)  웨이브폼은 길어도 너무 김. 따라서 이를 바로 사용하기에는 메모리 문제가 발생함. 따라서 짧게 잘라서밖에 사용할 수가 없는데 그러면 텍스트도 함께 짤리므로, phoneme 간의 관계등을 제대로 모델링하기가 힘듬.

 

Out Method: 먼저 1) phase information을 알아서 implicit하게 디코딩하게 하기 위해서 adversarial training을 이용함. 그리고 2) 이미 잘 훈련된 mel-spectrogram decoder가 있으니 text feature extraction에 이를 이용하도록 함. waveform decoder의 구조는 WaveNet[Oord16]을 기반으로 함(전체 구조는 맨 위 그림의 (d)). discriminator는 Parallel WaveGAN[Yamamoto20]의 모델을 따름. 훈련을 완료하면 인퍼런스 때에는 mel-spectrogram decoder는 필요하지 않고 waveform decoder만 사용하여 오디오를 생성할 수 있음.

 

Experiments and Results

Experimental Setup

Datasets: LJSpeech 데이터셋이용. text를 phoneme 시퀀스로 바꿀 때는 오픈소스 graphme-to-phoneme tool을 이용함. 

Model Configuration: encoder와 mel-spectrogram decoder에서는 4개의 feed-forward Transformer를 사용. 잘잘한 내용은 논문 appendix 참고.

 

Results

Model Performacne

Audio Quality: 비교 모델은 Tacotron 2[Shen18], Transformer TTS[Li19], FastSpeech 1[Ren19]를 이용함. MOS점수를 비교해보면 아래와 같음.

여기서 PWG는 Paralle WaveGAN 보코더를 의미함.  결과를 보면 FastSpeech 2가 가장 좋은 결과를 보여주었고, 2s버전도 다른 모델들과 동등한 수준을 보여주었음. 

 

Training and Inference Speedup: 모델을 간단하게 했으니 훈련시간도 더 빨라졌을 거임. 시간을 비교해보면,

 

버전 2가 버전 1보다 훈련시간이 3배정도 줄었음. 2s는 보코더 훈련시간까지 포함되므로 전체 훈련시간은 더 많이 걸리는 건 당연. 오디오를 생성하는 시간(인퍼런스)도 비교하면 2s가 좀 더 빠르다는 것을 알 수 있음. end-to-end 방식이 속도면에서 도움이 된다는 이야기. 

 

Analyses on Variance Information

More Accurate Variance Information in Synthesized Speech: variance information을 추가적으로 넣은게 정말 도움이 될까? 이를 알아보기 위하여 생성한 스피치와 ground truth 스피치의 pitch distribution의 moments와 dynamic time warping(DTW)의 평균 거리를 계산해봤음. 여기서 $\sigma$는 standard deviation, $\gamma$는 skewness, $\mathcal{K}$는 kurtosis를 의미함.

결과를 보면 2/2s버전이 GT의 모멘트들과 가장 가까운 것을 알 수 있고 DTW 거리도 가장 짧았음. 즉 GT와 가장 비슷한 pitch distribution을 갖는다고 생각할 수 있음.

 

또한 프레임별로 에너지를 계산하여 mean absolute error(MAE)를 계산해봤음. 이 경우도 2/2s가 GT와의 에너지 차이가 더 작다는 것을 알 수 있음.

 

More Accurate Duration for Model Training: MFA를 사용하여 구한 duration정보가 더 정확할까? 이를 확인하기 위하여 매뉴얼로 50개의 GT를 만들어 버전 1에서 사용했던 teacher model과 2/2s에서 사용한 MFA로 구한 duration의 absolute phoneme boundary difference를 구해봤음. 그랬더니 MFA와 GT와의 차이가 더 적었음.

또한 FastSpeech의 duration predictor 부분을 MFA로 바꾸고 다시 훈련하여 모델을 만들고 CMOS를 측정해봤음. 그랬더니 오디오 퀄리티가 더 좋아졌다는 것을 알 수 있음.

Ablation Study

Pitch and Energy Input: energy와 pitch 정보가 도움이 되는지 알아보기 위하여 ablation study를 진행함. 결과적으로 둘다 중요했음. 상대적으로는 피치 정보가 좀 더 중요했음.

Predicting Pitch in Frequency Domain: continuous wavelet transform(CWT)이 도움이 될까? 를 알아보기 위해 실험도 해봤는데 이를 안하니 CMOS가 0.185(버전 2)와 0.201(버전 2s)만큼 떨어졌음. 위에 모멘트 비교하는 테이블에서 잘보면 CWT를 안한버전(6번재 행) 데이터도 보여주고 있는데 역시 퀄리티가 더 줄어들었다는 것을 알 수 있음.

 

Mel-Spectrogram Decoder in FastSpeech 2s: 2s버전에서 text feature extraction을 위하여 mel-spectrogram decoder를 사용했는데 이를 사용하지 않으면 CMOS가 0.285 떨어졌음. 도움이 되었다는 이야기.

 

FastSpeech 버전 2. 더 단순하면서도 좋아졌음.
거기에 보코더까지 성공적으로 훈련시켜 2s 버전도 출시(?)함.

 

 

  • [Oord16] A.van den Oord, S.Dieleman, H.Zen, K.Simonyan, O.Vinyals, A.Graves, N.Kalchbrenner, A.Senior, K.Kavukcuoglu. WaveNet: A generative model for raw audio. arXiv preprint arXiv:1609.03499, 2016. [논문리뷰]
  • [Arık17] S.Ö.Arık, M.Chrzanowski, A.Coates, G.Diamos, A.Gibiansky, Y.Kang, X.Li, J.Miller, J.Raiman, S.Sengupta, M.Shoeybi. Deep Voice: Real-time neural text-to-speech. ICML 2017. [논문리뷰]
  • [McAuliffe17] Michael McAuliffe, Michaela Socolof, Sarah Mihuc, Michael Wagner, and Morgan Sonderegger. Montreal forced aligner: Trainable text-speech alignment using kaldi. In Interspeech, pp. 498– 502, 2017.
  • [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. [논문리뷰]
  • [Li19] N.Li, S.Liu, Y.Liu, S.Zhao, M.Liu, M.Zhou. Neural speech synthesis with transformer network. AAAI 2019. [논문리뷰]
  • [Ren19] Y.Ren, Y.Ruan, X.Tan, T.Qin, S.Zhao, Z.Zhao, T.Y.Liu. FastSpeech: Fast, robust and controllable text to speech. NeurIPS 2019. [논문리뷰]
  • [Yamamoto20] R.Yamamoto, E.Song, and J.M.Kim. Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram. ICASSP 2020. [논문리뷰]