요 며칠 음성합성에 관해서 이거 저거 찾아보면서 뭘 보긴 했는데 정리릃 할 필요가 있겠다 싶어서 글로 남긴다.
먼저, 음성합성이란 분야는 굉장히 오래되었고 그렇기 때문에 고전적인 방법론이 많다. Unit-selection 방식과 Statistical Parametric 방식이 두 가지 주류다. 하지만 2016년과 2017년에 Wavenet, Tacotron과 같은 딥러닝을 이용한 방법이 압도적인 퍼포먼스를 보여줬고 완전히 딥러닝쪽으로 진입했다고 봐도 될 거 같다. 딥러닝을 이용한 방식은 Statistical Parametric 방식이다.
음성합성은 입력과 출력만 생각해보면 text를 모델에게 주면 그에 맞는 음성(Waveform)을 출력하는 과정이다. 그리고 이 과정은 두 단계로 나눠져 진행이 된다.
고전적인 방법에서 쓰는 말로는 Text-to-Acoustic Parameter의 역할을 하는 Acoustic Model, Acoustic Parameter-to-Waveform의 역할을 하는 Vocoder의 두 단계로 나뉘어 진행이 된다. 여기서 Acoustic Parameter는 f0, spectral envelope, gain, energy 같은 것들을 말한다. 이 부분은 음성 신호처리를 자세히 공부해본 것이 아니라 어떤 것인지 잘 모르겠다.
Tacotron은 text를 Mel-spectrogram으로 바꿔주는 역할을 하는 Acoustic Model이며, Wavenet은 Mel-spectrogram을 실제 음성(Waveform)으로 바꿔주는 Vocoder이다.
Tacotron도 그렇고 Wavenet도 그렇고 비약적인 성능의 향상을 보여줬기 때문에 음성합성 연구는 딥러닝을 이용한 End-to-End 방식으로 넘어가게 되었다.
이제 딥러닝을 통한 음성합성에서 Text-to-Mel의 역할을 해주는 Acousitc Model과 Mel-to-Waveform을 해주는 Vocoder의 대표격인 모델 몇가지를 살펴보자.
Text-to-Mel
두 가지 모델에 대해서 간단히 정리하자. Attention을 사용해서 Mel과 text 간의 alignment를 학습하는 Tacotron과 Phoneme의 길이를 계산하는 duration-based 모델인 Fastspeech를 알아보자.
Tacotron (Attention-based)
Tacotron은 문자열을 입력받아서 그에 해당하는 Mel spectrogram을 프레임 단위로 출력하는 Encoder-Decoder 형식의 모델이다.
audio-text pair만 있으면 학습이 가능한 end-to-end 모델이다. 이것이 왜 가능하냐면 alignment를 attention을 통해서 학습하기 때문이다. 처음 제시한 Tacotron에서는 Bahdanau attention을 사용하였다. Alignment를 직접 학습하는 모델의 특성상 훈련 시의 alignment가 잘되면 generalization의 성능이 좋다고 한다. 그래서 학습이 잘 안될떈 local sensitve attention과 같이 다양한 시도를 해보는게 좋다고 한다.
이 계열 모델의 단점은 auto-regressive한 방식으로 frame별로 생성하기 때문에 느리다. 그리고 alignment가 잘 안되면 아무 소용이 없다. alignment를 시각화 했을 때 중간이 끊어진다던가 반복하기 쉽다고 한다.
Fastspeech (Duration-based)
Tacotron은 중간에 alignment를 학습하긴 하지만 각 phoneme별 길이를 명시적으로 예측하진 않는다. Fastspeech는 phoneme별 길이를 예측하는 모듈을 따로 둬서 이를 합성에 Mel-spectrogram의 합성에 사용한다.
이 길이 예측 모듈이 왜 필요한지를 생각해보자. "Apple"이라는 text에 해당하는 Mel-spectrogram을 생성한다고 해보자. Fastspeech는 phoneme을 입력으로 받기 때문에 일단 "Apple"을 phoneme sequence로 바꿔보자.
길이가 4다. 그런데 생성된 Mel-spectrogram도 길이가 4일까? phoneme별로 다른 길이를 가질 수 있다. 가령 phoneme sequence는 길이가 4지만 각 phoneme에 할당되는 frame의 수가 [1,3,2,1]의 순서라면 총 길이는 8일 sequence가 된다. 이제 이런 정보까지 포함해서 퉁쳐서 학습한 것이 Tacotron이었고 Fastspeech는 이를 명시적으로 예측하는 모듈을 만들어서 학습을 진행한다. 이걸로 좀 더 강건한 모델을 만들 수 있다. 그리고 Transformer를 채택함으로 추론을 병렬적으로 가능하게 하여 빠르다.
제일 왼쪽이 모델의 전체 구조이고 옆의 그림들이 각 모듈의 구조를 나타낸 그림이다. 이제 phoneme의 길이는 그럼 어떻게 예측할까라고 궁금할 수 있다. 그 alignment 데이터를 만들어서 학습해야 되나? 논문에서는 auto-regressive한 Transformer TTS 모델을 학습하여 여기의 attention 중에서 가장 대각선과 비슷한 attention을 사용하여 길이 예측 모듈을 학습했다고 한다.
이 외에도 음성의 속도, 높낮이를 조절 가능하게 했다는데 이 부분은 잘 모르겠다.
Attention vs Duration based models
두 부류의 모델을 살펴봤고 각 모델의 특징을 정리하고 Vocoder로 넘어가자.
Attention-based 모델은 학습에서 alignment가 필요 없다는 장점이 있으며 adaptation이 비교적 쉽다. 그리고 생성되는 음성의 질의 upper bound가 높다는 장점이 있다. 하지만 학습과정이 쉽지 않다.
Duration-based 모델은 생성 속도가 빠르다는 장점이 있고 추론 시에 alignment로 인한 문제(skipping, repeating)가 발생할 확률이 낮다. 그리고 alignment 데이터만 있다면 학습이 쉽다. 물론 데이터가 있다면 얘기다.
phoneme의 길이를 예측하는 모듈을 사용하며 디코더는 auto-regressive한 non-attentive Tacotron도 연구된다고 한다.
Reference
http://web.stanford.edu/class/cs224s/lectures/224s.20.lec14.pdf
'Machine Learning' 카테고리의 다른 글
Flow Matching 설명 (2) | 2024.04.06 |
---|---|
so-vits-svc 구조 정리 (2) | 2023.07.01 |
연구프로젝트 샘플 (0) | 2021.12.24 |
Transfer Learning from Speaker Verfication to Multispeaker Text-To-Speech Synthesis 리뷰 (0) | 2021.10.07 |
딥러닝을 활용한 음성합성(TTS) 훑어보기(Vocoder) (0) | 2021.09.11 |