심화 스터디/논문 리뷰 스터디

[논문 리뷰 스터디] Conditional Variational Autoencoder with Adversarial Learning forEnd-to-End Text-to-Speech (1)

빵지0 2023. 5. 10. 11:33

17기 안영지

이 논문은 텍스트를 입력으로 받아서 음성을 생성하는 End-to-End Text-to-Speech (TTS) 모델을 제안하는 논문입니다. 이 논문에서는 Conditional Variational Autoencoder (CVAE)와 Adversarial Learning을 결합하여 TTS 모델을 학습합니다.

 

CVAE는 VAE의 확장된 모델로서, 입력 데이터에 조건을 추가할 수 있다. 이 논문에서는 입력으로 받는 텍스트 데이터에 대한 조건을 CVAE 모델에 추가한다. CVAE는 입력 데이터에 대한 확률분포를 학습하여, 이 분포로부터 랜덤하게 샘플링하여 새로운 데이터를 생성할 수 있다. 이 논문에서는 CVAE가 학습한 분포로부터 샘플링된 특징 벡터를 이용하여 음성을 생성한다.

Adversarial Learning은 생성자와 판별자 두 개의 네트워크를 이용하여 모델을 학습한다. 생성자는 실제 음성과 구분하기 어려운 가짜 음성을 생성하는 것이 목표이고, 판별자는 실제 음성과 가짜 음성을 구분하는 것이 목표이다. 이 논문에서는 생성자와 판별자를 이용하여 학습한 모델로부터 생성된 음성이 실제 음성과 유사한지 판별한다.

결과적으로, 이 논문에서 제안한 End-to-End TTS 모델은 기존의 TTS 모델보다 높은 음성 품질과 유사도를 보여준다.

VITS

VITS는 시각 정보 기술 시스템이지만, 음성합성 기술과도 관련이 있다. 음성합성 기술은 컴퓨터가 인간의 음성을 분석하여 그에 맞는 음성을 생성하는 기술이다. 이 기술은 음성인식, 음성합성, 음성감정 인식 등 다양한 분야에서 활용된다.

VITS에서는 음성합성 기술을 활용하여 시각적 정보와 함께 음성으로 정보를 전달할 수 있다. 예를 들어, 시각 장애인이 VITS를 사용할 때, 시각적 정보를 음성으로 전달함으로써 시각적 정보를 이해하고 처리할 수 있다. 또한, VITS에서는 음성 인식 기술을 활용하여 음성 명령을 인식하고 처리할 수 있다.

VITS는 이미지 및 비디오 인식, 객체 인식, 얼굴 인식 등의 기술을 사용하여 시각적 정보를 추출하고, 이를 TTS(Text-To-Speech) 기술을 통해 음성으로 변환하여 사용자에게 전달한다. 이러한 과정에서 머신러닝, 딥러닝 등의 인공지능 기술이 활용된다. 또한, VITS는 음성 인식 기술을 사용하여 사용자의 음성 명령을 인식하고 처리할 수도 있다.

TTS(Text-To-Speech)는 텍스트를 음성으로 변환하는 기술이다. 이를 위해서는, 먼저 입력된 텍스트를 음성 합성 엔진으로 전달한다. 음성 합성 엔진은 입력된 텍스트를 분석하여 음성으로 변환할 수 있는 텍스트 단위(음절, 단어, 문장 등)를 판별한다. 그리고 이러한 텍스트 단위에 대해 음성 파라미터를 생성하여 음성 데이터를 생성한다. 음성 파라미터는 음성의 속도, 음높이, 음색 등을 결정하는 파라미터로, 이렇게 생성된 음성 데이터는 디바이스나 시스템을 통해 사용자에게 전달된다.

 

딥러닝을 이용한 음성 인식, 음성 처리, 화자 인식, 감정 인식 등에서 많이 쓰이는 음성의 특징 추출 방법은 다음과 같다.

 

Mel spectrogram

음성 데이터를 raw data를 그대로 사용하면 파라미터가 너무 많아지고, 데이터 용량이 너무 커져 보통 mel spectrogram을 많이 사용함

 

1. 음성파일 로드

sampling rate 24000 으로 구성된 wav 파일을 로드 sampling rate가 24000이라는 말은 1초에 음성 신호를 24000번 sampling 했다는 뜻

 

2.STFT(Short Time Fourier Transform)

푸리에 변환 (Fourier Transform)

입력 신호를 다양한 주파수를 가지는 주기함수들로 분해하는 것 하지만 음성 신호에 그냥 fft를 사용해 버리면 각각의 주파수 성분이 언제 존재하는지는 알 수 없다 (시간정보 손실 → 음성합성 & 인식에 이용하기에는 적절 x)

→ 음성 데이터를 시간 단위로 짧게 쪼개서 FFT 를 해 준다!! (STFT-librosa에 존재하는 stft 사용 가능)

1. n_fft : length of the windowed signal after padding with zeros.

한 번 fft를 해 줄 만큼의 sequence 길이

2. hop_length : window 간의 거리

