-
VQVC+: One-Shot Voice Conversion by Vector Quantization and U-Net architecture 리뷰논문 리뷰 2021. 10. 13. 19:37
들어가며
VAE - VQ-VAE - VQVC+ 시리즈의 마지막이다 !
사실 VQVC+ 의 선행 논문은 제목에서 유추할 수 있듯 VQVC 이지만, 개념이 크게 어렵지 않으므로 해당 포스트에서 함께 다루어도 될 것 같다
먼저, 제목에 있는 One-Shot Voice conversion 이라는 용어부터 체크하고 넘어가야 할 것 같다.
One-shot voice conversion이란, target 화자의 voice 가 1개 있을때, 이를 이용하여 수행하는 voice conversion 이다.Bottle neck 의 효과가 강력하여 일반적으로 voice conversion 에 잘 쓰이지 않는 U-Net 구조를 선행 연구인 VQVC 에 적용하여 One shot 으로 고품질의 음성 데이터를 생성해 낼 수 있었다고 한다.
Fig.1. VQVC+ 모델 아키텍처 VQVC
Fig.2. VQVC 모델 아키텍처 본 논문의 선행 연구였던 VQVC 논문의 제안 모델은 Fig.2.와 같다.
이 그림은 Vector quantization 을 이용하여 음성의 contents 를 담고있는 C벡터와 speaker 의 정보를 담고있는 S 벡터를 추출해내는 방법과 학습 과정을 나타내고 있다.
먼저 Spectrogram X 를 convolutional layer로 구성된 Encoder 를 통과하여 ‘V 벡터’를 생성한다.
V vector 에는 X 의 Speaker 정보와, Content 정보가 모두 포함되어 있다.
V 벡터를 Vector quantizing 을 통해서 speaker 정보를 제거하여
Content 에 대한 정보만 남아있는 C 벡터를 추출하고,
V vector 에서 C vector 를 빼고, 평균 낸 값을
C vector 의 크기와 같아지도록 반복하여 S 벡터를 얻어낸다.
아래 그림은 Voice Conversion 하는 방법을 나타내고 있다.
source 화자의 C vector 와, Target 화자의 S 벡터를 추출하여 Decoder에 넣어 Voice conversion 을 수행한다.Fig.3. vector quantization 이 작동하는 원리 Vector Quantizing 하는 방법은 Encoder의 아웃풋을 latent vector 들과 L2 norm으로 비교하여 가장 가까운 벡터를 하나 선택하는 것이다.
Vector Quantization 을 통해 speaker information 과, content information 이 분리되는 원리는
Encoder 를 통해서 vector 가 생성되면 이 vector 에는 화자 정보와 음성 정보가 들어있는데,
어떤 speaker 의 latent vector 가 들어와도 Code book 에 존재하는 vector 로 대표해서나타내기 때문에 이 vector들은 speaker 정보가 분리되었다고 생각할 수 있다.
따라서 vector quantize 과정을 통해 화자 정보를 제거할 수 있다.
그 후 V 벡터에서 C 벡터를 빼서 S 벡터를 얻을 수 있다.
Fig.4. C 벡터에 화자정보가 없음을 보여주는 그림 VQVC+ 논문에서는 V0 벡터에서 VQ 과정을 통해 얻은 C 벡터가 잘 추출된 것을 보이기 위해 T-sne 방법을 이용하여 그림으로 나타내었다. 같은 색의 점들은 같은 speaker 의 vector 들인데, v0 는 군집을 이루지만, C0 는 잘 섞여서 군집을 이루지 않는 것을 볼 수 있다.
이는 Instance normalization 과 vector quantization 을 이용하면 content 정보 분리를 잘 할 수 있다는 것을 보여준다.
이런 과정을 통해 VQVC 논문에서는 source spectrogram 에서의 content vector와 target spectrogram 의 speaker vector 를 이용하여 voice conversion 을 수행하였지만, 품질이 좋지는 않았다. 변환된 결과는 여기서 들을 수 있다.
논문의 저자는 이를 Vector Quantizing 을 하면서 손실된 정보 때문에 디코더가 완벽하게 reconstruction 하지 못한 것으로 판단했다.
이런 문제를 네트워크 아키텍처의 구조 변경을 통해 해결하려 하였고, 스펙트럼 생성기로 우수한 성능을 보였던 U-Net 구조를 이용하여 모델을 구성하였고 이를 VQVC+ 라 명명했다.
VQVC+
Fig.1. 에서 보이다 싶이 VQVC+ 모델은 U net 과 같이 전체적으로 다운 샘플링 과정과 업 샘플링 과정, 다운 샘플링 중의 정보를 decoder 로 전달해주는 skip-connection 으로 이루어져 있다.
VQVC+ 모델의 input,output 은 Mel-spectrogram 이다. 이 논문의 실험에서는 VQVC+ 의 output mel-spectrogram 을 미리 학습된 Mel-GAN 모델에 넣어서 음성으로 생성해낸다.
Fig.5. VQ Down conv VQVC+ 의 Down Convolution 모듈은 VQVC 의 인코더 부분과 유사한 모양이다.
Convolution layer 을 통하여 frame축, time 축의 크기를 각각 반으로 줄여주고, VQVC 모델과 같은 방식으로 S벡터와 C 벡터를 추출한다.
Fig.6. VQ up-conv and G block Up convolution 모듈은 대응되는 down convolution 모듈에서 생성된 S 벡터, C 벡터와 이전 단계에서 생성된 V 벡터를 입력으로 받는다.
up conv 모듈은 G블럭, time upsampling, freq upsampling 등으로 이루어져 있다.
G블록 안에 있는 group norm 은 Batch Norm 과 비슷한 역할을 하는데, batch 크기가 작을 때 더 효과적으로 학습을 할 수 있다고 한다.
Fig.7. Time Upsampling block, Frequency Upsampling block Time upsampling 은 단순히 duplicate 하여 업샘플링을 진행하고, freq upsampling 은 G block 의 output 과 concat 하여 진행한다.
Fig.8. loss functions 모델의 loss function 은 인코더, 디코더를 학습시키기 위한 reconstruction loss,
코드북의 벡터들을 학습시키기 위한 latent loss,로 이루어져있다.
논문에서는 Auto VC 와 Chou 모델을 가지고 비교했는데, 다른 모델들에 비해서 unseen 화자에 대해 변환이 자연스럽게 잘 된것을 MOS 평가를 가지고 측정하였다.
변환된 결과는 여기서 들을 수 있다.
'논문 리뷰' 카테고리의 다른 글
Deep Speech & Deep Speech2 간단 리뷰 (0) 2022.01.15 Listen, Attend and spell (0) 2022.01.01 WaveGlow: A Flow-based Generative Network for Speech Synthesis 리뷰 (0) 2021.10.13 Glow: Generative Flow with Invertible 1x1 Convolutions 리뷰 (0) 2021.10.13 WaveNet: A Generative Model for Raw Audio 리뷰 (0) 2021.10.13