2. Source 화자의 Linguistic(텍스트) 정보는 유지하며,
Target 화자의 Acoustic(목소리) 정보로 말하게 바꾸는
Sequence-to-Sequence Task
Hello World Hello World
Voice Conversion
Model
What is Voice Conversion?
2
3. Generative Model : GAN, VAE, Flow based Model
https://lilianweng.github.io/lil-log/2018/10/13/flow-based-deep-generative-models.html3
4. 첫 번째 실험 (~2020.02)
One-shot Voice Conversion by Separating Speaker and Content Representations with Instance Normalization (2019.04, Interspeech)
• Encoder : Speaker 정보와 Context 정보를 분리
• Decoder : AdaIN으로 스타일 정보 제공
특징
결과
• Demo와 거의 같은 결과 (음질 적당)
• DSP / Pytorch / Autoencoder 연습
4 https://subinium.github.io/Voice-Conversion
https://arxiv.org/abs/1904.05742
5. 두 번째 실험 (~2020.03)
CycleGAN-VC2: Improved CycleGAN-based Non-parallel Voice Conversion (2019.04, ICASSP)
• CycleGAN을 Voice에 적용
• Audio를 Image처럼 사용
특징
결과
• CycleGAN-VC1과 유사한 결과
• CHERRY-PICK!!
• 발음 손실 현상 발생
• Vocoder가 필요함
5 https://arxiv.org/abs/1904.04631
6. Voice Conversion Challenge 2020
• Voice Conversion 대회가 존재
• 2016 / 2018 에 개최되어 올해 3회차!
• 20/03/09 ~ 20/05/29까지
인턴 연장과 함께 챌린지 시작!
프로젝트 뭐하지? 하던 찰나에 발견한 챌린지!!
6 http://www.vc-challenge.org/
7. Voice Conversion Challenge 2020 (VCC2020)
SEM1SEF1 SEM2SEF2
TEM1TEF1 TEM2TEF2
Mono-Lingual Voice ConversionTask 1
S E F 1
Source
Target
English
German
Finnish
Mandarin
Female
Male
1
2
• Source : SEF1, SEM1, SEF2, SEM2
• Target : TEF1, TEM1, TEF2, TEM2
Speaker 명칭 이해하기
총 16(=4*4)개의 Conversion을 만들어야 함
70문장(Parallel 20개 + Non-Parallel 50개)
7
9. 어떤 포인트로 실험을 해야할까? (with Taylor)
Result Dataset Feature Method
• Naturalness (MOS)
• Speaker Similarity (MOS)
어떤게 좋은 결과일까?
유학파한국인 vs 콩글리시
• EMIME
• VCC2020 (14)
• VCTK (영어, 109)
• LJSpeech
• 영(여1)
• M-AILABS
• 영(남1), 독(남1)
• CSS10
• 핀(남1) / 독(여1) / 중(여1)
• LibriVox
• 핀(여1) / 중(남1)
영어 외 언어의 데이터셋 퀄리티 low
• WORLD vocoder
• SP(MCEP), AP, F0
• V / UV
• Mel spectrogram
• MFCC
• Delta
• Delta-Delta
• Text (w ASR)
• Preprocessing
• High-pass filter
• Stationary Noise
• SR to 24k
기존 VC는 MCEP 다수 사용
• Baseline
• ASR + TTS
• CycleVAE + PWG
• Others
• Phonetic PosteriorGram
• CycleGAN
• StarGAN
• BLOW
• Attention-Seq2Seq
• VQ-VAE
• Wavenet AE
너무 많은 방법론 + 시간 한정
Non-Parallel 해결?
9
10. 어떤 방법을 선택할까? VQ-VAE
VQVAE : Voice Conversion Demo VQVAE + Wavenet Autoencoder
모든 데모 중 가장 좋은 음질과 성능 + WaveNet의 저자
10 https://avdnoord.github.io/homepage/vqvae/
11. VQ-VAE
• Codebook을 사용하여 Discrete Latent
• Vector Quantization 부분 제외 커스텀 가능
• Phoneme등 Discrete 데이터에 적합
• Reconstruction Loss와 Codebook 별개
• Posterial Collapse 방지
특징
Neural Discrete Representation Learning (2017.11, NIPS)
11 https://arxiv.org/abs/1711.00937
12. VQ-VAE 구현과 Point!
1. Time Step별 Channel로 Flatten
2. Channel과 Codebook의 L2 norm
3. 가장 가까운(작은) Codebook 계산
4. One-hot Encoding으로 해당 코드북만 선택
5. Encoder과 Codebook 따로 업데이트 (가중치)
6. Decoder 결과는 Encoder에만 gradient 흐르게
7. Codebook의 엔트로피 계산 (perplexity)
12
13. WaveNet Autoencoder
• Bottleneck을 VQVAE로 사용하는 AE
• VAE, AE보다 좋은 결과 검증
• Wavenet을 Decoder겸 Vocoder로 사용
• Phoneme과 Audio의 매칭이 어느 정도 가능
특징
Unsupervised speech representation learning using WaveNet autoencoders (2019.01, IEEE TASLP)
13 https://arxiv.org/abs/1901.08810
여기서 Decoder가 Taylor의 PWG라면??
CycleGAN 실험 개선 여지 X (~20/04/13)
Baseline Model 가즈아ㅏㅏㅏㅏㅏㅏ!!
14. Codebook Size
• Autoencoder를 이용한 Voice Conversion
• Bottleneck이 넓다 => 불필요 Style 추가
• Bottleneck이 좁다 => Content 손실
Quantized Vector == Bottleneck
적정한 Bottleneck에 Phoneme이 담기길 기대
특징
AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss (2019.05, ICML)
14 https://arxiv.org/abs/1905.05879
15. 실험 과정 Timeline
• 구현 완료 및 코드 정리
• Speaker 정보 X
• Reconstruction O
Taylor : Converter + Vocoder cascaded VC 실험 진행
• # of Residual Block (2 / 4 / 6)
• Learning Rate (0.0001/ 0.0004)
• Jitter Regularization (O / X)
• VQVAE / VQVAE_EMA
• # of Codebook (48 / 64)
• Dataset (VCC only / other)
데이터셋 추가 + 전처리
4/27 5/11 5/18
• VCC2020 : # of Codebook (48 / 64)
• Other : # of Codebook (64 / 256 / 1024)
• MFCC / SP(MCEP)
• Dataset (Eng-Ger, Eng-Fin, Eng-Chn)
5/25
• F0 Linear Transform (O / X)
• # of Codebook (48 / 56 / 64)
• VCTK pretrained
5/29
실수 발견 + 실험 시작
제출
F0 / Pretrained Encoder Self-MOS
15
16. Module # of parameters
Encoder 23,015,424
Bottleneck 175,808
PWG Generator 1,645,616
PWG Discriminator 99,842
ReLU
Conv (768)
ReLU
Conv (768)
Input
Output
⊕
StridedConv (768)
ResBlock
Conv (768)
Conv (768)
Conv (768)
Conv (768)
⊕
⊕
⊕
× 4ResBlock
Encoder
ResBlock
Conv (64)
VQ
n_code=56
n_dim=64
Conv (128)
Bottleneck
Upsample (512)
Source spectral envelope Speaker one-hot vector
Noise
Parallel WaveGAN
Generator
Parallel WaveGAN
Discriminator
Output waveform
Decoder
[B, 513, L/256]
[B, 768, L/512]
[B, 64, L/512]
[B, 128, L]
[B, 128, L/512]
[B, 14 or 109]
[B, L]
[B, L]
Source waveform
[B, L]
<Figure 1> Modified bottleneck-based VQ-VAE-VC
Encoder used the module that pretrained 200k steps first with
VCTK dataset (109 speakers), and then trained with VCC2020
dataset(14 speakers). Hyperparameters not presented in this
figure were used as described in original papers*.
(ex. Parallel WaveGAN)
<Table 1> Number of parameters per module
VQ-VAE-VC model has four major modules.
Encoder, Bottleneck, Parallel WaveGAN Generator,
Parallel WaveGAN Discriminator
* Unsupervised speech representation learning using WaveNet autoencoders
Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram
Our Model : VQ-VAE-VC
16
Result
17. What I Missed :(
17
- Audio Energy & Loudness : SEF2의 오디오가 월등히 컸음 (약 min값의 10배)
- Regularization 후 실험
Preprocessing
- Dimension을 키우는 실험
- Codebook 개수를 키우고 이에 맞는 Hyperparams를 찾는 실험 (제출 모델 : 56)
Codebook
- Conversion Pair에 따른 Fine Tuning 실험
- Total 40 pairs
Fine Tuning
- F0를 log linear transform 외에 VAE 등으로 실험
- VCTK (or Other Dataset) Pretrained Model을 200k 외 실험
Experimentation
짧은 기간, 해볼 수 있지만 못했던 아쉬움
18. Thanks :)
18
Special thanks to Taylor, Jeff, Montae, Eldon, Joy, Abigail, Leo, Satoshi, Woody, Jaytee, Chris
‘ ’