3. win_length : window 길이

 

3.Mel Spectrogram

사람들은 음성 신호를 인식할 때 주파수를 linear scale로 인식하지 x 낮은 주파수를 높은 주파수보다 더 예민하게 받아들임. 즉 500 ~ 1000 Hz 가 바뀌는건 예민하게 인식하는데 10000Hz ~ 20000 Hz가 바뀌는 것은 잘 인식 못함

그래서 이 주파수를 mel scale로 볼 수 있게 한 것

Mel(f) = 2595 log(1+f/700) 을 하면 mel scale 로 변환이 가능

 

MFCC

('Voice Recognition Using MFCC Algorithm' 논문 참고)

MFCC는 '음성데이터'를 '특징벡터' (Feature) 화 해주는 알고리즘

librosa를 통해 MFCC feature 뽑기

사람 달팽이관 특성을 고려한 값을 Mel-scale 이라고 함

퓨리에 변환으로 음성 데이터에서 한 번에 Mel-Scale을 뽑으면, 같은 문장이더라도 천차만별인 음성 길이에 의해 같은 음성이라고 학습시키기 어려움.

이를 해결하기 위해 MFCC에서는 음성데이터를 모두 20~40ms 단위로 쪼개고, 쪼갠 단위에 대해서 Mel 값을 뽑아서 Feature로 사용.

여기서 사람의 음성은 20~40ms 사이에서는 음소(현재 내고 있는 발음)가 바뀔 수 없다는

연구결과들을 기반으로 음소는 해당 시간내에 바뀔 수 없다고 가정함

 

Pre-Emphasis

사람이 발성 시 몸의 구조 때문에 실제로 낸 소리에서 고주파 성분은 많이 줄어들게 돼서 나옴.

그래서 먼저 줄어든 고주파 성분을 변조가 강하게 걸리도록 High-pass Filter를 적용

 

Sampling and Windowing

Pre-emphasis 된 신호를 20~40ms 단위의 프레임으로 분할

이 때 프레임을 **50%**겹치게 분할(프레임끼리 연속성을 만들어주기 위해)

프레임과 프레임의 접합 부분에서 순간 변화율이 ∞ (무한대) 가 되는 것을 방지하기 위함.

그리고 이 프레임들에 대해 Window각각 적용. 보통 Hamming Window를 많이 사용

A frame과 B frame이 서로 연속되지 않는다면,프레임이 접합하는 부분에서의 주파수 성분이 무한대가 되어버림

이를 방지하기 위해 프레임의 시작점과 끝점을 똑같이 유지해주기 위해서 Hamming Window를 적용

 

Fast Fourier Transform

각각의 프레임들에 대해 Fourier Transform을 통해 주파수 성분을 얻어냄

여기 FFT 까지만 적용하더라도 충분히 학습 가능한 피쳐를 뽑을 수 있다.

하지만 가 보통

더 나은 성능을 보이기 때문에 아래의 과정을 진행한다.

 

Mel Filter Bank

사람 몸의 구조를 고려한 Mel-Scale을 적용한 feature를 얻기 위해 이 과정을 진행

각각의 프레임에 대해 얻어낸 주파수들에 대해서 Mel 값을 얻어내기 위한 Filter를 적용

Mel filter

달팽이관의 특성을 고려해서 낮은 주파수에서는 작은 삼각형 Filter를 가지고, 고주파 대역으로 갈수록 넓은 삼각형 Filter를 가짐

삼각형 필터 N개를 모두 적용한 필터를 Mel-filter Bank 라고 부름

퓨리에 변환을 통과한 신호가 위의 Mel-filter Bank를 통과하면 Mel-Spectrogram이라는 피쳐가 뽑힘

 

Discrete Cosine Transform (DCT) 연산

앞에서 나온 Mel-Spectrogram이라는 피쳐에 대해 행렬을 압축해서 표현해주는 DCT 연산을 수행

Output으로 MFCC (Mel-Frequency Cepstral Coefficient)가 나옴

 

앞의 Mel-Spectrogram은 주파수끼리 Correlation이 형성되어 있는데,

이러한 상관관계를 De-Correlate해주는 역할 또한 수행.

 

1. Introduction

Text-to-speech(TTS)는 주어진 글을 발화로 바꾸는 시스템이다. FastSpeech 2s나 EATS는 end-to-end 시스템이었으나 두 단계로 나뉜 모델들보다 성능이 좋지 않았다. 본 논문에서는 두 단계로 이루어진 모델들보다 뛰어난 parallel end-to-end TTS를 소개하고, Variational autoencoder(VAE)를 이용해 TTS의 두 모듈을 연결했다. 좋은 품질의 발화음성을 생성하기 위해 conditional prior distribution에 normalizing flow를 적용하고, waveform 영역에서 adversarial training을 적용했다. Audio를 잘 만들기 위해서는 주어진 문장이 다양하게 발화될 수 있도록 one-to-many를 할 수 있어야 한다. 이를 해결하기 위해 stochastic duration predictor를 이용했다.