티스토리 뷰
반응형
AdaSpeech: Adaptive Text to Speech for Custom Voice
- TTS adaptation에서 custom voice를 활용하기 위해서는 2가지 과제가 있음
- Adaptation 모델은 source speech data와 상당히 다른 다양한 acoustic condition을 처리할 수 있어야 함
- 음성 품질을 유지하면서 적은 memory 사용량을 가지도록 각 target speaker에 대한 adaptation parameter가 작아야 함 - AdaSpeech
- 고품질 합성과 효율적인 voice customization을 지원하는 adaptive TTS 모델
- 다양한 acoustic condition을 처리하기 위해 utterance, phoneme level 모두에서 acoustic information을 모델링
- 음성 품질과 adaptation parameter 간의 trade-off를 위해 mel-spectrogram decoder에 conditional layer normalization을 도입
- 논문 (ICRL 2021) : Paper Link
1. Introduction
- Text-to-Speech (TTS)는 text에서 natural, intelligible voice를 합성하는 것을 목표로 함
- TTS 모델은 single-speaker recording에 대해 우수한 성능을 달성하고 multi-speaker corpora를 사용하여 multi-speaker TTS 시나리오로 확장되고 있음
- 특히 custom voice는 다양한 application에서 사용되고 있고, 이때 TTS 모델은 일반적으로 adaptation data가 거의 없는 personalized voice에 adapt 해야 함
- BUT, adapted voice의 naturalness, similarity를 반영할 수 있는 data는 거의 없음 - 추가적으로 custom voice에는 몇 가지 과제가 존재함
- User custom recording은 TTS 모델 학습에 사용된 source data와 acoustic condition이 상당히 다름
- For example, adaptation data는 다양한 speaking prosody, style, emotion 등을 가짐
- 결과적으로 acoustic condition의 mismatch로 인해 모델을 generalize 하기 어렵고 adaptation 품질이 저하됨 - Source TTS 모델을 새로운 음성에 adapt 할 때, fine-tuning parameter와 음성 품질 간의 trade-off가 존재함
- Adaptation parameter가 많을수록 품질은 향상되지만, 모델은 더 많은 memory 비용을 요구함
- User custom recording은 TTS 모델 학습에 사용된 source data와 acoustic condition이 상당히 다름
- 기존의 TTS adaptation 방식들은 위 문제를 완전히 해결하지 못함
- Fine-tuning 방식은 합성 품질을 향상할 수는 있지만 adaptation parameter 수가 크게 증가됨
- Speaker embedding, speaker encoder를 사용하는 방법은 parameter 측면에서 효율적이지만 adapataion 품질이 나쁨
- TTS 모델은 single-speaker recording에 대해 우수한 성능을 달성하고 multi-speaker corpora를 사용하여 multi-speaker TTS 시나리오로 확장되고 있음
-> 그래서 효율적이고 고품질의 voice customization을 지원하는 adaptive TTS 모델인 AdaSpeech를 제안
- AdaSpeech
- Custom voice를 위해 3-stage pipeline을 활용
- Pre-training stage에서는
- Large-scale multi-speaker dataset를 통해 TTS 모델을 학습하여 TTS 모델이 adaptation에 도움이 되는 다양한 text와 speaking voice를 cover 하도록 함 - Fine-tuning stage에서는
- Source TTS 모델은 다양한 acoustic condition의 제한된 adaptation data에 대한 일부 parameter 만을 fine-tuning 함 - Inference stage에서는
- TTS 모델의 unadapted part (모든 custom voice에 대해 share 하는 parameter)와 adapted part (특정 custom voice에 대한 adapted parameter)를 모두 사용하여 추론을 수행함
- Pre-training stage에서는
- 이를 위해 non-autoregressive TTS 모델을 기반으로 AdaSpeech를 설계
- Acoustic condition modeling
- Pre-training과 fine-tuning에서 utterance-/phoneme-level 모두에 대한 acoustic condition을 모델링
- 두 개의 acoustic encoder를 사용하여 target speech로부터 utterance-/phoneme-level vector를 추출
- 이후 mel-spectrogram decoder의 input으로 사용하여 global/local acoustic condition을 represent 함 - Conditional layer normalization
- Layer normalization에서 scale, bias vector를 생성하기 위한 conditional information으로 speaker embedding을 사용하여 mel-spectrogram decoder를 수정
- Fine-tuning 시에는 conditional layer normalization에 관련된 parameter만을 adapt 하여 memory 사용량을 줄이면서 고품질의 합성이 가능
- Acoustic condition modeling
- Custom voice를 위해 3-stage pipeline을 활용
< Overall of AdaSpeech >
- 다양한 acoustic condition을 처리하기 위해 utterance, phoneme level 모두에서 acoustic information을 모델링
- Mel-spectrogram decoder에 conditional layer normalization을 도입하여 품질과 memory 효율성을 향상
- 결과적으로 우수한 adaptation 성능을 달성
2. AdaSpeech
- AdaSpeech의 structure는 non-autoregressive TTS 모델인 FastSpeech2를 backbone으로 사용함
- 기본적인 backbone은 phoneme encoder, mel-spectrogram decoder, variance adaptor로 구성됨
- 이때 AdaSpeech는 custom voice 문제를 해결하기 위해 2가지 additional component를 설계함
- Acoustic conditional modeling을 통해 다양한 granularity로 adaptation speech의 다양한 acoustic condition을 capture 함
- Decoder에서 conditional layer normalization을 사용하여 적은 parameter 만으로도 효율적인 adaptation과 높은 품질을 지원
- Acoustic Condition Modeling
- Adaptation data는 다양한 prosody, style, accent 등을 가질 수 있으므로 acoustic condition은 source speech data와 크게 다를 수 있음
- 이를 해결하기 위해서는 source TTS 모델의 adaptability (generalizability)를 향상해야 함
- 특히 기존의 방식들은 acoustic condition이 충분히 제공되지 않기 때문에 모델이 training data를 memorize 하고 overfit 되는 경향이 있음
- 따라서 AdaSpeech는 acoustic condition을 input으로 제공하여 더 나은 generalization과 text-to-speech mapping을 학습하도록 함 - 다양한 granularity로 acoustic condition을 모델링하기 위해, 아래 그림과 같이 acoustic condition을 다양한 level로 categorize 함
- Speaker level
- Speaker의 전체적인 characteristic을 capture 하기 위한 coarse-grained acoustic condition - Utterance level
- Speaker의 각 utterance의 fine-grained acoustic condition - Phoneme level
- Accent, pitch, prosody 등과 같은 utterance의 각 phoneme에 대한 fine-grained acoustic condition
- Speaker level
- 이때 speaker ID (embedding)의 경우 multi-speaker TTS에서 speaker-level acoustic condition을 capture하기 위해 일반적으로 사용되므로, AdaSpeech도 기본적으로 speaker embedding을 포함함
- Utterance-level, phoneme-level acoustic condition modeling은
- Utterance level modeling
- Acoustic encoder를 사용하여 reference speech에서 vector를 추출한 다음, 이를 expand 하고 phoneme hidden sequence에 추가하여 utterance-level acoustic condition을 제공함
- Utterance-level acoustic encoder는 convolution layer와 mean pooling layer로 구성됨
- Reference speech는 학습 시에는 target speech를 사용하고 추론 시에는 random chosen speech를 사용 - Phoneme level modeling
- 또 다른 acoustic encoder를 사용하여 target speech에서 phoneme-level vector를 추출하고, 이를 phoneme hidden sequence에 추가하여 phoneme-level acoustic condition을 제공함
- 음성에서 phoneme-level information을 추출하기 위해 phoneme과 mel-spectrogram sequence 간의 alignment에 따라 동일한 phoneme에 해당하는 frame을 average 하여 phoneme sequence length로 변환
- 추론 시에는 phoneme-level acoustic predictor를 사용하여 phoneme-level vector를 예측
- Utterance level modeling
- AdaSpeech의 acoustic condition modeling은 source TTS 모델을 다양한 adaptation data에 대해 잘 adapt 시킴으로써 합성 품질을 보장할 수 있음
- 이를 해결하기 위해서는 source TTS 모델의 adaptability (generalizability)를 향상해야 함
- Conditional Layer Normalization
- 적은 adaptation parameter를 사용하면서 높은 adaptation 품질을 달성하는 것은 어려움
- 특히 AdaSpeech의 backbone인 FastSpeech2는 transformer block을 기반으로 함
- 각 transformer block은 self-attention network와 feed-forward network로 이루어짐
- Self-attention의 query, key, value의 matrix mulitplication과 two-layer feed-forward network는 모두 parameter-intensive 하므로 adaptation에 비효율적임 - 이때 layer normalization을 self-attention, feed-forward network에 도입하면, lightweight learnable scale vector $\gamma$와 bias vector $\beta$를 통해 최종 예측에 큰 영향을 줄 수 있음:
$LN(x)=\gamma \frac{x-\mu}{\sigma}+\beta$
- $\mu, \sigma$ : 각각 hidden vector $x$의 평균, 분산
- 특히 AdaSpeech의 backbone인 FastSpeech2는 transformer block을 기반으로 함
- Small conditional network를 사용하여 해당 speaker characteristic으로 layer normalization에서 scale, bias vector를 결정할 수 있다면,
- 새로운 음성에 adapting 할 때 해당 conditional network를 fine-tuning 할 수 있고, 결과적으로 adaptation 품질을 보장하면서 adaptation parameter를 줄일 수 있음
- 따라서 conditional network는 speaker embedding $E^{s}$를 input으로 사용하고, 각각 scale, bias vector를 output 하는 2개의 linear layer $W_{c}^{\gamma}, W_{c}^{\beta}$로 구성됨:
(Eq. 1) $\gamma_{c}^{s}=E^{s}*W_{c}^{\gamma},\,\, \beta_{c}^{s}=E^{s}*W_{c}^{\beta}$
- $s$ : speaker ID, $c \in [C]$ : decoder에 $C$개의 conditional layer normalization를 가지고 각각은 서로 다른 conditional matrix를 사용함 - 각 layer에는 transformer의 self-attention 및 feed-forward network에 해당하는 2개의 conditional layer normalization이 있고, 최종 output에는 additional layer normalization이 있으므로, decoder layer의 수는 $(C-1)/2$
- Pipeline of AdaSpeech
- 아래의 [Algorithm 1]을 따라 AdaSpeech의 pre-training, fine-tuning, inference를 수행
- Fine-tuning 시에는 decoder의 각 conditional layer normalization과 speaker embedding $E^{s}$의 두 matrix $W_{c}^{\gamma}, W_{c}^{\beta}$만 fine-tuning 함
- 이때 utterance-level, phoneme-level acoustic encoder와 phoneme-level acoustic predictor를 포함한 다른 parameter들은 fix 됨 - 추론 시에는 각 conditional layer normalization의 $W_{c}^{\gamma}, W_{c}^{\beta}$는 큰 parameter를 가지기 때문에 직접 사용되지 않음
- 대신 $E^{s}$가 추론에서 fix 되어 있다는 점을 활용하여 (Eq. 1)에 따라 speaker embedding $E^{s}$로부터 각 scale/bias vector $\gamma_{c}^{s}, \beta_{c}^{s}$를 계산
- 이를 통해 AdaSpeech는 memory를 효과적으로 절약할 수 있음
- Fine-tuning 시에는 decoder의 각 conditional layer normalization과 speaker embedding $E^{s}$의 두 matrix $W_{c}^{\gamma}, W_{c}^{\beta}$만 fine-tuning 함
3. Experiments
- Settings
- Dataset : LibriTTS, VCTK, LJSpeech
- Comparisons
- GT : ground-truth
- GT mel+Vocoder : ground-truth mel-spectrogram을 기반으로 MelGAN vocoder를 적용
- Baseline (spk emb) : adaptation 시 speaker embedding을 fine-tuning 하는 FastSpeech2
- Baseline (decoder) : adaptation 시 전체 decoder를 fine-tuning 하는 FastSpeech2
- Results
- The Quality of Adaptive Voice
- 전체적으로 cross-domain dataset (LJSpeech & VCTK)에 adaptation 하는 것이 in-domain dataset (LibriTTS)에 adaptation 하는 것보다 더 어려움
- Baseline (spk emb)와 비교하여 AdaSpeech는 더 우수한 MOS, SMOS 결과를 보임
- 마찬가지로 Baseline (decoder)와 비교했을 때도, AdaSpeech는 더 높은 MOS, SMOS를 보임
- 특히 parameter 측면에서 AdaSpeech는 더 효율적인 구성을 가짐
- 전체적으로 cross-domain dataset (LJSpeech & VCTK)에 adaptation 하는 것이 in-domain dataset (LibriTTS)에 adaptation 하는 것보다 더 어려움
- Ablation Study
- Utterance-level, phoneme-level acoustic modeling, layer normalization을 제거해 보면,
- 모든 경우에서 AdaSpeech의 성능이 저하됨
- Analyses on Acoustic Condition Modeling
- t-SNE를 통해 LibriTTS에서 여러 speaker에 대한 utterance-level acoustic encoder에서 추출된 vector를 분석해 보면
- 동일한 speaker의 서로 다른 utternace는 cluster 되어 있지만, acoustic condition 측면에서 차이를 보임
- 아래 그림에서 따로 표시된 분홍색, 파란색 점의 경우, 짧고 emotional 한 utterance에 해당하므로 서로 다른 speaker에 속하더라도 서로 가깝게 나타남
- Varying Adaptation Data
- VCTK, LJSpeech에서 다양한 adaptation data에 대한 합성 품질을 비교해 보면
- Adaptation data가 감소하면 MOS가 저하되는 것으로 나타남
- 특히 adaptation data가 10 sentence 미만인 경우 더 크게 저하됨
- Analyses on Conditional Layer Normalization
- Conditional Layer Noramlization (CLN)의 효과를 비교해 보면
- CLN을 LN+fine-tune scale/bias, LN+fine-tune others로 각각 대체했을 때 성능이 저하되는 것으로 나타남
- 결과적으로 CLN을 사용하는 것이 AdaSpeech 성능 향상에 유용
반응형
'Paper > TTS' 카테고리의 다른 글
댓글