Text Analysis
문자 텍스트를 언어학적 특징을 추출합니다. 딥러닝 기반 음성합성에서는 이부분이 많이 간편해 졌고 text analysis부분을 별도로 취급하지 않고 간단한 전처리 정도로 생각합니다.
1. Text Normalization
약자나 숫자로 되어 있는 부분을 발음나는대로 바꿔줍니다.
2. Word Segmentation
중국어나 한국어 같은 문자 기반 언어에 필요한 기술입니다. 가방을 하나의 단어로 볼것인지 아니면 가, 방 이라고 볼것인지 문맥을 보고 결정합니다.
3. Part of Speech Tagging
동사,명사,전치사, 조사 등 품사를 분석하는 기술,
4. Prosody Prediction
텍스트를 보고 강세, 톤, 길이를 예측합니다.
5. Grapheme to Phoneme
글자를 기반으로 단어의 발음을 생성합니다. 같은 단어일지라도 발음이 다른경우 존재. 영어(Chae18), 중국어(Park20), 한국어(Kim21d)등 open source.
Acoustic Model
Character나 Phoneme를 입력으로 받아서 acoustic feature를 추출하는 모델입니다. 기존에는 HMM기반 모델이였지만 현재는 신경망 기반 모델들이 대세입니다.
Seq2seq based
- DeepVoice3 : 바이두, CNN기반, 추후 Clarinet, ParaNet으로 발전.
- Tacotron2 : 구글, Mel-Spectrogram(사람의 청각의 특징을 좀 더 고려하여 FFT의 결과를 변형한 방식)을 중간 표현형으로 사용, style token을 학습하여 스타일이 컨트롤 되는 TTS
Transformer based
- TransformerTTS : Tacotron2의 RNN부분을 transformer로 바꾼모델, 병렬처리 가능->속도 증가
- FastSpeech2 : 복잡한 어텐션 방식이 Speech에서는 단점. 어텐션대신 length regulator이용, 빠른속도로 Mel-Spectrogram을 생성
- Lightspeech : FastSpeech의 구조 최적화, 속도 향상
- MultiSpeech : 단점 극복을 위해 여러가지 테크닉 적용
Flow based
- Flowtron : Tacotron개선, IAF(Inverse Autoregressive Flow)적용하여 Mel-Spectrogram생성
- Glow-TTS : 카카오, 텍스트와 Mel-Spectrogram간 매칭을 위해 다이나믹프로그래밍 이용
GAN based
- Multi-SpectroGAN : 적대적 훈련방법으로 Speech 스타일 훈련
- GANSpeech
Diffusion based
(Diffusion model은 data로부터 noise를 조금씩 더해가면서 data를 완전한 noise로 만드는 forward process(diffusion process)와 이와 반대로 noise로부터 조금씩 복원해가면서 data를 만들어내는 reverse process를 활용.)
- Diff-TTS : Diffusion 모델을 이용
- PriorGrad : 데이터의 통계량을 활용하여 prior분포 생성
- DiffGAN-TTS : Diffusion decoder를 사용, 적대적 훈련방법 사용
Vocoder
Acoustic Model에서 추출한 feature를 이용하여 waveform으로 바꿔주는 부분입니다.
Autoregressive Vocoders
기존에 만들어진 샘플을 이용하여 다음 오디오 샘플을 하나씩 하나씩 생성, 속도 느림
- wavenet : 자연스러운 음성 파형을 직접 생성, 다양한 특징적인 음성을 생성
- sampleRNN : RNN방식으로 샘플을 하나씩 생성,
- FFTNet : WaveNet의 Dilated Convolution의 모양이 FFT와 유사한점 착안.
Flow based
- IAF(Inverse Autoregressive Flow) : 훈련시간 오래걸리지만 생성속도 빠름.
- WaveGlow : affine coupling layer이용
- FloWaveNet : affine coupling layer이용
- WaveFlow : 여러 생성방식의 통합
GAN based
- GAN-TTS : 랜덤 윈도우 여러개로 waveform feature를 캡쳐하는 판별기
- VocoGAN : 여러 해상도 판별기
- Parallel WaveGAN(non-autoregressive) : 네이버/라인, 가우시안 노이즈도 입력받음
- MelGAN
- BigVGAN : 서울대/NVIDIA, 다양한 녹음환경
Diffusion based
Diffusion 방식은 복잡한 데이터 분포를 학습할 수 있어 높은 품질의 결과를 낼 수 있습니다. 하지만 생성시간이 오래 걸립니다.
- FastDiff : time-aware location-variation convolution 제안
- BDDM : Forward Process에 schedule network, Reverse Process에 score network 사용, 생성속도 크게 향상
Source-filter based
음파(source)가 구강구조를 거쳐(filtering) 우리가 듣는 목소리로 변한다고 생각하는 모델입니다. filter부분이 가장 중요한 부분입니다.
- Neural Source filter : filter부분을 신경망 모델로 만듭니다. Non Autoregressive 방식, 속도 빠름
- ExcitNet : Speech의 f0(피치) 부분/ 그외 (excitation)을 나누어 처리,
- LPCNet : waveRNN에 Linear Prediction을 더한 모델.
Vocoder는 Autoregressive(품질은 좋지만 느린) 방식에서 Non-Autoregressive(빠르지만 품질은 조금 떨어진)방식으로 발전하고 있습니다. NAR 성능도 점점 AR수준에 다다르고 있습니다.
Fully End-to-End TTS
Acoustic Model과 Vocoder를 함께 학습하여 텍스트나 음소(phoneme)를 waverform 오디오로 바로 만들어주는 한번에 전부 하는 모델. 훈련단계를 구분할 필요도 없고 에러도 줄어듭니다. Acoustic model에 Text Analysis, Vocoder를 붙여서 End-to-End 방식이라고 부릅니다.
- FastSpeech 2 : FastSpeech2(Acoustic model) + WaveNet(vocoder), 훈련의 어려움때문에 미리 만들어놓은 mel encoder를 활용
- Wave-Tacotron : Tacotron+WaveNet, flow방식
- VITS : 카카오팀, Glow-TTS + HiFI-GAN, VAE이용, 적대적훈련 방식
- LiteTTS : 연세대/네이버, Feed Forward Transformer+HiFi GAN
- JETS : 카카오, FastSpeec2 + HiFi-GAN
- DelightfulTTS 2 : Microsoft
아래부터는 실용적으로 사용되기 위해 고려해야할 사항, 연구, 발전중
Low-Resource TTS
TTS는 {텍스트-해당 스피치} 두가지가 쌍으로 있는 가공된 데이터가 많이 필요합니다. 가공되지 않은 데이터로 Semi-Supervised, Unsupervised 로 발전중.
Expressive TTS
사람처럼 자연스러운 스피치를 만들어내기 위해 감정을 추가합니다.
Adaptative TTS
임의의 타겟 스피커의 목소리로 TTS를 만들어내는 기술입니다.(voice adaptation, voice cloning, custom voice)
- AdaSpeech3 : Microsoft, 텍스트 없이 현실적인 스피치 데이터로만 학습
- Guided-TTS2: 서울대, speaker-conditional DDPM을 훈련후 약간의 데이터로 fine-tuning
- AdaSpeech 4 : zero-shot adaptation 성능 향상
- GenerSpeech: zero-shot adaptation, 여러 레벨의 style adaptor로 캡쳐, mix-style layer normalization으로 분리
few-shot adaptation : 가능하면 적은 양의 스피치 데이터를 주고 이를 이용하여 모델을 다시 훈련하는 방식(fine-tuning). 최소 몇분(minutes)의 타겟 스피커의 스피치 데이터가 필요.
zero-shot adaptation: 아주 짧은 스피치 데이터에서 스타일을 추출후 바로 적용하게 하는 것
'음성 합성' 카테고리의 다른 글
TTS 응용 사례 (44) | 2023.08.05 |
---|---|
음성합성 Text-to-Speech(TTS) 역사 (132) | 2023.07.20 |