2023. 5. 7. 14:53ㆍAI/논문 정리
Keyword
Mel Spectogram
WaveNet
Tacotron2
한줄 요약: Tacotron이라는 모델을 통해 Mel Spectogram을 생성하고 이를 WaveNet의 입력으로 주어 음성 합성을 하니 기존보다 성능이 크게 개선되었다.
Abstract
seq2seq network + WaveNet(Vocoder, WaveNet이 Vocoder 역할을 한다)
Vocoder를 활용하여 MelSpectogram으로부터 시간 영역의 파동을 합성
WaveNet 아키텍쳐의 크기를 상당히 줄일 수 있다.
4.53의 MOS 달성
1. Introduction
기존의 방식은 사전 녹음된 Waveform의 작은 단위를 이어붙이는 단위 선택을 통한 연결적 합성
예를 들면, '안', '녕', '하', '세', '요'를 각각 녹음하고 이것을 이어붙여서 합성
but, 인간의 말과 비교했을 때 부자연스럽다...
WaveNet은 시간 도메인 웨이브폼의 생성 모델.
WaveNet의 입력으로 언어적 특징, 예상된 로그 기본 주파수(F0) 및 음소 지속 시간 등 언어와 관련된 매우 전문적인 도메인 지식이 필요하다.
Tacotron은 문자열에서 magnitude spectogram을 생성하기 위한 seq2seq 모델이다. 이 magnitude spectogram으로 음성을 합성(vocode)하기 위해서 Griffin-Lim 알고리즘과 역 단기 푸리에 변환을 이용한다. 그러나 이 방법은 vocode로 WaveNet을 활용할 때에 비해 오디오 품질이 떨어진다.
이를 해결하기 위해 Tacotron2가 나왔다. 이 모델은 문자열을 mel-spectogram으로 바꾸고 음성 합성을 위한 Vocoder로 수정된WaveNet을 이용한다. 이를 통해 높은 오디오 품질을 달성하였다.
유사한 접근법을 가진 모델로는 Deep Voice3가 있다.
2. Model Architecture
모델의 구조는 두 가지 파트로 구성된다.
1. 문자열에서 Mel-spectogram을 생성(Seq2Seq with attention 이용) ※ Seq2Seq는 encoder와 decoder를 가진 모델을 의미
2. Mel-spectogram을 통해 음성을 합성(WaveNet 이용)
2.1. Intermediate Feature Representation
Intermediate Feature Representation은 처음 입력으로부터 생성되어 다른 모델에 입력으로 들어가기 위한 중간 입력을 뜻하며 처음 입력의 특성을 가지고 있다.
Mel-spectorgram이 Tacotron2에서 Intermediate Feature Representation 역할을 한다.
그러면 왜 Mel-spectogram을 이용하는 것일까?
1. 시간 도메인에서 쉽게 계산할 수 있기 때문에 이을 두 개의 요소를 분리하여 학습할 수 있다.??
2. 각 프레임 내에서 위상에 불변하기 때문에 Squared Error를 이용하여 쉽게 학습할 수 있다. ??
3. 음성 인식에 필수적인 낮은 주파수를 강조하고 불필요한 정보인 높은 주파수를 강조하지 않기 때문에 정확한 음성 인식을 할 수 있다.??(why 음성 인식?)
4. 더 많은 정보를 제거하기 때문에 더 간단하고 하위 수준의 음향 표현이 가능해진다.??
개인적으로 이해한 바로는 Mel-spectogram에는 인간 음성을 표현하기 위해 필요한 정보들만이 최소로 들어가기 때문에 모델이 더 정확한 추론을 할 수 있다.
2.2. Spectrogram Prediction Network
아래의 사진은 Tacotron 2의 구조이다.
문자열2Mel-Spectogram
파란색 블록은 Mel-Spectogram을 만들기 위해 encoding을 하는 블록이고
주황색 블록은 Mel-Spectogram을 만들기 위해 decoding을 하는 블록이다
Mel-Spectogram2음성
초록색 블록은 Mel-Spectogram으로부터 음성을 합성하기위해 Vocoding을 하는 블록이다.
Mel-Spectogram은 50ms 프레임 크기, 12.5ms 프레임 홉, Hann window 함수를 사용하여 단기 푸리에 변환(STFT)을 통해 계산된다.?? 라벨을 만들기 위해서 이렇게 사용되는 건가?
인코더의 특징은 다음과 같다.
1. 512차원 문자 임베딩을 사용하였다.
2. 5 X 1 모양을 가진 512개 필터를 포함하는 3개의 컨볼루션 레이어를 거쳐 배치 정규화와 ReLU 활성화를 거친다.
3. 그 다음에 있는 양방향 LSTM에는 각 방향당 256개씩 총 512개의 유닛이 입력으로 들어간다.
4. Location Sensitive Attention이라는 어텐션 단계를 거친다. 어텐션 확률은 입력 및 위치 기능을 128 차원의 숨겨진 표현으로 프로젝션 한 후 계산된다. 위치 기능은 길이 31의 32 개의 1-D 컨볼루션 필터를 사용하여 계산된다. ??
디코더의 특징은 다음과 같다.
1. 입력 시퀀스로부터 한번에 하나의 프레임씩 Mel-Spectogram을 예측한다.
2. 이전 타임 스텝의 예측은 먼저 256개의 숨겨진 ReLU 유닛을 가진 2개의 fully connected layer로 이루어진 작은 프리넷을 통과한다.( 프리넷이 병목 현상을 일으키는 것이 어텐션을 학습하는데 필수적이다.??)
3. 프리넷 출력과 어텐션 컨텍스트 벡터는 연결되고 1024개 유닛을 가진 2개의 단방향 LSTM 층으로 이루어진 스택을 통과한다.
4. LSTM 출력과 어텐션 컨텍스트 벡터의 연결은 선형 변환을 통해 대상 Spectogram 프레임을 예측하기 위해 사용된다.
5. 예측된 Mel-Spectogram은 5층 합성곱 포스트넷을 통과하여 전체 복원을 개선하기 위해 예측에 추가할 residual를 예측한다. (각 포스트넷층은 5 X 1 형태의 512개 필터와 배치 정규화가 포함되어 있으며, 마지막 층을 제외한 모든 층에서 tanh 활성화를 사용한다.)
6. 수렴을 돕기 위해 포스트넷 이전과 이후의 합산 평균 제곱 오차(MSE)를 최소화한다.
7. 만약 출력 시퀀스가 stop token이라면 이 확률이 0.5의 임계값을 초과하면 생성을 종료한다.
개인적으로 이해한 바로는 이전 타임 스텝의 결과를 Prenet으로 통과시키고 Attention의 결과와 concat을 한다. 이후 이 결과를 2 LSTM layer에 입력하여 그 결과를 fully-connected-layer를 통해 예측한다. 이때, stop token이 나오게 되면 종료한다. 그게 아니라면 결과 A를 포스트넷의 입력으로 넣었을 때의 출력 B와 원래 결과 A를 더해서 실제 Mel-spectogram과의 MSE를 구해 학습시킨다. 결과 A는 Prenet의 입력으로 들어가게 된다. Stop token이 나와 종료될 때까지 반복한다.
※ Skip Connection에 대한 이해
Skip Connection은 입력 x에 대해서 하나 이상의 Layer(함수 F(x))를 거친 F(x)에 원본 x를 더해주는 것을 의미한다. Tacotron2 디코더 부분의 마지막에서도(Postnet) 이를 활용하는데 이렇게 되면 x + F(x)가 실제 Mel-spectogram과 최대한 일치하도록 학습이 된다.
Skip Connection을 사용하는 이유는 gradient vanishing problem을 막기 위해서다. 레이어가 깊어지면 깊어질수록 역전파가 될 때 1보다 작은 값이 곱해지게 되면 시작 레이어 쪽에는 gradient 값이 매우 작아져 제대로 학습이 되지 않는 문제가 생긴다. 그러나 만약 레이어를 건너뛰어서 더해주게 되면 x의 그래디언트를 구할때 $d(x+Layer(x)) \over dx$=1+$d(Layer(x)) \over dx$ 1이 그대로 더해지게 되어 gradient 값이 매우 작아지는 문제를 해결할 수 있다. 이는 모델이 깊어지면 깊어질수록 값을 미세하게 조정하는 특징이 있음을 알 수 있다. 즉, 처음의 입력값의 변화량이 나중의 입력값의 변화량보다 크다.
Encoder, Decoder 공통적으로
1. 합성곱 레이어에 0.5 확률의 드롭아웃을 적용하고 LSTM 레이어에는 0.1 확률의 존아웃을 사용하여 정규화한다.
2. 추론 시, 출력 변동성을 도입하기 위해 디코더의 프리넷 레이어에만 0.5 확률의 드롭아웃을 적용한다.
Vocoder의 특징은 다음과 같다.??(이를 이해하기 위해서는 기본적인 WaveNet에 대한 이해가 필요해 보인다)
1. 수정된 WaveNet 아키텍처를 사용한다.
2. WaveNet 아키텍처를 통과하면 시간 도메인 waveform 샘플이 된다.
3. 구조는 3개의 확장 주기로 그룹화된 30개의 확장 합성곱 레이어가 있으며, 레이어 k(k=0,...,29)의 확장 비율은 2k (mod 10)이다.
4. Mel-Spectogram의 12.5ms 프레임 갭으로 작업하기 위하여, 조건 스택에서는 3개 레이어 대신 2개의 업샘플링 레이어만 사용된다.
5. PixelCNN++ 및 Parallel WaveNet을 따라 10개 구성 요소의 로지스틱 분포(MoL)를 사용하여 24kHz에서 16 비트 샘플을 생성한다.
6. 로지스틱 혼합 분포를 계산하기 위해 WaveNet 스택 출력은 ReLU 활성화를 거쳐 각 혼합 성분의 매개 변수 (평균, 로그 스케일, 혼합 가중치)을 예측하기 위한 선형 투영을 거친다.
7. 손실은 그라운드 트루스 샘플의 음의 로그 우도로 계산된다.
3. EXPERIMENTS & RESULTS
3.1. TrainingSetup
학습은 크게 다음의 두 스텝을 거친다.
1. 먼저 Mel-Spectogram을 만드는 네트워크를 학습한다.
2. 어느 정도 학습이 되었으면 이 네트워크를 통해 만들어진 Mel-Spectogram을 입력으로 넣어 WaveNet을 독립적으로 학습한다.
1번 스텝의 특징??
1. 디코더 부분에서 Prenet을 통과시킬 때 네트워크의 디코더가 산출한 이전 타임 시퀀스의 결과를 넣는 것이 아닌 실제 Mel-Spectogram을 넣어준다.
2. β1 = 0.9, β2 = 0.999, ε = 1e−6를 가진 Adam optimizer를 사용하며, 러닝레이트는 1e-3에서 시작해 50,000 이터레이션 이후에는 1e-5로 지수적으로 감소하는 스케쥴러를 사용한다.
3. 가중치 1e-6의 L2 정규화를 사용한다.
2번 스텝의 특징
1. 1번 스텝에서 ground truth-aligned predictions(디코더 부분에서 실제 Mel-spectogram = ground truth 사용)을 입력으로 사용한다.
2. 이렇게 하면 WaveNet의 입력과 Waveforms 라벨이 정확히 정렬된다.
3. β1 = 0.9, β2 = 0.999, ε = 1e−8를 가진 Adam optimizer를 사용하며, 러닝레이트는 고정된 1e-4를 사용한다.
4. 수렴 속도를 높이기 위해 Waveforms 대상을 127.5로 배율 조정하여 초기 출력을 로지스틱 혼합 계층의 최종 분포에 더 가깝게 만든다.
학습데이터의 특징
1. 미국 영어 데이터 세트로 학습
2. 단일 전문 여성 연사자의 24.6 시간의 음성데이터
3. 모든 텍스트는 철자로 표기 ex) "15"를 "fifteen"으로 표현
3.2. Evaluation
Evaluation시에는 학습 단계에서 했었던 decoder 단계에서 실제 Mel-Spectogram을 주는 방식 대신 예측된 Mel-Spectogram을 Prenet의 입력으로 준다.
평가의 경우 테스트 세트에서 100개의 고정된 예제를 무작위로 선택하여 평가 세트로 활용하였다. 모델을 통해 생성된 오디오는 manual하게 1에서 5점까지 0.5 단위로 측정하였다. 이를 통해 주관적 평균 의견 점수(MOS)를 계산하였다.
※ 주목할 점: 실제 데이터가 얼마나 자연스러운지를 평가하기 위해 실제 사람이 데이터를 평가하는 MOS를 사용하였다.
모델들 사이의 비교
Tacotron2가 기존의 모델들보다 더 높은 성능을 보였다.
Tacotron2와 Ground Truth와의 비교
Ground Truth보다 좋지 못한 결과를 내는 이유로 가끔 발생하는 발음 오류라고 평가자들이 코멘트했다.
또한 추가적으로 오류를 수동으로 분석한 결과, 반복된 단어가 포함된 문장은 0개, 발음 오류가 있는 문장은 6개, 건너뛴 단어가 있는 문장은 1개, 강조되는 음절이나 단어가 잘못된 부자연스러운 억양이나 음조가 있는 문장이 23개였다. 즉, 억양 모델링에 대한 개선의 여지가 있다. 또한 발음(이름과 같은)에 어려움을 겪는다.
3.3. AblationStudies
※ Ablation studies란?
Ablation studies는 모델의 각 구성 요소가 어떻게 모델의 전반적인 성능에 영향을 미치는지를 평가하기 위한 실험 방법이다. 이 방법은 모델을 만든 후, 특정 구성 요소를 제거했을 때 모델의 성능이 어떻게 변화되는지를 파악한다.
3.3.1. Predicted Features versus GroundTruth
이 실험은 WaveNet을 학습할 때 네트워크로부터 예측된 Mel-Spectogram을 입력으로 넣는 방식과 실제 Mel-Spectogram을 입력으로 넣는 방식을 비교하는 것이다. 결과에서 알 수 있듯이 자신이 학습한 입력에 대해서 더 좋은 결과를 나타냄을 알 수 있다. 또한 전자의 방식이 최대의 성능을 가짐을 알 수 있다. 반대로 최악의 성능은 후자의 방식에 나타남을 알 수 있다. 이유로는 predicted data가 ground truth data보다 덜 디테일하기 때문일 것으로 추측된다.
3.3.2. Linear Spectrograms
Mel-Spectogram 대신 Linear Spectogram을 사용했을 때는 어땠을까?
다음과 같이 WaveNet을 Vocoder로 사용한 경우 큰 차이가 없었음을 알 수 있다.
3.3.3. Post-ProcessingNetwork
Tacotron2의 과거 정보를 이용하기 위한 PostNet이 과연 효과가 있을까? 왜냐하면 WaveNet에도 이미 있기 때문이다.
결과적으로 후처리 네트워크 없는 경우 MOS 점수는 4.429 ± 0.071에 불과하며, 후처리 네트워크가 있는 경우 4.526 ± 0.066의 MOS 점수를 얻는 것으로 나타났다.
3.3.4. SimplifyingWaveNet
WaveNet의 수용 범위의 크기와 층수가 다른 모델을 사용하여 WaveNet을 경량화할 수 있는지에 대해 실험을 진행하였다.
그 결과 두 번째 행의 결과에서 볼 수 있듯이 적은 층수와 수용 범위를 가지고도 더 높은 성능을 낼 수 있다. 이는 더 큰 수용 범위와 층수가 오디오 품질에 꼭 필요한 요소가 아니라는 사실을 알려준다.
4. Conclusion
Tacotron2를 통해 복잡한 엔지니어링에 의존하지 않고 직접 데이터로부터 학습할 수 있고 자연스러운 말소리를 가진 최첨단 음질을 보여준다.