본문 바로가기
논문으로 현업 씹어먹기

[VALL-E] Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers 리뷰 - (1~4/12 Page.)

by Yoo Sung Hyun 2023. 1. 16.
728x90

3초만을 가지고 TTS를 할 수 있고, 심지어 잘된다.

GPT3의 Incontext-Learning에서 영감을 받았다고 한다.

Language Modeling이다. 다만 TTS FrameWork를 사용했을뿐.

 

일단 읽으면서 되는데로 정리를 할 예정이라 얼마나 길어질지 모르겠다.

오늘까지 리딩으로 먼저 읽어보면 좋을 논문

1. AudioLM(vocoder없는 speech to speech 모델링을 위한 Spectrogram 표현 기법) : https://arxiv.org/abs/2209.03143

 

AudioLM: a Language Modeling Approach to Audio Generation

We introduce AudioLM, a framework for high-quality audio generation with long-term consistency. AudioLM maps the input audio to a sequence of discrete tokens and casts audio generation as a language modeling task in this representation space. We show how e

arxiv.org

2. SoundStream(어떻게 Audio 표현을 잘 압축할 수 있을까?) : https://arxiv.org/abs/2107.03312

 

SoundStream: An End-to-End Neural Audio Codec

We present SoundStream, a novel neural audio codec that can efficiently compress speech, music and general audio at bitrates normally targeted by speech-tailored codecs. SoundStream relies on a model architecture composed by a fully convolutional encoder/d

arxiv.org

Abstract

 TTS음성합성을 Language Modeling approach로 달성했음을 계속 강조한다. Wav2Vec이나 VQ-VAE, HuBERT등이 익숙한 사람들에게는 친숙할 Discrete codes를 이용해서, Spectrogram이 필요없는 완성품으로써의 모델이며, 60K 시간의 많은 데이터로 개인화를 고작 3초만으로 달성할 수 있다고 한다.

 TTS에서도 발화의 자연스러움과 발화자와의 유사함이 매우 성능이 좋다고 표현하며, 감정이나 음향 효과들도 재현이 가능함을 강조한다.

 데모사이트: https://valle-demo.github.io/

모델에 대략적인 구조

기존에 mel-spectrogram 과정이 필요없음을 강조하며 그 부분은 discrete code로 동치가 된다.(wav2vec과 거의 흡사)

1. Introduction

 최근 시스템의 문제점을 지적하고, VALL-E는 어떤 사상으로 접근하게 되었는지에 대한 설명이다.

기존 문제점

1. Mel-Spectrogram을 사용하는 것은 여전히 불편하다

2. 데이터 양이 많지 않고, 품질저하 이슈에 시달렸다. (노이즈 등에 따른)

3. 최근까지의 TTS는 구조가 복잡하고, Engineering 공수가 크다

VALL-E의 접근방식

1. TTS 프레임워크를 띄는 NLP모델이라는 접근 (첫 시도일 것임을 계속 자랑함)

2. Text Modeling처럼 많은 데이터로 Prompting-based의 Task로 해석해보자! (음성 예시를 줄테니, 비슷하게 Text를 모사해봐 -> Incontext Learning)

3. 60K시간의 음성과, 7000명의 독립적인 화자를 구했음.

4. 데이터는 노이즈도 많고, 오타도 있었지만, Large 데이터로 어떻게든 노이즈에 강인해지길 기원함.

    -> 실제로 Discrete Code 형태의 음성 인코딩 기법들은, 데이터가 많고 적당히 노이즈가 있을 수록, 노이즈가 있어도 K-Means등을 잘 수렴하도록 학습되기 때문에, 오히려 음성 표현력을 Robust하게 만든다는 강점이 있다. (wav2vec에서 설명)

5. CMOS가 얼마나 올라갔는지에 대한 설명 (인간 주관적인 메트릭이므로 설명 생략)

6. 반향, 잔향이나 감정들도 감안해서 TTS할 수 있음을 발견하였다. (전화가 전화처럼 들리게 되는 이유인 것도 같음)

2. Related Work

