SlideShare a Scribd company logo
1 of 18
Download to read offline
Voice Conversion
Audio알못에서 VCC2020참가까지
1
I am Groot
Source 화자의 Linguistic(텍스트) 정보는 유지하며,
Target 화자의 Acoustic(목소리) 정보로 말하게 바꾸는
Sequence-to-Sequence Task
Hello World Hello World
Voice Conversion
Model
What is Voice Conversion?
2
Generative Model : GAN, VAE, Flow based Model
https://lilianweng.github.io/lil-log/2018/10/13/flow-based-deep-generative-models.html3
첫 번째 실험 (~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
두 번째 실험 (~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
Voice Conversion Challenge 2020
• Voice Conversion 대회가 존재
• 2016 / 2018 에 개최되어 올해 3회차!
• 20/03/09 ~ 20/05/29까지
인턴 연장과 함께 챌린지 시작!
프로젝트 뭐하지? 하던 찰나에 발견한 챌린지!!
6 http://www.vc-challenge.org/
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
Voice Conversion Challenge 2020 (VCC2020)
SEM1SEF1 SEM2SEF2
TFM1TFF1 TMM1TGF1 TGM1 TMF1
Cross-Lingual Voice ConversionTask 2
• source speaker는 동일
• 핀란드어(2), 독일어(2), 중국어(2)
총 24(=4*6)개의 Conversion을 만들어야 함
70문장(Non-Parallel)
8
어떤 포인트로 실험을 해야할까? (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
어떤 방법을 선택할까? VQ-VAE
VQVAE : Voice Conversion Demo VQVAE + Wavenet Autoencoder
모든 데모 중 가장 좋은 음질과 성능 + WaveNet의 저자
10 https://avdnoord.github.io/homepage/vqvae/
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
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
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 가즈아ㅏㅏㅏㅏㅏㅏ!!
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
실험 과정 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
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
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
짧은 기간, 해볼 수 있지만 못했던 아쉬움
Thanks :)
18
Special thanks to Taylor, Jeff, Montae, Eldon, Joy, Abigail, Leo, Satoshi, Woody, Jaytee, Chris
‘ ’

More Related Content

Similar to Voice Conversion : Audio알못에서 VCC2020참가까지

kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340Samsung Electronics
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경NAVER Engineering
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_shareRhea Strike
 
Long term feature banks for detailed video understanding (Action Recognition)
Long term feature banks for detailed video understanding (Action Recognition)Long term feature banks for detailed video understanding (Action Recognition)
Long term feature banks for detailed video understanding (Action Recognition)Susang Kim
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
IT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 yearsIT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 years연지 김
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528영남 허
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기Tae Young Lee
 
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)NAVER D2
 
전자해도 표준과 뷰어 (최규성)
전자해도 표준과 뷰어 (최규성)전자해도 표준과 뷰어 (최규성)
전자해도 표준과 뷰어 (최규성)Kyu-sung Choi
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기Chris Ohk
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기NAVER D2
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Sung-jae Park
 

Similar to Voice Conversion : Audio알못에서 VCC2020참가까지 (20)

kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
[네이버오픈소스세미나] Contribution, 전쟁의 서막 : Apache OpenWhisk 성능 개선 - 김동경
 
D2 Havok
D2 HavokD2 Havok
D2 Havok
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_share
 
Long term feature banks for detailed video understanding (Action Recognition)
Long term feature banks for detailed video understanding (Action Recognition)Long term feature banks for detailed video understanding (Action Recognition)
Long term feature banks for detailed video understanding (Action Recognition)
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
IT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 yearsIT 서비스 개발 15년 _ IT service 15 years
IT 서비스 개발 15년 _ IT service 15 years
 
Webrtc 허영남 20150528
Webrtc 허영남 20150528Webrtc 허영남 20150528
Webrtc 허영남 20150528
 
Python으로 채팅 구현하기
Python으로 채팅 구현하기Python으로 채팅 구현하기
Python으로 채팅 구현하기
 
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)[154] 데이터 센터의 오픈 소스 open compute project (ocp)
[154] 데이터 센터의 오픈 소스 open compute project (ocp)
 
전자해도 표준과 뷰어 (최규성)
전자해도 표준과 뷰어 (최규성)전자해도 표준과 뷰어 (최규성)
전자해도 표준과 뷰어 (최규성)
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
[C++ Korea 3rd Seminar] 새 C++은 새 Visual Studio에, 좌충우돌 마이그레이션 이야기
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
제2회 hello world 오픈세미나 Web Audio API-가능성엿보기
 
llvm 소개
llvm 소개llvm 소개
llvm 소개
 
OpenStack Swift Debugging
OpenStack Swift DebuggingOpenStack Swift Debugging
OpenStack Swift Debugging
 
Implementing remote procedure calls rev2
Implementing remote procedure calls rev2Implementing remote procedure calls rev2
Implementing remote procedure calls rev2
 

More from Subin An

