[논문 리뷰] Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers
들어가며
안녕하세요 오늘 소개 드릴 논문은 VALL-E라고도 불리는 “Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers”[1]입니다. 지난번에 리뷰한 YourTTS[2]논문보다 더 적은 음성 (3초)으로 좋은 퀄리티의 zero-shot TTS가 가능하다고 논문에서 주장하고 있습니다. 오늘 주요 내용은 어떻게 3초음성 만으로 가능한지 설명드리려 합니다.
Introduction
Few-shot 및 zero-shot TTS는 개인화된 음성을 만들기 위한 목적으로 다양한 방법으로 연구가 진행되고 있습니다. 기존의 연구의 경우 sepaker adaptation이나 speaker encoding을 사용하는 방법이 제안 되었으나, 이러한 방법은 추가적인 fine-tuning을 요구하며 복잡한 feature나 구조를 요구합니다.
따라서 VALL-E에서는 복잡한 설계를 하는 것을 대신해 최대한 다양한 데이터를 활용하여 모델이 generalization이 잘되도록 근본적인 해결책을 찾는 방향으로 연구를 진행하였습니다. 따라서 이미 large data에서 좋은 성능을 보이고 있는 language model을 활용하여 TTS에 적용하려는 것이 VALL-E의 key idea라고 할 수 있습니다.
Speech Quantization
VALL-E가 어떻게 language model을 활용하였는지 설명하기에 앞서 speech quantization에 대한 배경지식이 필요합니다. 오디오는 디지털화 되는 경우 timestep 당 65,536 (16-bit 기준)개의 가능성이 존재하는데 이를 다 예측하기보다는 µ-law transformation과 같은 speech compress 방법을 사용합니다. VALL-E에서는 audio codec을 사용하여 speech quantization 문제를 해결하였는데, 이 방법의 장점은 크게 3가지가 있습니다.
- It contains abundant speaker information and acoustic information, which could maintain speaker identity in reconstruction
- There is an off-the-shelf codec decoder to convert discrete tokens into a waveform
- It could reduce the length of time steps for efficiency to address the problem in µ-law transformation
이를 토대로 VALL-E는 pre-trained neural audio codec model인 Encodec[3]을 사용하였습니다. Encodec은 residual vector quantization(RVQ) 방법을 사용하였는데 n개의 quantizer를 만들어 낼 수 있습니다.
Model structure
VALL-E는 Text (Phoneme) -> Discrete code -> Waveform 이렇게 TTS task를 수행하고 있습니다. Input text (x)는 x = {x0, x1, . . . , xL}와 같이 표현이 가능하고, 대응되는 음성은 Encodec을 통해 Encodec(y) = C^{T ×8}와 같이 표현해 줄 수 있습니다. 여기서 C는 acoustic code matrix입니다. 그후 VALL-E는max p(C|x, C˜)를 objective로 학습을 진행을 해줍니다 (C˜ 는 acoustic prompt matrix). 그후 decodec으로 C로 부터 최종 음성을 만들어 주는 작업을 진행합니다. 다시 말해 VALL-E는 prompt로 부터 C를 찾는 모델을 설계해 준 것이라 할 수 있습니다.
VALL-E는 그림(1)과 같이 Auto-regressive (AR) transformer decoder와 Non-AR transformer로 구성 되어 있습니다. 이와 같이 두가지로 구성하여 AR에서는 1번째 tokenizer로 부터 길이를 예측하고, NAR에서는 나머지 tokenizer를 통해 speaker identity를 예상할 수 있습니다. 모델 학습의 파라미터는 다음 수식을 통해 최적화가 가능합니다.
Experiment
성능을 평가하기 위해 TTS 논문에서 주로 사용되는 comparative mean option score (CMOS)와 similarity mean options score (SMOS)를 사용하였습니다. 이 정성적인 지표 외에 WavLM-TDNN[4]이라는 speaker verificaiton model을 통해 Equal Error Rate (EER)을 통해 정량적인 수치또한 비교해 주었습니다.
먼저 single speaker dataset인 LJspeech의 경우 아래와 같이 다른 모델보다 더 좋은 성능을 보여주고 있습니다.
그리고 multi speaker dataset인 VCTK dataset에 대해서는 zeroshot을 수행하였는데요. 아래의 표에서 알 수 있듯이 3초의 음성만으로도 가능하며 과거 리뷰한 YourTTS보다 더 좋은 성능을 내고 있음을 확인 할 수 있습니다.
마치며
오늘은 VALL-E 논문에 대해 리뷰에 보았습니다. 처음에 3초만의 음성만으로 zero-shot이 가능하다고 했을때 어떻게 모델을 설계 하였는지 정말 궁금하였습니다. 실제로 기본 논문과 다른 TTS pipeline을 통해 모델을 설계하고 좋은 성과를 낸 방향성에 대해 많은 재미를 느낄 수 있는 논문이였습니다.
Reference
[1] Wang, Chengyi, et al. “Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers.” arXiv preprint arXiv:2301.02111 (2023).
[2]Casanova, Edresson, et al. “Yourtts: Towards zero-shot multi-speaker tts and zero-shot voice conversion for everyone.” International Conference on Machine Learning. PMLR, 2022.
[3] Défossez, Alexandre, et al. “High fidelity neural audio compression.” arXiv preprint arXiv:2210.13438 (2022).
[4] Chen, Sanyuan, et al. “Wavlm: Large-scale self-supervised pre-training for full stack speech processing.” IEEE Journal of Selected Topics in Signal Processing 16.6 (2022): 1505–1518.