Zero-Shot TTS: cascaded 방식과 End-To-End 방식으로 나눌 수 있다.

  • cascaded방식: acoustic model과 vocoder를 mel spectrogram을 사용하여 처리한다.
  • End-To-End 방식: vocoder의 단점을 타개하기 위해 보코더를 한꺼번에 학습시킬 수 있도록 한다.

 실 상황에서는 못본 화자에 대해서도 대응이 가능해야 하므로, 대부분의 작업은 cascaded 방식을 선호한다. (아마 vocoder를 따로 학습시킨다던지 할 수 있기 때문이지 않을까 사료됨.)

 그 이후에 speaker adaptation 방식이 소개되고, meta-learning을 이용한 speaker adaptation으로 5-shot learning, speaker encoding-based 방법론까지 소개된다.

  • speaker adaptation: 화자 임베딩을 위한 레이어를 추가하여, 화자가 추가될때마다 해당 임베딩에만 추가하면 되도록 처리한다. (문제는 해당 임베딩 Fine-Tuning이 비록 공수는 적더라도, 화자가 자주 추가되면 매번 해줘야해서 운영에 부적합하다)
  • speaker encoding-based: YourTTS에서 참고한 내용으로는, 많은 화자에 대한 embedding을 화자 분류 문제로 학습시키고, 모르는 화자의 음성이 들어오더라도, 해당 embedding에서 가장 유사한 발화 표현을 캐치해 낼 수 있기를 기대하는 방식

 그 이후에는 Diffusion 방법론들도 소개되며 발전해왔고, VALL-E는 cascaded 방법론과 유사하게 학습하지만, audio codec을 사용한다는 점을 강조한다.(discrete code를 쓰기 때문이지 않을까 싶음)

 또한, 음성을 표현하기위한 복잡한 Pre-Training 방법론 등이 사용되지 않은 GPT-3기반의 in-context learning의 첫번째 사례라고 자랑하는데, VQ 다뤄본 입장으로, 이후에 읽다보면 호락호락하지 않을 걸로 예상됨...

Spoken generative pre-trained models: 음성을 모델이 이해하기 위한 노력으로, Wav2Vec, HuBERT와 같은 방법론들이 사용되었고, Speech Generation 분야에서도 AudioLM과 같은 방법론들이 사용되었다.

 Speech To Speech Generation에서는 Textless한 음성합성이 화재로, GSLM(논문 읽었는데 아직 리뷰는 나중에 할예정)

GSLM: Meta에서 나온 논문으로, 발화의 순서도 결국엔 언어적 특징을 가지고 있을테니, 음성 발화로 CausalLM을 학습시키면, 사과를 말하면 다음에 음성으로 쥬스가 나오지 않을까? 그리고 이 과정에서 음성 특징을 잘 학습할 수 있을테니, 다른 분야로써의 확장도 수월하게 될 것이라는 가설을 세우고 실제로 증명하고, 매우 잘된다.
 문제는 End-To-End가 아닌 모델 3갠가? Shallow Fusion하는 형태라, 상호 모델간의 성능에 너무 큰 영향을 미쳐서, 이런 부분들은 이후에 개선해 나갈 예정이라고 함.

 이 HuBERT 사상을 사용해서 잘 되었고, 이후에는 여기에 VQ-VAE를 사용하여 더 개선하는것에 이른다.

HuBERT: MFCC -> K-Means(same as codebook) -> Masked Prediction해서 학습하는 것으로, MFCC의 K-Means값으로도 음향 특징을 충분히 잘 압축할 수 있음을 검증함. (Wav2Vec 2.0은 Raw Audio -> Vector Quantize (codebook) -> Masked Predcition으로 VQ가 너무 어렵고, 사람이 이해하기 추상적이라는 이유로 HuBERT를 하는데 더 잘됨)

 AudioLM은 audio codecs를 이용하여 유사하게 학습하는데, 추가적인 vocoder나 HifiGAN없이 Speech-to-Speech를 가능하게 했다고 한다.(Meta의 GSLM이 여름쯤이었고 AudioLM은 그 이후에 나왔으며 모델 성능 희생양으로 GSLM을 사용함)

