티스토리 뷰
Paper/Language Model
[Paper 리뷰] VALL-E: Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers
feVeRin 2024. 6. 15. 11:55반응형
VALL-E: Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers
- Text-to-Speech를 위해 language modeling을 활용할 수 있음
- VALL-E
- Neural audio codec에서 파생된 discrete code를 사용하여 training 된 language model
- 기존의 continuous signal regression이 아닌 conditional language modeling으로 text-to-speech를 접근
- 특히 in-context learning capability를 제공하여 unseen speaker를 3초 이내의 acoustic prompt를 통해 personalized speech를 합성 가능
- 논문 (Microsoft 2023) : Paper Link
1. Introduction
- 기존의 cascaded text-to-speech (TTS) 모델은 일반적으로 intermediate representation으로써 mel-spectrogram을 활용하는 acoustic model과 vocoder로 구성됨
- 한편으로 최신의 VITS는 single/multi-speaker 합성이 가능하지만, training을 위해서는 여전히 고품질의 clean speech가 요구됨
- 즉, training set의 size가 상대적으로 작으므로 generalization의 한계가 존재함 - 따라서 zero-shot scenario에서는 unseen speaker에 대해 similarity와 naturalness가 크게 저하되는 경향이 있음
- 이를 해결하기 위해 기존에는 speaker adaptation, speaker encoding 등의 복잡한 pre-designed feature나 heavy structure engineering이 사용됨 - BUT, zero-shot TTS의 궁극적인 성능 향상을 위해서는 최대한 크고 다양한 data로 training 하는 것이 필수적임
- 실제로 160GB, 570GB, 1TB의 uncompressed data를 활용하여 language model의 성능이 크게 개선되고 있음
- 한편으로 최신의 VITS는 single/multi-speaker 합성이 가능하지만, training을 위해서는 여전히 고품질의 clean speech가 요구됨
-> 그래서 large-scale multi-speaker speech data를 기반으로 한 language model-based TTS framework인 VALL-E를 제안
- VALL-E
- Zero-shot 합성을 위해 3초 이내의 recording에 대한 acoustic token과 phoneme prompt를 기반으로 conditioning을 수행해 speaker와 content information을 constraint함
- 이후 생성된 acoustic token은 neural codec decoder로 전달되어 final waveform을 생성
- 특히 audio codec에서 파생된 discrete acoustic token을 사용하면 TTS를 conditional codec language modeling으로 처리할 수 있고, GPT와 같은 prompting-based large-model technique을 적용 가능
- 추가적으로 acoustic token을 사용하면 추론 중에 sampling을 통해 다양한 합성 결과를 얻을 수 있음
- 이때 training을 위해 7000명 이상의 unique speaker와 60k hours의 음성으로 구성된 large-scale data를 활용
- 이러한 large data training을 통해 높은 generalization을 달성 가능
< Overall of VALL-E >
- 기존 TTS의 mel-spectrogram을 audio codec code로 대체한 language model을 통해 strong in-context learning capability를 달성
- Large-scale의 semi-supervised data를 사용하여 generalized TTS framework를 구축
- 결과적으로 VALL-E는 동일한 input text에 대해 다양한 output을 생성할 수 있고, zero-shot scenario에서도 speaker similarity가 높은 음성을 생성 가능
2. Background: Speech Quantization
- Audio는 일반적으로 16-bit integer value로 store 되므로 generative model은 raw audio를 합성하기 위해 time step 당 $2^{16} =65536$의 probability를 output 해야 함
- 특히 audio sampling rate가 1만을 초과하는 경우, sequence length가 상당히 길어지므로 raw audio 합성을 더욱 어려워짐
- 이를 해결하기 위해서는 integer value와 sequence length를 compress 하는 speech qunatization이 필요함
- 대표적으로 $\mu$-law quantization은 각 time step을 256개의 value로 quantize 하여 고품질의 raw audio를 reconstruct 할 수 있음
- 그 외에도 vq-wav2vec, HuBERT 등의 self-supervised speech model을 활용할 수도 있음
- Self-supervised model의 code는 content reconstruction이 가능하고, WaveNet보다 빠른 추론 속도를 보임
- 특히 AudioLM은 해당 self-supervised model의 $k$-means token과 neural codec의 acoustic token을 모두 활용하여 고품질의 음성 합성 성능을 달성
- 따라서 논문에서는 AudioLM의 방법론을 따라 neural codec을 활용하여 음성을 discrete token으로 represent 함
- 이때 compression을 지원하는 audio codec은 waveform을 discrete acoustic token으로 encoding 하여 unseen speaker에 대해서도 고품질의 reconstruction이 가능함 - 이러한 audio codec을 통한 quantization은 다음의 장점을 가짐:
- 풍부한 speaker, acoustic information을 포함하고 있으므로, reconstruction 시 기존 HuBERT code보다 speaker identity를 더 잘 유지할 수 있음
- VQ-based method와 같이 spectrum에서 동작하는 vocoder에 대한 추가적인 training이 필요 없음
- 대신 discrete token을 waveform으로 변환하는 off-the-shelf codec decoder를 사용하면 됨 - $\mu$-law transformation을 처리하는 time step을 줄일 수 있음
- 결과적으로 VALL-E는 pre-trained neural codec인 EnCodec을 tokenizer로 채택함
- EnCodec은 convolutional encoder-decoder model으로써, 24kHz input waveform에 대해 sampling rate가 $320\times$ 줄어든 75Hz의 embedding을 생성함
- 이후 각 embedding은 Residual Vector Quantization (RVQ)에 의해 모델링 됨
- 아래 그림과 같이 1024 entry가 있는 8 hierarchy quantizer를 사용
- 즉, 24kHz audio reconstruction을 위한 6k bitrate의 EnCodec에 해당 - 최종적으로 모든 quantizer의 discrete code를 사용하여 EnCodec의 convolutional decoder는 real-valued embedding을 생성하고, 24kHz의 waveform을 reconstruction 함
- 여기서 EnCodec에 10초의 waveform이 주어지면 discrete representation은 $750\times 8$ entry를 가지는 matrix가 됨
- $750=\frac{24000\times 10}{320}$ : downsampled time step, $8$ : quantizer 수 - 한편으로 높은 bitrate는 더 많은 quantizer 수와 더 나은 reconstruction 품질에 해당함
- e.g.) 12k bitrate에 대한 EnCodec은 16개의 quantizer가 필요하고, 10초의 waveform은 $750\times 16$ entry를 가지는 matrix가 됨
3. VALL-E
- Problem Formulation: Regarding TTS as Conditional Codec Language Modeling
- $\mathbf{y}$를 audio sample, $\mathbf{x}=\{x_{0},x_{1},...,x_{L}\}$을 해당하는 phoneme transcription이라고 했을 때, dataset $\mathcal{D}=\{\mathbf{x}_{i}, \mathbf{y}_{i}\}$와 같이 주어짐
- 먼저 pre-trained neural codec을 사용해 각 audio sample을 $\mathrm{EnCodec}(\mathbf{y})=\mathbf{C}^{T\times 8}$의 discrete acostic code로 encoding 함
- 여기서 $\mathbf{C}$ : two-dimensional acoustic code matrix, $T$ : downsampled utternace length
- 이후 각 acoustic code matrix row-vector $\mathbf{c}_{t}$는 frame $t$에 대한 8개의 code를 represent 하고, 각 acoustic code matrix의 column-vector $\mathbf{c}_{:,j}$는 $j$-th codebook의 code sequence를 represent 함
- 이때 $j\in\{1,...,8\}$ - Quantization 이후, neural codec decoder는 $\mathrm{DeCodec}(\mathbf{C})\approx \hat{\mathbf{y}}$와 같이 waveform을 reconstruction 함
- 특히, zero-shot TTS를 위해서는 unseen speaker에 대해 고품질 음성을 합성하는 모델이 필요하므로, 논문은 zero-shot TTS를 conditional codec language modeling task로 취급함
- 이를 위해 $\max p(\mathbf{C}|\mathbf{x},\tilde{\mathbf{C}})$의 optimization objective를 가지고 phoneme sequence $\mathbf{x}$와 acoustic prompt matrix $\tilde{\mathbf{C}}^{T'\times 8}$에 따라 condition 된 acoustic code matrix $\mathbf{C}$를 생성하는 neural language model을 training 함
- $\tilde{\mathbf{C}}$는 enrolled recording을 input으로 하여 동일한 neural codec으로부터 얻어짐
- 그러면 neural language model은 각각 phoneme sequence와 acoustic prompt에서 content와 speaker information을 추출하는 방법을 학습해야 함 - 결과적으로 추론 시 phoneme sequence와 unseen speaker의 recording (3초 이내)이 주어지면,
- Training 된 language model로 해당 content와 speaker voice가 포함된 acoustic code matrix를 추정하고,
- Neural codec decoder를 통해 고품질 합성을 수행
- 먼저 pre-trained neural codec을 사용해 각 audio sample을 $\mathrm{EnCodec}(\mathbf{y})=\mathbf{C}^{T\times 8}$의 discrete acostic code로 encoding 함
- Training: Conditional Codec Language Modeling
- Neural speech codec을 사용하면 discrete audio representation을 활용할 수 있음
- 이때 neural codec의 residual quantization으로 인해 token은 hierarchical structure를 가짐
- 즉, previous quantizer의 token은 speaker ID와 같은 acoustic property를 recover 하고 consecutive quantizer는 fine acoustic detail을 학습함 - 여기서 각 quantizer는 previous quantizer의 residual을 모델링하도록 training 되므로, 이를 위해 hierarchical 방식으로 2가지 language model을 설계함
- 먼저 first quantizer $\mathbf{c}_{:,1}$의 discrete token에 대해 autoregressive (AR) decoder-only model을 training 함
- 이는 phoneme squence $\mathbf{x}$와 acoustic prompt $\tilde{\mathbf{C}}_{:,1}$에 따라 condition 됨:
(Eq. 1) $p(\mathbf{c}_{:,1}|\mathbf{x},\tilde{\mathbf{C}}_{:,1};\theta_{AR})=\prod_{t=0}^{T}p(\mathbf{c}_{t,1}| \mathbf{c}_{<t,1},\tilde{\mathbf{c}}_{:,1},\mathbf{x};\theta_{AR})$ - 이때 VALL-E는 deconder-only LM이므로 $\tilde{\mathbf{c}}_{:,1}$과 $\mathbf{c}_{:,1}$의 concatenation은 전체 sequence가 되고, training 중에 이들을 distinguish 하거나 special token을 삽입하지 않음
- 추론 중에는 prefix $\tilde{\mathbf{c}}_{:,1}$이 주어지는 동안, $\mathbf{c}_{:,1}$만을 예측함
- 이는 phoneme squence $\mathbf{x}$와 acoustic prompt $\tilde{\mathbf{C}}_{:,1}$에 따라 condition 됨:
- 다음으로, 두 번째부터 마지막 quantizer까지의 discrete token $\mathbf{c}_{:,j\in[2,8]}$에 대해 non-autoregressive (NAR) language model을 training 함
- Token들은 NAR 방식으로 서로 access 할 수 없으므로, speaker identity를 constrain 하기 위해 acoustic prompt matrix $\tilde{\mathbf{C}}$를 acoustic prompt로 사용함
- 따라서 모델은 phoneme sequence $\mathbf{x}$, acoustic prompt $\tilde{\mathbf{C}}$, previous codebook $\mathbf{C}_{:,<j}$에 따라 예측된 acoustic token으로 condition 됨:
(Eq. 2) $p(\mathbf{C}_{:,2:8}|\mathbf{x},\tilde{\mathbf{C}};\theta_{NAR})=\prod_{j=2}^{8}p(\mathbf{c}_{:,j}|\mathbf{C}_{:,<j},\mathbf{x},\tilde{\mathbf{C}};\theta_{NAR})$
- AR과 NAR 모델의 combination은 음성 품질과 추론 속도 간의 trade-off를 제공함
- 특히 생성된 음성의 speed는 enrolled recording과 일치해야 하지만, speaking speed는 매우 다양하므로 다양한 speaker에 대한 length predictor를 training 하는 것은 어려움
- 반면 VALL-E에서 채택한 AR 모델은 acoustic sequence length prediction에 대한 flexibility를 가지므로 보다 natural 한 합성이 가능 - Consecutive stage의 경우, output slot 수가 first stage의 sequence length를 따르므로 NAR의 time complexity를 $\mathcal{O}(T)$에서 $\mathcal{O}(1)$로 줄일 수 있음
- 결과적으로, $\mathbf{C}$에 대한 예측은 다음과 같이 모델링 됨:
(Eq. 3) $p(\mathbf{C}|\mathbf{x},\tilde{\mathbf{C}};\theta)=p(\mathbf{c}_{:,1}|\tilde{\mathbf{C}}_{:,1},\mathbf{x}, \theta_{AR})\prod_{j=2}^{8}p(\mathbf{c}_{:,j}|\mathbf{c}_{:,<j},\mathbf{x},\tilde{\mathbf{C}};\theta_{NAR})$
- 특히 생성된 음성의 speed는 enrolled recording과 일치해야 하지만, speaking speed는 매우 다양하므로 다양한 speaker에 대한 length predictor를 training 하는 것은 어려움
- 이때 neural codec의 residual quantization으로 인해 token은 hierarchical structure를 가짐
- Autoregressive Codec Language Modeling
- Autoregressive language model은 first quantizer에서 token을 생성하고, 구조적으로는 phoneme embedding $W_{x}$, acoustic embedding $W_{a}$, transformer decoder, prediction layer로 구성됨
- 이때 specific content가 포함된 음성을 생성하기 위해, phoneme sequence를 language model의 phoneme prompt로 사용함
- 즉, input은 $\mathbf{x}$와 $\mathbf{c}_{:,1}$의 concatentation으로 구성되고, 각 token 뒤에는 2개의 special $\text{<EOS>}$ token이 추가됨 - 다음으로 prompt token과 input token에 대해 개별적으로 sinuous position embedding을 계산함
- Causal transformer model에서 각 token $\mathbf{c}_{t,1}$은 $(\mathbf{x},\mathbf{c}_{\leq t,1})$에 attend 할 수 있음
- 최종적으로 모델은 first codebook에서 next token의 probability를 최대화하도록 최적화되고, output projection layer의 parameter를 acoustic embedding $W_{a}$의 parameter와 share 함
- 이때 specific content가 포함된 음성을 생성하기 위해, phoneme sequence를 language model의 phoneme prompt로 사용함
- AR 모델에서는 training 시 prompt로 audio clip을 explicitly extract 하지 않음
- 특히 training process는 pure causal language model training으로써, 모든 prefix sequence $\mathbf{c}_{<t,1}$은 sequence $\mathbf{c}_{\geq t,1}$의 후반부에 대한 prompt로 처리됨 - 추론 시 enrolled recording이 주어지면, 해당 recording의 phoneme sequence와 합성을 위한 phoneme sequence를 concatenate 해야 함
- 이때 enrolled recording의 acoustic token sequence는 (Eq. 1)과 같이 AR decoding의 prefix로 사용됨
- Autoregressive language model은 first quantizer에서 token을 생성하고, 구조적으로는 phoneme embedding $W_{x}$, acoustic embedding $W_{a}$, transformer decoder, prediction layer로 구성됨
- Non-Autoregressive Codec Language Modeling
- 앞선 AR 모델을 통해 first quantizer code를 얻은 다음, NAR 모델을 사용하여 나머지 7개의 quantizer code를 생성함
- 여기서 NAR 모델은 8개의 separate acoustic embedding을 가진다는 것을 제외하면 AR 모델과 유사함 - 먼저 각 training step에서 training stage $i\in[2,8]$을 random sampling 함
- 그러면 모델은 $i$-th quantizer codebook의 acoustic token을 최대화하도록 training 됨
- 즉, stage 1에서 $i-1$까지의 acoustic token이 embed 되어 input으로 summed up 됨:
(Eq. 4) $e_{c_{t,j}}=W_{a}^{j}\odot c_{t,j}$
(Eq. 5) $\mathbf{e_{c_{t}}}=\sum_{j=1}^{i-1}e_{c_{t,j}}$
- $\odot$ : index selection
- 한편으로 phoneme sequence는 language model의 prompt로 취급할 수 있음
- 특히 VALL-E는 주어진 speaker의 unique voice를 clone 하기 위해, enrolled speech의 acoustic token을 acoustic prompt로 사용함 - 이를 위해, $\tilde{\mathbf{C}}^{T\times 8}$과 같은 neural codec을 사용하여 enrolled speech를 tokenize 함
- 그러면 8개의 codebook으로부터의 embedded representation은 acoustic prompt $\mathbf{e_{\tilde{c}_{t}}}=\sum_{j=1}^{8}e_{\tilde{c}_{t,j}}$로 summed up 됨
- $i$-th codebook에서 acoustic token을 예측하기 위한 transformer input은 $(\mathbf{e_{x}}, \mathbf{e_{\tilde{c}}},\mathbf{e_{c_{:,<i}}})$의 concatenation으로 구성됨
- Positional embedding은 prompt와 acoustic sequence에 대해 개별적으로 계산됨 - 이후 current stage $i$에서 Adaptive Layer Normalization을 사용하여 network에 다음과 같이 inject 함:
- 즉, $\mathrm{AdaLN}(h,i)=a_{i}\mathrm{LayerNorm}(h)+b_{i}$
- $h$ : intermediate activation, $a_{i}, b_{i}$ : stage embedding의 linear projection
- AR 모델과 달리 NAR 모델에서는 각 token이 self-attention layer의 모든 input token에 attend 할 수 있음
- 추가적으로 acoustic embedding layer와 output prediction layer의 parameter를 share 함
- 즉, $j$-th prediction layer의 weight가 $(j+1)$-th acoustic embedding layer와 동일
- 앞선 AR 모델을 통해 first quantizer code를 얻은 다음, NAR 모델을 사용하여 나머지 7개의 quantizer code를 생성함
- Inference: In-Context Learning via Prompting
- Text-based langauage model에서 in-context learning은 additional parameter update 없이 unseen input에 대한 label을 예측하는 것을 의미
- 특히 TTS의 경우, 모델이 fine-tuning 없이 unseen speaker에 대한 고품질 음성을 합성할 수 있다면 in-context learning capability를 가진다고 볼 수 있음
- BUT, 기존 TTS 모델은 additional fine-tuning이 필요하거나 unseen speaker에 대해 낮은 성능을 보이기 때문에 in-context learning capability가 부족함 - 한편으로 language model에서 in-context learning을 수행하려면 prompt가 필요하므로, 논문은 다음과 같이 prompt와 inference를 설계함
- 먼저 text를 phoneme sequence로 변환하고, recording을 acoustic matrix로 encoding 하여 phoneme prompt와 acoustic prompt를 얻음
- 이후 두 prompt 모두 AR, NAR 모델에서 사용됨
- AR 모델의 경우, beam search를 사용했을 때 LM을 infinity loop로 이끌 수 있으므로 prompt에 따라 condition 된 sampling-based decoding을 사용
- NAR 모델의 경우, greedy decoding을 사용하여 highest probability를 가지는 token을 선택함 - 최종적으로 neural codec decoder를 통해 8개의 code sequence에 따라 condition 된 waveform을 생성함
- 여기서 acoustic prompt는 합성된 음성과 semantically relate 되거나 그렇지 않을 수 있으므로, 다음의 2가지 경우로 나누어짐:
- VALL-E
- 주어진 content를 unseen speaker에 맞게 생성하는 것을 목표로, 모델에는 text sentence, speech segment와 해당 transcription이 제공됨
- Speech의 transcription phoneme을 주어진 sentence의 phoneme sequence 앞에 phoneme prompt로 추가하고, speech $\tilde{c}_{:,1}$의 first layer acoustic token을 acoustic prefix로 사용함
- 이후 phoneme prompt와 acoustic prefix를 사용하여 speaker의 voice를 cloning 하고, 주어진 text에 대한 acoustic token을 생성함 - VALL-E-continual
- 전체 transcription과 utterance의 처음 3초 부분을 각각 phoneme과 acoustic prompt로 사용하여 모델이 continuation을 수행하도록 함
- 추론 과정은 주어지는 speech와 생성된 결과가 semantically continuous 하다는 것을 제외하면 앞선 VALL-E setting과 동일함
- VALL-E
- 특히 TTS의 경우, 모델이 fine-tuning 없이 unseen speaker에 대한 고품질 음성을 합성할 수 있다면 in-context learning capability를 가진다고 볼 수 있음
4. Experiments
- Settings
- Dataset
- Training : LibriLight
- Evaluation : LibriSpeech, VCTK - Comparisons : YourTTS
- Results
- LibriSpeech Evaluation
- LibriSpeech에 대한 zero-shot TTS 성능을 확인해 보면, VALL-E가 가장 우수한 정량적 성능을 보임
- SMOS, CMOS 측면에서도 VALL-E는 ground-truth 수준의 성능을 달성함
- Ablation study 측면에서 NAR 모델의 성능을 비교해 보면, prompt가 없는 모델은 가장 낮은 성능을 보임
- 한편으로 phoneme prompt를 추가하는 경우, WER이 크게 향상되어 content 생성에 큰 영향을 주는 것으로 나타남
- AR 모델 측면에서 acoustic prompt를 제거하는 경우, speaker identity 측면에서 성능 저하가 발생함
- VCTK Evaluation
- VCTK 측면에서도 마찬가지로 VALL-E가 가장 뛰어난 성능을 달성함
- 주관적 성능 평가 측면에서도 VALL-E는 YourTTS 보다 높은 성능을 보임
- Diversity Analysis
- 기존의 TTS 모델은 mel-spectrogram 생성이 각 step에 대한 reconstruction을 기반으로 하기 때문에, input text와 output waveform 사이의 strong one-to-one mapping을 가짐
- 반면 VALL-E는 sampling을 사용하여 discrete token을 생성하므로, 동일한 input text에 대해 다양한 output을 만들어낼 수 있음
- 실제로 아래 그림의 (a)와 같이 VALL-E의 output은 동일한 문장에 대해 서로 다른 length와 phrase duration을 가지는 음성을 생성함
- (b)의 경우에는 accent가 다른 음성을 생성하는 것을 확인할 수 있음
반응형
'Paper > Language Model' 카테고리의 다른 글
댓글