Text-To-Speech 정리
- -
앞으로 추가할 예정
Text-To-Speech (TTS) : 텍스트(text)를 음성(wav)으로 바꿔주는 기술
History
- 1700년대 러시아 교수 Christian Kratzenstein 이 사람 음성을 흉내내는 Acoustic resonator 개발
- 1800년대 Charles Wheatstone이 첫번째 기계 음성 합성기 개발
- 1950년대 Bell labs의 물리학자 John Larry Kelly Jr. 가 IBM 컴퓨터를 사용해 음성 합성으로 Daisy Bell 노래 재현
- 1900년대 AT&T Bell labs의 Ann Syrdal 이 보다 자연스러운 여성 음성 합성기 개발
사용된 기술들
- Format Synthesis
= source-filter model. 기본 음에 이런저런 필터를 더해 사람의 소리처럼 만드는 방법 - Concatennative Synthesis
데이터를 사용! 여러 스피치 조각을 만들어 놓고 잘 연결해서 긴 오디오 만들기
실제 데이터를 사용하기 때문에 괜찮게 들릴 수 있지만, 목소리에 영혼이 없어서 보다 정교한 음성 모델 만들고자 아래 방법이 제안됨 - Statistical Parametric Speech Synthesis (SPSS)
어떤 음성(acoustic) 모델을 만들고 모델 파라미터를 추측해서 오디오를 생성하는 모델
1️⃣ Text Analysis : text를 언어학적 특성으로 바꿔주기
2️⃣ Acoustic Model : 언어학적 특성을 음향학적 특성으로 바꾸기
3️⃣ Vocoder : 음향학적 특성을 오디오로 바꾸기 (Hidden Markov Model 많이 사용했음) - Neural TTS
2010년대 DL의 시대에 들면서 acoustic model 부분에 적용
-> [Zen13][Qian14]에서 HMM을 DNN으로 바꿨더니 더 좋아졌음을 보여줌
-> 음성은 time series 이므로 RNN계열의 LSTM 등의 모델을 사용함
어떻게 보면 SPSS의 발전 형태라고 볼 수 있지만 점차 컴퍼넌트들을 단순화시키고 있음
In progress
현재 소개되는 많은 연구결과들은 3번 Acoustic Model + Vocoder 에 속하고, 4번을 성공한 End-to-End 모델들도 소개되고 있다.
- Acoustic Model : 입력으로 character(텍스트) 또는 phoneme(발음 단위)을 받아 Acoustic feature를 만드는 모델
요즘 대부분의 acoustic feature는 mel-spectogram을 의미한다. - Vocoder : 입력으로 mel-spectogram을 받아 실제 오디오 생성하는 모델
- Fully End-to-End TTS model : 입력으로 character 또는 phoneme 받아서 오디오로 바로 생성하는 모델
1) Acoustic Model
- 입력으로 character(텍스트) 또는 phoneme(발음 단위)을 받아 Acoustic feature를 만드는 모델
- 초기의 모델은 모듈에 DNN을 활용했지만 아웃풋으로 MCC(mel-cepstral coefficients), BAP(band aperiodicities), LSP(Line spectral pairs), LinS(liner-spectrogram), F0(fundamental frequency) 등을 내보내서 사실상 개선된 SPSS 모델이었음
- Andrew Ng의 DeepVoice 도 SPSS 모델에 더 가까웠다.
1️⃣ Seq2seq-based Acoustic Model
- acoustic model에 seq2seq 모델이 사용되면서 본격적으로 neraul TTS에 대해 논할 수 있는 시기가 됨
- 바이두의 DeepVoice3 : CNN 기반 + 어텐션
- 이후 ClariNet 과 ParaNet 으로 이어지면서 seq2seq 모델의 속도 향상을 위한 여러 테크닉 도입
- 구글의 Tacotron 은 RNN에 CBHG 모듈 등을 더해 캐릭터를 인풋으로 받아 바로 acoustic feature를 뽑아냄
👆 CBHG 모듈 : 1D Convolution Bank, Highway 네트워크, Bidirectional GRU로 구성. Sequence 벡터를 Input으로 사용하며 Sequence 벡터가 Output으로 추출- Tacotron2 부터는 mel-spectogram을 기본 중간 표현형으로 사용
- [Wang18]에서는 어떤 스피치 스타일을 정의하는 style token을 학습해 이를 Tacotron에 더해 스타일이 콘트롤 되는 TTS시스템을 만듬.
- 동시에 나온 구글의 또 다른 논문[Skerry-Ryan18]에서도 prosody에 대한 임베딩을 배우게 하는 부분을 Tacotron에 추가하여 결과 오디오의 prosody를 바꿀 수 있는 모델을 제안
👆 prosody : 운율 체계로 prosody를 바꾼다는건 자유롭게 운율을 조절할 수 있게 한다는 의미 - DCTTS : 속도 개선. Tacotron의 RNN부분을 Deep CNN으로 바꿈
- Fast DCTTS : 속도 개선. 모델은 크기가 크게 줄면서도 빠른 모델로 개선
- DurIAN : 성능 개선. Tacotron2의 어텐션 부분을 alignment 모델로 바꿔 좀 더 에러가 적은 결과를 만들어냄.
- Non-Attentive Tacotron : 성능 개선. Tacotron 2의 어텐션 부분을 duration predictor로 바꾸어서 보다 robust한 모델 만듬
- FCL-TACO2 : 속도 개선(17-18배정도 더 빠른 모델).
semi-autoregressive(SAR) 방식을 제안해 각각의 phoneme은 AR방식으로 만들고 전체는 NAR방식으로 만들어 퀄리티도 살리면서도 속도도 빠르게 만드는 방식. + distillation을 이용해 모델의 크기도 줄임.
2️⃣ Transformer-based Acoustic Model
- 2017년 Transformer 등장!
- TransformerTTS : Tacotron 2의 RNN부분을 Transformer로 바꾼 모델로 비슷한 수준의 결과를 더 빨리 만들어냄
-> transformer 덕분에 병렬처리가 가능해지고 더 긴 dependency도 고려할 수 있게 됨.- RobuTrans : 성능 개선. 길이를 기반으로 하는 hard 어텐션을 사용해 개선
- AlignTTS : 어텐션 대신 별도의 네트워크를 이용하여 alignment를 계산하는 방식을 도입
- FastSpeech : feed-foward Transformer를 사용하여 (이름 그대로) 엄청 빠른 속도로 mel-spectrogram을 만들어 낼 수 있게 됨. 적은 차원(보통 80)으로 표현할 수 있다는 점도 장점 중에 하나.
✔️ 어텐션 방식을 빼고 길이를 정확히 예측하는 모듈(length regulator)을 활용함.
WHY? TTS에서는 입력 텍스트와 mel-spectogram을 매치시키는 것이 중요함. 하나의 character 또는 phoneme이 몇 개의 프레임으로 변하는지 정확하게 계산해야 하는데 어텐션은 지나치게 flexible해서 단어가 반복된다거나 건너 뛴다던가 하는 단점이 되는 경우가 있기 때문- FastSpeech 2 : 네트워크 구조를 더욱 단순화시키고 입력으로 피치, 길이, 에너지등 더욱 다양한 정보를 추가적으로 이용
- FastPitch : 성능 개선. 세세한 피치정보를 넣어서 결과를 개선
- Lightspeech : 속도 6.5배 개선. NAS(Neural Architecture Search)를 이용해 FastSpeech구조를 최적화 함
- MultiSpeech : 성능 개선. Transformer에서 나타나는 단점을 해결하기 위하여 여러가지 테크닉들을 도입
- 카카오 JDI-T : 성능 개선. 더욱 단순한 Transformer기반 아키텍쳐를 소개 + 개선된 방식의 어텐션 메카니즘 이용
- NCSOFT [Bae21] : 성능 개선. text encoder와 audio encoder에서 Transformer를 여러 층으로 쌓아 계층적으로 이용하는 방법을 제안
어텐션의 범위를 제한하고 여러 단계의 피치 임베딩을 사용한 것도 성능을 높이는데 도움이 되었음.
3️⃣ Flow-based Acoustic Models
- 2014년 정도부터 이미지 분야에서 쓰이기 시작한 생성 방식으로 단순한 확률 분포에서 추출된 값에 여러 단계의 변환을 거쳐 복잡한 분포를 만드는 방법이다. 구체적으로 말하면 잠재 벡터 $z$의 확률 분포에 대한 일련의 역변환(a sequence of invertible transformations)을 통해 데이터 $x$의 분포를 명시적으로 학습하며 이를 간단한게 negative log-likelihood 로 해결한다.
- Flowtron : Tacotron의 개선 모델로 IAF(Inverse Autoregressive Flow)를 적용하여 멜스펙트로그램을 생성하는 모델
- Flow-TTS : 속도 개선. non-autoregressive flow를 이용하여 더욱 빠른 모델을 만듬.
- EfficientTTS : 성능 개선. alignment부분을 더욱 개선하는 한편 모델을 더욱 일반화함.
- 카카오 Glow-TTS : 텍스트와 멜프레임 간의 매칭을 찾기 위해 클래식한 다이나믹 프로그래밍을 이용
이후에 이 방식(Monotonic Alignment Search)은 다른 연구에서도 활용됨.
4️⃣ VAE-based Acoustic Models
- 2013년에 탄생한 생성 모델 프레임워크인 variational autoencoder(VAE). 가정한 확률 분포를 기준으로 평균과 편차 등의 파라미터들을 잘 컨트롤한 값을 전달하면 Decoder가 그럴 듯한 결과물을 만들어준다. 구체적으로 말하자면 잠재벡터 $z$에 대한 확률 분포를 보다 다루기 쉬운 확률 분포 (e.g. Gaussian distribution)에 근사되도록 하여, 해당 확률 분포에 따라 만들어진 노이즈를 $z$로 삼아 Decoder가 새로운 데이터 $x$를 만들 수 있도록 하는 것을 목표로 한다.
- 구글 GMVAE-Tacotron : VAE를 활용하여 스피치에 있는 여러 latent attribute들을 모델링하여 이를 콘트롤하는 방식을 제안
- VAE-TTS : Tacotron 2 모델에 VAE로 모델링한 style부분을 추가하여 비슷한 일을 할 수 있음.
- BVAE-TTS : 양방향-VAE을 이용하여 적은 파라미터로도 빠르게 멜을 생성하는 모델을 소개
- Parallel Tacotron : Tacotron의 더욱 빠른 훈련 및 생성 속도를 위하여 VAE를 도입
5️⃣ GAN-based Acoustic Models
- 2014년 제안된 Generative Adversarial Nets(GAN)
- [Guo19] : Generator로 Tacotron 2 + 더욱 좋은 멜을 생성하기 위한 방법론으로 GAN을 활용
- [Ma19] : Tacotron Generator가 스피치의 스타일까지 함께 배우게 하기 위하여 Adversarial 훈련 방법을 이용
- Multi-SpectroGAN : 스타일에 대한 여러 latent representation을 adversarial 방식으로 배우는데 여기에서는 Generator로 FastSpeech2를 이용
- GANSpeech : FastSpeech1/2를 Generator + GAN 방식으로 훈련하는데, feature matching loss의 스케일을 adaptive하게 조정을 하는 것이 성능 향상에 도움이 되었음.
6️⃣ Diffusion-based Acoustic Models
- Diff-TTS : 멜을 생성하는 부분을 Diffusion 모델을 이용해 퀄리티를 높임.
- Grad-TTS : Glow-TTS + 디코더를 Diffusion 모델로 바꿈
- PriorGrad : 데이터의 통계량을 활용하여 prior분포를 만들어 더욱 효율적인 모델링이 가능하게 함. 여기서는 각 phoneme이 지닌 통계량을 이용하여 acoustic model에 적용한 예를 소개함.
- 텐센트의 DiffGAN-TTS : Diffusion decoder를 사용. adversarial 훈련 방법을 사용해 인퍼런스시 스텝의 수를 크게 줄여 생성 속도를 감소시킬 수 있음.
7️⃣ 그 외 Acoustic Models
- 위에서 소개한 기술들은 하나씩 사용해야 하는 것은 아니며 서로 조합해서 사용하는 것도 충분히 가능
- PortaSpeech : Transformer+VAE+Flow
FastSpeech의 저자들은 자체적인 분석결과로 VAE는 작은 사이즈로도 prosody같은 긴 길이의 정보를 잘 잡는 반면 품질이 좀 떨어지고, Flow는 디테일을 잘 살리는 반면 품질이 좋아지려면 모델이 커야한다는 사실을 발견하고 각각의 장점만 뽑아 모델 제안 - meta의 VoiceLoop : 멀티스피커를 고려하는 초창기 모델로 phonological loop이라고 불리는 인간의 working-memory 모델과 유사한 모델을 이용해 스피치 정보를 저장하고 처리하는 모델을 제안.
- 페이스북에서 나온 다른 연구들 [Akuzawa18][Nachmani18]을 비롯하여 [deKorte20]등에서 백본으로 사용됨.
- DeviceTTS : Deep Feedforward Sequential Memory Network(DFSMN)을 기본 단위로 사용하는 모델. 이 네트워크는 memory block을 가지고 있는 feedforward 네트워크의 형태로 recurrent 방식을 사용하지 않고도 long-term dependency를 유지할 수 있는 작지만 효율적인 네트워크. 이를 통하여 일반 모바일장비에서도 충분히 사용가능한 TTS모델을 제안함.
2) Vocoder
- Acoustic model이 생성한 acoustic feature를 이용해 실제 오디오(waveform)을 생성하는 모델
✔️ Griffin-Lim
- 전통적인 방법의 Vocoder 기술
- Mel-spectrogram으로 계산된 STFT magnitude 값만 가지고 원본 음성을 예측하는 rule-based 알고리즘
- 원본 음성 신호를 복원하기 위해서는 STFT magnitude 값과 STFT phase 값이 필요하기 때문에 이 phase(위상) 값을 임의로 두고 예측을 시작한다. 그렇게 예측된 음성의 STFT magnitude 값과 원래 Mel-spectrogram으로 계산된 STFT magnitude 값의 mean squared error(MSE)가 최소가 되도록 반복 수행하여 원본 음성을 찾아낸다.
- Tacotron 에서는 결과로 linear-spectrogram을 만들고, 이를 Griffin-Lim 알고리즘을 이용하여 waveform으로 변경했다. 무려 40년전의 알고리즘을 사용했는지라 전체적인 네트워크의 구조가 훌륭함에도 불구하고 결과 오디오가 그리 만족스럽지는 못했다.
1️⃣ Autoregressive Vocoders
- autoregressive 모델들은 이전 샘플을 통해 다음 샘플을 하나씩 만드는 방식이기 때문에 오디오 생성 속도가 매우 느리다. 따라서 매우 많은 연구들은 더 빠른 생성속도를 위한 모델들을 제안했다. 혹은 non-autoregressive 방식을 이용한 보코더로 발전했다.
👆 non-autoregressive : 앞의 샘플을 보지 않고도 그 뒤의 샘플을 생성할 수 있는 방식(보통 parallel이라고 표현)
- WaveNet : Neural Vocoder의 시작.
- 긴 오디오 샘플을 만들기 위하여 dilated convolution 레이어를 도입한 것이 중요
- 기존에 만들어진 샘플을 이용하여 다음 오디오 샘플을 (하나씩 하나씩) 생성하는 autoregressive 방식을 이용해 높은 수준의 오디오를 생성 (Auto-Regressive Generative model인 PixelCNN 활용)
- WaveNet은 입력으로 linguistic feature를 받아 오디오를 생성하는 Acoustic Model+Vocoder로도 사용될 수 있지만 이후에는 더욱 정교한 acoustic model을 통해 멜스펙트로그램을 만들고, WaveNet이 이를 바탕으로 오디오를 생성하는 것이 일반적인 형태로 자리잡음.
- DeepVoice는 시작부터 WaveNet 보코더를 사용했고 Tacotron은 Tacotron2 부터 WaveNet을 기본 보코더로 사용함.
- SampleRNN : RNN방식으로 샘플을 하나씩 만드는 또 다른 방식의 autoregressive 모델
- FFTNet : WaveNet의 Dilated convolution의 모양이 FFT와도 유사하다는 점에 착안해 생성 속도를 더욱 빠르게 할 수 있는 기술을 제안
- WaveRNN : WaveNet의 속도를 높이기 위하여 다양한 기술들(GPU커널 코딩, pruning, subscaling등)을 이용
- WaveRNN은 그 이후 Universal Neural Vocoder및 여러 형태로 발전함
- [Lorenzo-Trueba19] : WaveRNN에다가 74명의 스피커, 17개의 언어의 데이터를 이용하여 훈련하여 RNN_MS(multi-speaker) 모델을 만들어, 데이터에 없던 스피커와 환경에서도 좋은 퀄리티를 내는 보코더임을 선보임
- [Paul20a] : SC(Speaker Conditional)_WaveRNN 모델, 즉 스피커 임베딩을 추가적으로 사용하여 학습하는 모델을 제안. 이 모델 또한 데이터에 없는 스피커와 환경에서도 잘 작동함을 보임.
- Apple의 TTS[Achanta21] : 보코더로 WaveRNN을 사용하고 모바일 장비에서도 사용할 수 있게 서버와 모바일에서 여러 최적화 코딩 및 파라미터 세팅을 하였음.
- Chunked Autoregressive GAN(CARGAN) : autoregressive 방식이 아직도 죽지 않았다는 것을 보여주는 최근 논문
- 많은 non-autoregressive 방식의 보코더가 피치에 대한 에러가 있고, 이는 autoregressive방식을 사용되면 해결될 수 있는 문제라는 사실을 보임. 물론 속도가 문제이지만 이를 chunked단위로 끊어서 계산을 해도 괜찮다고 제안함으로써 속도와 메모리를 크게 줄일 수 있는 방법을 소개함.
- 오디오 시그널을 여러 서브밴드(subband), 즉 더 짧은 크기의 다운샘플된 버전으로 나누어 처리하는 방식은 병렬로 빠르게 계산할 수도 있고 각 서브밴드마다 다른 처리를 할 수 있다는 장점이 있어서 여러 모델에 적용되어 왔음.
- [Okamoto18a] : filterbank를 이용하여 시그널을 서브밴드로 나누어 처리하는 subband WaveNet 제안
- [Rabiee18] : Wavelet을 이용한 방식을 제안함
- [Okamoto18b] : FFTNet의 subband 버전을 제안
- DurIAN : 주로 acoustic model을 다루는 논문이지만 WaveRNN의 subband버전도 함께 제안
2️⃣ Flow-based Vocoders
- normalizing flow 기반의 기술은 크게 두 가지로 나눌 수 있다.
✔️ Autoregressive transforms
대표적인 IAF(inverse autoregressive flow)의 경우 훈련시간이 오래 걸리는 대신 생성속도는 매우 빠르기 때문에 오디오를 생성하는데 활용할 수 있음. 다만 느린 훈련속도가 문제가 돼 다양한 훈련 방식이 제안됨.
- Parallel WaveNet : autoressive WaveNet 모델을 만들어 놓고, 이와 비슷한 non-autoregressive IAF모델을 훈련시키는 방법을 이용함. Teacher-Student 모델, 혹은 distillation이라고 불리는 방식.
- ClariNet : 비슷한 방법론을 사용하면서도 더 단순하면서도 안정적인 훈련 방법을 제안. IAF모델이 성공적으로 훈련되고 나면 이제 빠른 오디오 생성이 가능함. 하지만 훈련방법이 복잡하고 계산량이 많다는 단점이 있음.
✔️ Bipartite transforms
대표적으로 affine coupling layer라는 레이어를 이용하여 훈련과 생성 모두 빠르게 하는 방식. 단순하다는 장점이 있지만 그것이 또 단점으로 작용되어, IAF과 대등한 수준의 모델을 만드려면 레이어를 여러개 쌓아야 하므로 파라미터수가 상대적으로 더 클 수 밖에 없음.
- WaveGlow & FloWaveNet : 거의 비슷한 시기에 제안된 보코더. 이 둘은 채널을 섞는 방식을 비롯하여 약간의 구조적인 차이가 있을 뿐 거의 비슷한 아이디어로 부터 나옴.
- SqueezeWave : 속도 개선. WaveGlow 모델에서 비효율성을 제거하고 depthwise separable convolution을 사용하여 수십배 더 빠른 모델(성능저하는 약간 있음)을 제안
- WG-WaveNet : 속도 개선. WaveGlow에서 weight-sharing으로 모델 사이즈를 크게 줄이고 작은 WaveNet 필터를 넣어 오디오의 퀄리티를 살리는 방식으로 모델을 만들어 CPU에서 44.1kHz의 오디오를 리얼타임보다 더 빠르게 만드는 방식을 제안함.
- WaveFlow : 여러 오디오 생성 방식의 통합적인 관점을 제공. WaveGlow, FloWaveNet등의 flow방식 뿐 아니라 WaveNet의 생성 방식도 하나의 일반화 모델로 설명하면서 이들보다 더 빠르게 계산되는 모델을 제안함.
3️⃣ Gan-based Vocoders
GAN(Generative adversarial networks)은 오디오 생성 분야에는 WaveGAN을 시작으로 약 4-5년 지난 시점부터 성공적으로 적용됨. 합성 음성의 퀄리티는 다소 떨어질 수 있으나 속도와 파라미터 개수 부분에서 효율적으로 개선시킬 수 있어 연구됨.
- GAN-TTS : 오디오에 더 적합한 모델을 만들기 위해, 즉 웨이브폼의 특성을 어떻게 잘 캡쳐하는 Discriminator를 만들까에 대해서 고민하기 시작. 랜덤한 윈도우를 여러개 사용하여(Random window discriminators) 더욱 다양한 특성을 고려하도록 함
- MelGAN : 오디오를 여러 스케일로 바라보는 방식(Multi-scale discriminator)을 사용. Generator의 경우 dilated + transposed convolution 조합을 사용했고, 많은 모델에서 이 조합을 응용해서 사용하고 있음.
- Multi-Band MelGAN : 오리지널 MelGAN의 receptive field도 늘리고, multi-resolution STFT loss도 더하고(Parallel WaveGAN에서 제안), multi-band로 나누어 계산하여(DurIAN에서 제안) 더욱 빠르고 안정적인 모델을 만들었음.
- Universal MelGAN : 멀티 스피커 버전. multi-resolution 형태의 discriminator를 사용하여 디테일을 더 살리는 오디오를 생성할 수 있게 함.
- UnivNet : 위 아이디어에서 multi-period discriminator도 함께 사용하는 등 더욱 개선됨. 이들 연구에서는 좀 더 넓은 밴드(80->100)의 멜을 사용함으로써 오디오의 퀄리티를 높이기도 함.
- 카카오 HiFi-GAN : 좀 더 오디오스러운 특성, 즉 period를 고려하는 방식(Multi-period discriminator)을 제안. 여러 receptive field를 갖는 Generator를 사용. 합성 음성의 퀄리티 부분에서도 개선을 보이며 기존의 방법들보다 높은 MOS 값을 가지며 속도, 파라미터 개수, 성능까지 세 마리 토끼를 동시에 잡았다.
- 서울대/NVIDIA BigVGAN : 다양한 녹음 환경 및 Unseen language등까지 고려한 Universal Vocoder로 기술적인 개선으로는 HiFi-GAN generator에 snake 함수를 이용하여 periodic inductive bias를 제공하고 이로 인한 부작용을 줄이기 위하여 low-pass filter를 더하였음. 또한 모델의 크기도 크게 늘려(~112M) 훈련하는데도 성공함.
- VocGAN : 여러 resolution을 갖는 discriminator를 함께 사용. 여러 스케일의 웨이브폼을 생성한다.
- [Gritsenko20] : 생성된 분포와 실제 분포간의 차이를 generalized energy distance(GED) 형태로 정의하여 이를 최소화하는 방향으로 학습함. 이렇게 다양한 방식의 정교한 discriminator들이 결과 오디오의 성능을 크게 높였음.
- [You21] : 이를 더욱 분석하여 multi-resolution discriminator의 중요성에 대해서 언급.
- Fre-GAN : generator와 discriminator모두 multi-resolution방식을 이용하여 연결됨. Discrete Waveform Transform(DWT)를 사용한 것도 도움이 되었음.
- 네이버/라인 Parallel WaveGAN : non-autogressive 형태의 WaveNet Generator를 제안하여 무척 빠른 속도로 오디오를 생성할 수 있는 모델.
- [Wu20] : 성능 개선. pitch-dependent dilated convolution을 추가하여 피치(음높이)에 좀 더 강인한 버전을 제안
- [Song21] : 성능 개선. 청각에 예민한 에러를 줄이기 위하여 perceptual masking filter를 적용하여 더욱 개선된 Parallel WaveGAN을 제안
- [Wang21] : 성능 개선. Least Square GAN을 개선시킨 Pointwise Relativistic LSGAN을 오디오에 적용하여 보다 local artifact가 적은 Parallel WaveGAN(및 MelGAN)을 만드는 방법을 제안
- LVCNet : 속도 개선. location-variable convolution라는 이름의, 조건에 따라서 달라지는 형태의 convolution 레이어를 이용한 Generator를 Parallel WaveGAN에 넣고 훈련시켜 퀄리티의 차이는 거의 없으면서도 더욱 빠른(4x) 생성 모델을 만듬.
- [Yamamoto19] : IAF Generator를 GAN방식으로 훈련하는 것을 제안
4️⃣ Diffusion-based Vocoders
Diffusion 모델은 보코더에 먼저 적용되었다. 복잡한 데이터 분포를 배울 수 있어 높은 품질의 결과를 낼 수 있다는 장점이 있지만 가장 큰 단점으로는 상대적으로 오래걸리는 생성시간이 꼽힘. 또한 이 방식 자체가 노이즈를 제거하는 방식으로 이루어지다보니 너무 오래 진행하다보면 원래 오디오에 존재하는 많은 노이즈(unvoiced 사운드등) 역시 사라진다는 단점이 있음.
- DiffWave : WaveNet과 유사한 형태로 오디오를 생성하는 부분을 Diffusion Model을 사용
- WaveGrad : GAN-TTS를 기반으로 오디오를 생성하는 부분을 Diffusion Model을 사용
- FastDiff : Gan-based vocoder인 LVCNet 의 아이디어를 diffusion model에 적용해 time-aware location-variation convolution을 제안함. 이를 통하여 더욱 robust하게 diffusion을 적용할 수 있고, 또한 noise schedule predictor를 이용하여 생성 시간을 더욱 줄이게 됨.
- 텐센트 BDDM : 생성시간을 크게 줄이는 방법을 제안. 즉 diffusion process의 forward process와 reverse process에 다른 네트워크를 사용하는 것으로(forward: schedule network, reverse: score network) 이를 위한 이론적인 새로운 objective도 제안함. 여기서는 최소 3번의 step만으로도 오디오를 생성할 수 있음을 보임. 이 정도 속도면 diffusion 방식도 충분히 실용적으로도 사용될 수 있음.
- ItoWave : 대부분의 이전 연구들이 DDPM형태의 모델링을 이용하는 반면 Diffusion 모델은 SDE(Stochastic Differential Equation)형태로 표현될 수도 있음. SDE형태의 모델링을 이용하여 오디오를 생성하는 예를 보여줌.
5️⃣ Source-filter-based Vocoders
✔️ Filter를 뉴럴 네트워크로 모델링하기
인간의 목소리란 일단 기본 source(sine소리등)가 구강구조를 거치며 filtering되어 우리가 듣는 소리로 변한다고 생각하고 모델링하는 방법이다. 이 방식에서 가장 중요한 부분은 "filter를 어떻게 만들 것인가"이다. 이 filter를 뉴럴네트워크로 모델링하면 성능이 더 좋아지지 않을까 하는 아이디어에서 여러 모델이 제안됨.
- Neural source-filter : f0(피치)정보를 이용하여 기본 sine소리를 만들어내고 이를 dilated convolution을 이용한 필터를 학습시켜서 좋은 품질의 소리를 만들어냄. Autoregressive방식이 아니기때문에 속도도 매우 빠른 방식.
- [Wang19b] : 이를 확장시켜서 harmonic + noise 모델로 재구성하여 성능을 향상시킴.
- DDSP : 뉴럴네트워크와 여러 DSP 컴퍼넌트를 이용하여 다양한 소리를 만드는 방식을 제안하는데 여기에서 harmonic은 additive 합성방식을, noise는 linear time-varying filter를 사용함.
✔️ speech = formant + residual/excitation (나눠서 처리하기)
스피치의 피치와 관련된 부분(formant)과 그 외의 부분(residual, excitation등으로 불림)을 나누어 처리하는 방법. formant는 주로 LP(linear prediction)을 이용하고 excitation은 다양한 모델을 이용해 왔다.
- GlotNet : (glottal) excitation을 WaveNet으로 모델링함.
- GELP : GAN훈련 방법을 이용하여 parallel 형식으로 확장함.
- 네이버/연세대 ExcitNet : adaptive inverse filter 를 사용해 음성 신호에서 스펙트럼 구성 요소를 분리한 뒤 excitation signal 이 WaveNet 으로 훈련 및 생성됨.
- LP-WaveNet : source와 filter를 함께 훈련하고 더 정교한 모델을 사용하게 됨.
- [Song20] : LP-Wavenet에 modeling-by-generation(MbG)컨셉을 도입해 acoustic model에서 생성된 정보를 vocoder에서 유용하게 사용하여 성능을 높임.
- Neural Homomorphic Vocoder : harmonic은 linear time-varying(LTV) impulse trains, noise는 LTV 노이즈를 이용하는 방식을 제안.
- [Yoneyama21] : Parallel WaveGAN을 보코더로 사용하고 앞서 언급한 여러 source-filter 모델들을 통합하는 모델을 제안.
- [Hwang21b] : Parallel WaveGAN 저자들에 의해 확장된 모델. Generator를 Harmonic+Noise 모델로 확장되었으며 여기에 subband 버전도 더해짐.
- [Yamamoto21] : Discriminator의 성능을 높이기 위한 몇가지 기술이 제안되었는데 그 중에는 voiced(harmonic)와 unvoiced(noise)를 모델링하는 discriminator를 나누어 고려하기도 함.
- LPCNet : WaveRNN에다가 Linear Prediction를 더한 모델로 source-filter 방법론에서 가장 널리 사용됨.
- Bunched LPCNet : 오리지널 WaveRNN에서 소개했던 기술들을 활용하여 LPCNet을 더욱 효율적으로 만듬.
- Gaussian LPCNet : 동시에 한개 이상의 샘플을 예측하게 하여 효율성을 높임.
- [Kanagawa20] : WaveRNN 내부 컴퍼넌트들의 크기를 tensor decomposition을 이용하여 더욱 줄임으로써 또다른 방향으로 효율성을 높임.
- iLPCNet : 연속적인 형태의 mixture density network을 활용하여 기존 LPCNet보다 더 높은 성능을 보이는 모델을 제안
- [Popov20b] : LPCNet에서 말소리 중에서 끊어도 되는 부분(예를 들어 잠시 멈추는 부분이나 unvoiced 사운드)을 찾아 나누어 이를 병렬로 처리하고 cross-fading으로 합쳐서 생성속도를 빠르게 하는 모델을 제안함.
- FeatherWave : subband LPCNet을 소개
- [Cui20] : subband끼리의 correlation까지 함께 고려하는 좀더 개선된 버전의 subband LPCNet을 제안
- [Valin22] : LPCNet저자들에 의해 개선된 버전. 트리구조를 이용하여 샘플링시 계산양을 줄이고 weight를 8비트로 quantization하여 사용하는 등의 방법을 제안함. 이는 모두 캐쉬를 효율적으로 사용하고 최신 GPU의 개선된 병렬연산능력 등을 활용하기 위한 방법들.
6️⃣ 그 외 Vocoders
보코더의 발전은 품질 좋지만 느린 AR(Autoregressive)방식에서 빠른 NAR(Non-autoregressive) 방식으로 이동하는 방향으로 진행됐다. NAR도 여러 발전된 생성 기법들 덕분에 점점 AR수준에 다다르고 있다.
- TTS-BY-TTS : AR방식으로 데이터를 많이 만들어 NAR 모델의 훈련에 사용했더니 좋은 효과가 있었다는 결과를 보임. 하지만 모든 데이터를 다 사용하는 것은 오히려 안좋을 수도 있음.
- TTS-BY-TTS2 : 원래 오디오와 더욱 유사한 합성 오디오만을 RankSVM을 이용하여 구하여 이 데이터만 사용하여 훈련하는 방식을 제안함.
- Microsoft의 DelightfulTTS : confomer를 사용하는등 자체적으로 몇몇 구조적인 수정이 있고 특히 최종 오디오를 48kHz로 생성한다는 특징이 있음(대부분의 TTS시스템은 보통 16kHz 오디오를 생성). 이를 위해서 멜스펙트로그램은 16kHz로 생성하지만 자체적으로 만든 HiFiNet을 이용하여 48kHz로 최종 오디오를 생성.
3) Fully End-to-End TTS
Acoustic Model과 Vocoder를 함께 학습하여, 인풋으로 텍스트나 phoneme이 들어오면 웨이브폼 오디오를 바로 만들어주는 모델.
이렇게 한번에 하면 훈련 단계를 나눌 필요도 없고 멜스펙트럼 같은 acoustic feature를 굳이 이용 할 필요도 없어 에러가 줄어든다. 사실 멜스펙트럼은 사람이 임의로 정한 것이고(sub-optimal), phase정보도 사라지게 된다. 하지만 처음부터 이런 모델들이 개발되지 않은 이유는 이렇게 한번에 하는 것이 어려웠기 때문이다.
인풋으로 들어오는 텍스트는 5초 기준으로 약 20개정도, phoneme으로는 100개정도의 길이다. 하지만 웨이브폼은 16kHz의 샘플링율인 경우 80,000 샘플이다. 따라서 바로 정확히 매칭(텍스트 -> 오디오샘플)시키는 것보다는 중간 단계의 해상도를 갖는 표현 방법(멜같은)을 이용해 두 단계로 나누어서 하는 것이 상대적으로 간단하다. 하지만 점점 기술의 발전에 따라 Fully End-to-End 방식으로 훈련한 모델들을 몇몇 찾아볼 수 있다.
(In progress)
References
- minjoon / Neural Text-to-Speech(TTS)
- Tyler Weitzman / A short history of text to speech
- Baidu Research / Deep Voice 3
- KiHyun / Flow based Generative Models
- 이활석 / 오토인코더의 모든것
- 족제비다아 / Neural Vocoder에 대해 알아보자
- [Zen13] H.Zen, A.Senior, M.Schuster. Statistical parametric speech synthesis using deep neural networks. ICASSP 2013.
- [Qian14] Y. Qian, Y.-C. Fan, W.-P. Hum, F. K. Soong, On the training aspects of deep neural network (DNN) for parametric TTS synthesis. ICASSP 2014.
- [Wang18] Y.Wang, D.Stanton, Y.Zhang, R.J.Skerry-Ryan, E.Battenberg, J.Shor, Y.Xiao, Y.Jia, F.Ren, R.A.Saurous. Style tokens: Unsupervised style modeling, control and transfer in end-to-end speech synthesis. ICML 2018.
- [Skerry-Ryan18] R.J.Skerry-Ryan, E.Battenberg, Y.Xiao, Y.Wang, D.Stanton, J.Shor, R.Weiss, R.Clark, R.A.Saurous. Towards end-to-end prosody transfer for expressive speech synthesis with tacotron. ICML 2018.
- [Bae21] J.-S.Bae, T.-J.Bak, Y.-S.Joo, H.-Y.Cho. Hierarchical context-aware transformers for non-autoregressive text to speech. Interspeech 2021.
- [Guo19] H.Guo, F.K.Soong, L.He, L.Xie. A new GAN-based end-to-end tts training algorithm. Interspeech 2019.
- [Ma19] S.Ma, D.Mcduff, Y.Song. Neural TTS stylization with adversarial and collaborative games. ICLR 2019.
- [Akuzawa18] K.Akuzawa, Y.Iwasawa, Y.Matsuo. Expressive speech synthesis via modeling expressions with variational autoencoder. Interspeech 2018.
- [Nachmani18] E.Nachmani, A.Polyak, Y.Taigman, L.Wolf. Fitting new speakers based on a short untranscribed sample. ICML 2018.
- [deKorte20] M.de Korte, J.Kim, E.Klabbers. Efficient neural speech synthesis for low-resource languages through multilingual modeling. Interspeech 2020.
- [Lorenzo-Trueba19] J.Lorenzo-Trueba, T.Drugman, J.Latorre, T.Merritt, B.Putrycz, R.Barra-Chicote, A.Moinet, V.Aggarwal. Towards achieving robust universal neural vocoding. Interspeech 2019.
- [Paul20a] D.Paul, Y.Pantazis, Y.Stylianou. Speaker Conditional WaveRNN: Towards universal neural vocoder for unseen speaker and recording conditions.
- [Okamoto18a] T. Okamoto, K. Tachibana, T. Toda, Y. Shiga, and H. Kawai. An investigation of subband wavenet vocoder covering entire audible frequency range with limited acoustic features. ICASSP 2018.
- [Rabiee18] Azam Rabiee, Geonmin Kim, Tae-Ho Kim, Soo-Young Lee. A Fully Time-domain Neural Model for Subband-based Speech Synthesizer.
- [Okamoto18b] T. Okamoto, T. Toda, Y. Shiga, and H. Kawai. Improving FFT-Net vocoder with noise shaping and subband approaches. IEEE Spoken Language Technology Workshop (SLT) 2018.
- [Gritsenko20] A.Gritsenko, T.Salimans, R.van den Berg, J.Snoek, N.Kalchbrenner. A spectral energy distance for parallel speech synthesis. NeurIPS 2020.
- [You21] J.You, D.Kim, G.Nam, G.Hwang, G.Chae. GAN Vocoder: Multi-resolution discriminator is all you need. Interspeech 2021.
- [Wu20] Y.-C.Wu, T.Hayashi, T.Okamoto, H.Kawai, T.Toda. Quasi-periodic Parallel WaveGAN vocoder: A non-autoregressive pitch-dependent dilated convolution
- [Song21] E.Song, R.Yamamoto, M.-J.Hwang, J.-S.Kim, O.Kwon, J.- M.Kim. Improved Parallel WaveGAN vocoder with perceptually weighted spectrogram loss. IEEE Spoken Language Technology Workshop (SLT) 2021.
- [Wang21] D.Wang, L.Deng, Y.Zhang, N.Zheng, Y.T.Yeung, X.Chen, X.Liu, H.Meng. FCL-Taco2: Towards fast, controllable and lightweight text-to-speech synthesis. ICASSP 2021.
- [Yamamoto19] R.Yamamoto, E.Song, J.-M.Kim. Probability density distillation with generative adversarial networks for high-quality parallel waveform generation. Interspeech 2019.
- [Wang19b] X.Wang, S.Takaki, J.Yamagishi. Neural harmonic-plus-noise waveform model with trainable maximum voice frequency for text-to-speech synthesis. ISCA Speech Synthesis Workshop 2019.
- [Song20] E.Song, M.-J.Hwang, R.Yamamoto, J.-S.Kim, O.Kwon, J.- M.Kim. Neural text-to-speech with a modeling-by-generation excitation vocoder. Interspeech 2020.
- [Yoneyama21] R.Yoneyama, Y.-C.Wu, T.Toda. Unified source-filter GAN: Unified source-filter network based on factorization of quasi-periodic Parallel WaveGAN. Interspeech 2021.
- [Hwang21b] M.-J.Hwang, R.Yamamoto, E.Song, J.-M.Kim. High-fidelity Parallel WaveGAN with multi-band harmonic-plus-noise model. Interspeech 2021.
- [Yamamoto21] R.Yamamoto, E.Song, M.-J.Hwang, J.-M.Kim. Parallel waveform synthesis based on generative adversarial networks with voicing-aware conditional discriminators. ICASSP 2021.
- [Kanagawa20] H.Kanagawa, Y.Ijima. Lightweight LPCNet-based neural vocoder with tensor decomposition. Interspeech 2020.
- [Popov20b] V.Popov, S.Kamenev, M.Kudinov, S.Repyevsky, T.Sadekova, V.Bushaev, V.Kryzhanovskiy, D.Parkhomenko. Fast and lightweight on-device tts with Tacotron2 and LPCNet. Interspeech 2020.
- [Cui20] Y.Cui, X.Wang, L.He, F.K.Soong. An efficient subband linear prediction for lpcnet-based neural synthesis. Interspeech 2020.
- [Valin22] J.-M.Valin, U.Isik, P.Smaragdis, A.Krishnaswamy. Neural speech synthesis on a shoestring: Improving the efficiency of LPCNET. ICASSP 2022.
'AI' 카테고리의 다른 글
[논문리뷰] Training language models to follow instructions with human feedback (instructGPT) (0) | 2023.07.06 |
---|---|
py-hanspell 맞춤법 검사기 설치하기 (0) | 2023.04.22 |
Khaiii 형태소 분석기 설치하기 (0) | 2023.04.22 |
소중한 공감 감사합니다