참고로 GSLM은 vocoder가 필요하다.

 Speech-To-Speech 모델이지만, TTS도 같은 맥락이니 음성 합성에서 활용할 수 있다는 판단이라고 하며, mel spectrogram을 autoregressive하게 Pre-Training하는 SpeechT5에 대한 소개도 나온다.

SpeechT5: STT나 TTS나 결국 상호 반대 역할만 수행하면 되니 음성과 Text를 둘다 Pre-Training 시킬 수 있으면, Multi Task Learning처럼 더 성능좋은 모델을 양면으로 구축할 수 있을 것이다. 를 검증하는 논문

 여튼, Pre-Training의 장점은, Fine-Tuning하는데 많은 데이터가 필요하지 않다는 점을 강조한다. 이전 TTS pre-training 방법론들은 1K 시간의 음성으로 했지만 VALL-E는 60K 시간으로 했음을 강조하며, audio codec을 사용하여 중간에서 음성 표현을 처리하고, in-context learning 방법을 사용한다고 소개한다.

3. Bakcground: Speech Quantization

 음성은 16bit Int로 표현되기때문에, time step별로 예측해야하는 갯수가 65536개에 이르며, sampling rate를 고려한다면, 말도안되게 길이가 길어진다. 그래서 이런 표현정보를 압축하기위해 Quantization 기법이 필요하다.

 기존에 WaveNet은 뮤-law 변환을 사용하여 다시 음성으로 변환도 잘 되도록 처리하긴 했는데, 속도가 너무 느렸다.

 Wav2Vec과 HuBERT방법론은 빠른데, 발화자 특성을 고려하지 않는 학습방식으로, 다시 원복시켰을때 품질이 떨어졌다.

 AudioLM이 K-Means로 self-supervised를 하고, acoustic tokens을 neural codec model로 부터 얻어오는데, 품질이 매우 좋았다. (아마 HuBERT K-Means의 빠른 장점과, WaveNet의 원복 장점을 따오는 형태이지 않을까 상상해본다.)

 이 논문은 AudioLM을 따라 discrete tokens를 생성한다. 또한 unseen speaker에 대해서도 높은 품질의 waveform을 얻어낼 수 있었다. (discrete 하게 된 wav2vec이 화자 종류(방언, 노인 등)에 상관없이 잘 되는 경향이 있었다. 그래서 뭔가 unseen speaker의 발화에서도 발화 특징만을 잘 추려오는게 아닐까 생각된다.)

 고전적인 Quantization 방법론(CPC 등이 있을듯) 보다 딥러닝 방법론이, 빠르고, 정보 손실도 더 적다고 강조한다.

Contrastive Predictive Coding (CPC): 수학 공식을 통해 이산화 시키고, 통계적 학습방법을 통해 어떤 벡터값이 들어왔을때 discrete하게 표현할 수 있도록 학습한다. 수학 공식을 통해 무지성으로 압축되기 때문에, 정보 손실이 크다. (자세한 방식은 기억 안나는데 여튼 고전적 VQ방법론이고, 중요한건 https://arxiv.org/abs/2104.00355 이 논문만 봐도 CPC가 잘 안됨을 알 수 있음)

 AudioLM 방식이 1) HuBERT와 같은 방법론보다 정보량이 많아, 원복이 잘되었으며, 2) Vocoder가 필요가 없다. 3) 뮤-law변환 방법보다 속도도 빠르다. 뭐 이런이유로 선택하게 되었음을 논리를 쌓아나가며 설명함.

 

 Neural Audio Codec Model로 Encodec을 Pre Train 했다고 한다. (아까는 AudioLM이라며?)

 오디오를 청크사이즈로 잘라, Quantize해서 오토인코더로 Mel Spectrogram을 복원하는 것으로 학습하는 모델인가본데, 이게 AudioLM이 참고한 SoundStream논문에서의 RVQ랑 매우 흡사하게 생겼다.

Encodec
RVQ

아마 그래서, 그냥 비슷한 개념이니 약간 혼용되서 언급되어진 듯 하다. 구체적인 Audio Hz와 Chunk Size등의 설정값 설명이 뒤를 이으기 때문에 생략한다.

 

4번 부터 본격적으로 VALL-E의 소개가 나온다.

728x90

댓글