Image data augmentatiion
Image data augmentatiionImage data augmentatiion
Image data augmentatiionSubin An
 
T ka kr_4th
T ka kr_4thT ka kr_4th
T ka kr_4thSubin An
 
Datasheets for dataset
Datasheets for datasetDatasheets for dataset
Datasheets for datasetSubin An
 
[Keynote로 이해하는 GAN들] DCGAN
[Keynote로 이해하는 GAN들] DCGAN[Keynote로 이해하는 GAN들] DCGAN
[Keynote로 이해하는 GAN들] DCGANSubin An
 
[Keynote로 이해하는 GAN들] Vanilla GAN
[Keynote로 이해하는 GAN들] Vanilla GAN[Keynote로 이해하는 GAN들] Vanilla GAN
[Keynote로 이해하는 GAN들] Vanilla GANSubin An
 
Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Subin An
 
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기Subin An
 
알고리즘, 어떻게 공부할까?
알고리즘, 어떻게 공부할까?알고리즘, 어떻게 공부할까?
알고리즘, 어떻게 공부할까?Subin An
 
Introduction to CNN
Introduction to CNNIntroduction to CNN
Introduction to CNNSubin An
 
청소년때 블로그를 써야하는 이유
청소년때 블로그를 써야하는 이유청소년때 블로그를 써야하는 이유
청소년때 블로그를 써야하는 이유Subin An
 
2nd DLCAT : Newbie Guide to Blogging
2nd DLCAT : Newbie Guide to Blogging2nd DLCAT : Newbie Guide to Blogging
2nd DLCAT : Newbie Guide to BloggingSubin An
 
2019 고려대학교 프로그래밍 경시대회 풀이
2019 고려대학교 프로그래밍 경시대회 풀이2019 고려대학교 프로그래밍 경시대회 풀이
2019 고려대학교 프로그래밍 경시대회 풀이Subin An
 
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)Subin An
 
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이Subin An
 
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편[수비니움의 머신러닝 튜토리얼] 1강 기본용어편
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편Subin An
 

More from Subin An (15)

Image data augmentatiion
Image data augmentatiionImage data augmentatiion
Image data augmentatiion
 
T ka kr_4th
T ka kr_4thT ka kr_4th
T ka kr_4th
 
Datasheets for dataset
Datasheets for datasetDatasheets for dataset
Datasheets for dataset
 
[Keynote로 이해하는 GAN들] DCGAN
[Keynote로 이해하는 GAN들] DCGAN[Keynote로 이해하는 GAN들] DCGAN
[Keynote로 이해하는 GAN들] DCGAN
 
[Keynote로 이해하는 GAN들] Vanilla GAN
[Keynote로 이해하는 GAN들] Vanilla GAN[Keynote로 이해하는 GAN들] Vanilla GAN
[Keynote로 이해하는 GAN들] Vanilla GAN
 
Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?Pytorch Implementation : 파일을 어떻게 나눠야할까?
Pytorch Implementation : 파일을 어떻게 나눠야할까?
 
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
[T아카데미] 비개발자를 위한 Git과 Github Page 블로그 만들기
 
알고리즘, 어떻게 공부할까?
알고리즘, 어떻게 공부할까?알고리즘, 어떻게 공부할까?
알고리즘, 어떻게 공부할까?
 
Introduction to CNN
Introduction to CNNIntroduction to CNN
Introduction to CNN
 
청소년때 블로그를 써야하는 이유
청소년때 블로그를 써야하는 이유청소년때 블로그를 써야하는 이유
청소년때 블로그를 써야하는 이유
 
2nd DLCAT : Newbie Guide to Blogging
2nd DLCAT : Newbie Guide to Blogging2nd DLCAT : Newbie Guide to Blogging
2nd DLCAT : Newbie Guide to Blogging
 
2019 고려대학교 프로그래밍 경시대회 풀이
2019 고려대학교 프로그래밍 경시대회 풀이2019 고려대학교 프로그래밍 경시대회 풀이
2019 고려대학교 프로그래밍 경시대회 풀이
 
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)
Global AI Boot Camp Busan : 이왕이면 다홍 데이터 (Python Visualization)
 
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이
2018 고려대학교 프로그래밍 경시대회 KCPC 간략 풀이
 
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편[수비니움의 머신러닝 튜토리얼] 1강 기본용어편
[수비니움의 머신러닝 튜토리얼] 1강 기본용어편
 

Voice Conversion : Audio알못에서 VCC2020참가까지

  • 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
  • 8. Voice Conversion Challenge 2020 (VCC2020) SEM1SEF1 SEM2SEF2 TFM1TFF1 TMM1TGF1 TGM1 TMF1 Cross-Lingual Voice ConversionTask 2 • source speaker는 동일 • 핀란드어(2), 독일어(2), 중국어(2) 총 24(=4*6)개의 Conversion을 만들어야 함 70문장(Non-Parallel) 8
  • 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 ‘ ’