728x90

이번에 Review할 논문은 "Voice Impersonation using Generative Adversarial Networks" 이다. Carnegie Mellon University의 "Yang Gao" et al. 이 작성하였으며, 2018.02.19에 Arxiv에 출간되었고, ICASSP 2018에 실렸다. 해당 논문은 https://arxiv.org/abs/1802.06840 에서 볼 수 있다.

 

1. Overview

 해당 논문은, 음성 변환, 변조, 흉내 (Voice Conversion, Impersonation)을 다루는 내용이다. Voice Impersonation에서 결과 음성은 target 스피커에서 자연스럽게 생성된 느낌을 확실하게 전달해야하며, 피치 및 기타 인식 가능한 신호 품질뿐만 아니라 target 스피커의 style을 모방해야한다. 이 논문에서는 Impersonation된 음성 합성을 위한 신경망 기반의 음성 품질 및 스타일 모방 프레임 워크인 VoiceGAN을 제안하며, 이 프레임워크는 GAN을 기반으로 한다.

 모델의 입력은 Spectrogram을 받고 있고, 제안한 VoiceGAN 네트워크의 output은 Griffin-Lim 방법을 사용하여 time 도메인 신호를 재구성하여 합성된 Spectrogram을 내보낸다. 논문에서 주장하는 Voice style transfer에 대한 내용은, 실제로 성별을 바꿔가며 pair-dataset 기반으로 결과를 보여주고 있다.

 변환 결과는 https://nbviewer.jupyter.org/github/Yolanda-Gao/Spectrogram-GAN/blob/master/VoiceGAN%20result.ipynb?flush_cache=true 에서 들어볼 수 있다.

 

2. Intro

 한 사람이 다른 사람의 목소리를 모방하여 다른 사람과 같은 소리를 내려고 시도하는 음성 가장(Voice Impersonation)은 복잡한 현상이다. Impersonation 한 사람은(X) Impersonation 한 사람의 목소리(x)에서 가장 두드러진 측면을 직관적으로 일치시켜 변환을 수행한다. 이 프로세스에서 Impersonation을 통해 변경한 음성의 가장 일반적인 특성이 음성 품질 요소와 스타일 요소이다. 

 하지만 음성은 설명하기 어려운 개체이다. Nasality(콧소리), 거칠기, 숨가쁨 등과 같은 일부 측면이 기존 연구를 통해 확인되었지만, 이들 중 대부분은 화자간에 의미 있는 비교를 허용하는 방식으로 정량화 하기가 힘들다. target 화자의 말하기 속도 등의 특징들을 시간적 피치 및 에너지 패턴(magnitude)을 포함하는 스타일 요소는 정확한 정의와 비교 가능성 측면에서 유사하게 모호하다.

 (개인 생각: 그래서 우리는 MOS를 측정하거나, 합성된 음질의 SNR(Signal-to-Noise Ratio)등을 통해 비교를 하기도 한다. 하지만 가장 직관적인 것은 실제로 사람이 들어보는 것이다.)

 이 논문에서는, 다른 컨텐츠를 수정하지 않고 음성의 특정 측면만 변환하는 것이 목표이다. 이상적으로 스타일 특징을 결정하는 음성의 측면을 식별, 격리 및 명시적으로 측정한 뒤 이를 사용하여 대상 음성을 수정하기도 하지만, 이러한 특징들은 주관적/객관적으로 식별이 가능하지만 위에 언급한 것 처럼 정량화 할 수 없기 때문에 일반적으로 어렵다고 주장한다. 

 저자의 목표는 식별할 수 있는 스타일의 측면을 전달하는 매커니즘을 개발하는 것이다. 이러한 맥락에서 가장 관련성이 높은 선행 연구는 소스 음성을 대상 음성으로 변환하는 특정 문제를 다루는 음성 변환과 관련이 있다. 일반적으로 음성 변환은 Pitch 및 Spectrul Envelope과 같은 신호의 순간 특성을 수정한다. 여기에 codebook based conversion (Voice Conversion through Vector Quantization)과 minimum-mean-squared error linear estimator (Voice Conversion Based on Maximum-Likelihood Estimation of Spectral Parameter Trajectory), Neural Networks (Voice conversion using deep neural networks with layerwise generative training) 등 여러 기법들을 사용한다. 위 방법들은 모두 신호의 순간적인 특성 변화에 매우 효과적이며, 심지어 일부 운율 신호를 mapping 할 수 있지만, 일반적으로 linguistic한 의미를 측정할 수 없다. 

 또한 음성 변환을 효과적으로 하기 위해서 train/test set간의 녹음이 완벽하게 시간이 정렬되어 있어야 한다. 이는 일반적으로 녹음을 서로 맞추기 위해 녹음 시간을 왜곡하여 충족시키는 요구 사항인데, 이렇게 녹음하기에는 비현실적이다. 또한 목적이 음성의 도메인 변환을 수행하는 것이 아니라 스타일을 변형시키는 것만 배울 경우, 위의 정렬은 부적절 할 수 있다.

 이러한 맥락에서 저자는 GAN을 주장한다. Discriminator는 병렬 신호들 사이의 mapping을 배우기보다는 원하는 스타일 특징을 가진 데이터와 그렇지 않은 데이터를 구별한다. Generator는 Discriminator를 어리석게 만드는 방법을 배워야한다. D와 G 모두 Deep Learning에 의해 모델링되며, 적절한 설계와 충분한 훈련 데이터로 변환을 모델링 할 수 있다. 기의 음성 변환 방법에 필요한 것과 같은 병렬 데이터는 필요하지 않다. (하지만... 결과를 들어보면 pair dataset에 대한 결과만 나오며, 뒤에서 소개될 Loss에는 supervised로서, label이 주어져 있음)

 음성 신호 변환에 GAN을 사용하기에는 여러 문제가 있다. GAN에서 널리 사용되는 이미지와는 달리 음성은 크기가 고정되어 있지 않으며(즉, 지속 시간이 고정되어 있지 않음), 축소 될 때 스타일 특성이 많이 손실된다. 음성과 같은 sequencial 데이터 생성은 이미지와 비교하여 더 어려운 문제이다. 프로세스를 순진하게 구현하면 언어, 스타일 또는 이해하기 어려운 내용을 잃은 데이터가 생성 될 수 있다.(매우 공감...) 이 연구에서는 음성 변환 문제에 대한 여러 GAN 모델을 소개하고, 저자의 모델과 해당 학습 알고리즘은 언어 고유의 특정 문제를 고려하도록 설계되었다. 구체적으로, 저자는 모델 구조와 학습 알고리즘을 적절히 선택하고 GAN 프레임워크에 적절한 Discriminator를 도입하여 다른 측면을 모방하기 위해 다른 언어를 수정하거나 Linguistic 정보를 잃지 않고 음성의 특정 특성 유지 방법을 소개한다.

 

3. Related Works

3-1. GAN

Fig. 1. The original GAN model

 Original GAN 모델은 generator $G(z)$와 Discriminator $D(x)$로 이루어져 있다.

Generator $G$는 일부 표준 확률 분포 함수 $P_z$ 로부터 도출 된 랜덤 변수 $z$ 를 입력으로 취하며, 표준 정규 분포를 따르는 출력 벡터 $x_z$ 를 생성한다.

 Discriminator $D$는 $P_x$에서 추출한 표본 $x~P_x$, 즉 모델링하려는 실제 분포와 Generator $G$에서 생성한 표본을 구별한다. T는 벡터 $x$가 $P_X$으로부터 도출된 사건이라고 가정하면, $P_x$에서 Discriminator는 $T$의 사후 확률, 즉 $D(x) = P(T|X)$를 계산한다.

  GAN의 수식은 아래와 같다.

GAN
GAN Discriminator Loss
GAN Generator Loss

부가적으로 설명을 달아보겠다.

Discriminator의 역할인 $max_D V(D)$ 는 실제 이미지들을 더 잘 인식하는 것이 목적이고,

Generator의 역할인 $min_G V(G)$ 는 가짜 이미지들이 Discriminator를 속이는 것이 목적이다.

 

여기에서,

$E_{x~P_x}$ 는 $x$ 가 real data로부터 도출된 sample data

$E_{z~P_Z}$ 는 $z$ 가 fake data(noise)로 부터 도출된 sample data

$D(x)$ 는 실제 이미지가 들어갔을 때의 D(real)의 확률

$1-D(x_z)$ 는 가짜 이미지가 들어갔을 때의 D(fake)의 확률

$[logD(x)]$ 는 D(real)의 likelihood

$[log(1-D(x_z))]$ 는 D(fake)의 likelihood

이다.

 

더 좋은 품질의 GAN output을 얻기 위해서는

$Generator: D(x_z)$ 를 minimize 시켜야 하고,

$Discriminator:D(x)$ 를 maximize 시켜야 한다.

즉 결론적으로 $G$ 와 $D$는 적대적(Adversarial)이다. 우리는 종종 GAN을 미니 맥스 게임으로 정의하는데, G는 V를 최소화하고 D는 V를 최대화하기를 원하기 때문이다.

 

3-2. Style transfer GAN

Fig. 2. Style transfer by GAN

 2번째로 논문에서 소개하는 것은 Style transfer를 GAN을 통해서 한다는 것이다. $P_A$분포로부터 가져온 input data $x_A$ 를 $Generator$를 통해 $transformed$ 하여 $x_{AB}$를 만든다. 이것을 Transformer $G_{AB}$ 라고 부른다. (Attention is all you need논문에 소개된 Transformer 아닙니다..) $G_{AB}$의 목적은 $x_A$를 분포 $P_B$에서 기본적으로 발생하는 변수 $x_B$의 스타일로 변환하는 것이다.

 Discriminator $D_B$는 $x_B$에서 $P_B$의 실제 드로우와 $P_A$에서 $x_A$의 드로우를 변환하여 얻은 인스턴스 $x_{AB}$ 중 누가 진짜인지를 구별하는 역할을 한다. Style transfer 최적화는 아래의 공식과 같다.

 

 

Style transfer Generator Loss and Discriminator Loss

generator $G$는 generator loss인 $L_G$을 최소화하여 업데이트가 되는 반면, discriminator $D$는 discriminator loss인 $L_D$를 최소화하여 업데이트한다.

 

3-3. DiscoGAN

Fig. 3. The DiscoGAN model

DiscoGAN은 카테고리 두 가지 범주의 데이터인 $A$ 및 $B$를 서로 변환하려고 시도하는 대칭 모델이다. DiscoGAN은 2개의 Generator를 포함하고 있는데,

- $G_{AB}$ = A의 분포 $P_A$로부터 얻은 $x_A$를 $B$로 변환 ==> $x_AB$ ==> $G_{AB}(x_A)$

- $G_{BA}$ = B의 분포 $P_B$로부터 얻은 $x_B$를 $A$로 변환 ==> $x_BA$ ==> $G_{BA}(x_B)$

두 Generator는 서로 역의 관계를 갖고 있다.

 $G_{AB}$의 목표는 $B$의 style을 모방한 $G_{AB}(x_{AB})$의 output이 $B$ 데이터 분포인 $P_B$와 구별되지 않도록 하는 것이다. $G_{BA}$ 도 역의 관계로 생각하면 될 것이다.

 

다음은 DiscoGAN의 loss 부분이다.

DiscoGAN loss 부분 설명

빨간색 그림은 내가 표시한 것이다.

위에서 언급한 GAN loss와 Style transfer loss를 확실히 이해하였다면 이 부분도 어렵지 않게 이해할 수 있다.

2개의 Generator Loss

$L_{G_A}$는 given data $B$를 $A$로 변환한 뒤의 real일 확률의 negative likelihood 값이며,

$L_{G_B}$는 given data $A$를 $B$로 변환한 뒤의 real일 확률의 negative likelihood 값이다.

즉 둘다 작을수록 좋다.

 

또한 그림에 보이는 Reconstruction Loss가 2개가 있다. DiscoGAN에서는 $d$를 두 이미지의 거리로 계산하였으며, 이때 $MSE$loss를 사용하였다.

$L_{CONST_A} = d(G_{BA}(G_{AB}(x_A)),x_A)$ 

Reconstruction A loss는 $x_A$와 $B$로 변환하였다가 다시 $A$로 변환한 이미지와의 $MSE$loss 값이며,

$L_{CONST_B} = d(G_{AB}(G_{BA}(x_B)),x_B)$

Reconstruction B loss는 $x_B$와 $A$로 변환하였다가 다시 $B$로 변환한 이미지와의 $MSE$loss 값이다.

 

DiscoGAN GAN Loss

이제 전체 loss를 정리해보겠다.

2개의 Generator loss는 다음과 같이 정의된다

$L_{GAN_{AB}} = L_{G_B} + L_{CONST_A}$

$L_{GAN_{BA}} = L_{G_A} + L_{CONST_B}$

그러므로,

$L_G = L_{G_{AB}} + L_{G_{BA}}$

$ ==> L_{G_B} + L_{CONST_A} + L_{G_A} + L_{CONST_B}$

 

2개의 Discriminator loss들은 다음과 같이 정의된다.

$L_{D_A} = -E_{x_A~P_A}[logD_A(x_A)] -E_{x_B~P_B}[log(1-D_A(G_{BA}(x_B)))]$

$L_{D_B} = -E_{x_B~P_B}[logD_B(x_B)] -E_{x_A~P_A}[log(1-D_B(G_{AB}(x_A)))]$

따라서 전체 $L_D$ 는

$L_D = -E_{x_A~P_A}[logD_A(x_A)]-E_{x_B~P_B}[log(1-D_A(G_{BA}(x_B)))] - E_{x_B~P_B}[logD_B(x_B)] - E_{x_A~P_A}[log(1-D_B(G_{AB}(x_A)))]$ 가 된다.

 

4. Proposed Model: VoiceGAN

 DiscoGAN은 원래 이미지의 스타일을 변형할 수 있도록 설계되었다. 저자는 이 모델을 음성에 적용하기위해 음성을 Spectrogram으로 변환하여 진행하였다. (단순히 STFT한 Spectrogram인지, Mel-Spectrogram인지 정확히 논문에 언급은 안되었지만, Mel-Spectrogram으로 변환한 뒤 Linear Prediction을 한 후 Griffin-Lim Method를 적용한 것 처럼 보임) 

위에 언급한 것처럼, 보통의 GAN은 이미지에서 많이 사용되고 있고, 음성은 적용하기가 어려운 문제점을 저자는 아래와 같이 주장한다.

1. Original DiscoGAN은 고정 크기의 이미지에서 작동하도록 설계되었다. 본질적으로 가변 크기의 음성 신호와 함께 작동하려면 새로운 디자인에서 이 제약 조건을 완화해야한다.

2. 음성 신호의 언어 정보가 손실되지 않도록 하는 것이 중요하다.

3. 저자의 목표는 연설의 특정 측면을 수정하는 것이다. 예를 들어 스타일을 구현하기 위해 모델에 추가 구성 요소를 추가한다.

 

저자는 위의 문제점을 개선할 VoiceGAN을 제안한다. 그럼 이제 VoiceGAN에 대하여 알아볼 시간이다.

 

Voice GAN의 Generator와 Discriminator

모델 아키텍쳐는 위와 같은데, DiscoGAN의 Generator와 VoiceGAN의 Generator 부분은 같다. 차별점은, Discriminator인데,

1. Adaptive Pooling layer는 CNN layer 이후 및 MLP 계층 이전에 추가된다.

2. 채널 별 풀링이 포함 된다.

3. 가변 크기의 feature map을 고정 된 차원의 벡터로 변환한다.

아쉽지만 여기에서 Hyperparameter에 대한 언급은 생략되어 있다. 코드라도 공개 했으면 좋았을텐데..

 

우선 VoiceGAN의 reconstruction loss를 보면 아래와 같다.

$L_{CONST_A} = \alpha d(X_{ABA},x_A) + \beta d(x_{AB},x_A)$

$L_{CONST_B} = \alpha d(X_{BAB},x_B) + \beta d(x_{BA},x_B)$

식의 뒷 편을 자세히 보면

$\beta d(x_{AB},x_A)$ 와 $\beta d(x_{BA},x_B)$ 가 추가 되었다. 추가한 이유를 저자는 "For retain the linguistic information" 라고 소개하고 있다.

$d(x_{AB}, x_A)$ 는 $x_A$로 변환 된 후에도 $x_A$의 언어적 정보를 유지하려고 시도한다고 설명하고 있다.

 

$\alpha \beta$에 대해서는, 변환 후 언어 정보의 정확한 변환 및 보존을 하기 위한 매개변수라고 설명하고 있다. 하지만, 아쉬운 점으로는 가장 중요한 hyperparameter에 대해서 정확한 값에 대해 공개를 하지 않았다.ㅜㅜ 예측하건데 굉장히 작은 값으로 multiple 한 것이 아닐까 싶다. 논문에서는 "Careful choice of $\alpha, \beta$ ensures both" 라고만 공개하고 있다.

 

두번째로는 Style Embedding Model $D_S$ 이다.

저자는 음성 레이블이 있는 Style Discriminator를 추가하였다. 

$L_{D_STYLE-A} = d(D_S(x_A), label_A) + d(D_S(x_{AB}, label_B) + d(D_S(x_{ABA}, label_A)$

$L_{D_STYLE-B} = d(D_S(x_B), label_B) + d(D_S(x_{BA}, label_A) + d(D_S(x_{BAB}, label_B)$

$L_{D_STYLE} = L_{D_{STYLE-A}} + L_{D_{STYLE-B}}$ 

 

위의 Loss들을 정리하여 DiscoGAN과의 차별점은,

DiscoGAN Final Loss

Generator: $L_{G_B} + L_{CONST_A} + L_{G_A} + L_{CONST_B}$

Discriminator: $L_{D_A} + L_{D_B}$

 

VoiceGAN Final Loss

Generator: $L_{G_B} + L_{CONST_A} + L_{G_A} + L_{CONST_B}$

Discriminator: $L_{D_A} + L_{D_B} + L_{D_{STYLE}}$

 

즉 언어적 정보를 잃지 않기 위해 Discriminator 부분만 추가되었다.

 

5. Experiment

저자는 TIDIGITS dataset을 사용하였다.  TIDIGITS dataset은 326의 speaker들이 있으며(111 men, 114 women, 50 boys, 51 girls) 각 각의 speaker들은 77개의 문장을 녹음하였다. Sampling rate는 16kHz이고, 논문에서 주장하는 Style transfer는 Gender 로 설정하였다.

사용된 문장은 숫자를 읽는 문장이다. 아랫쪽에 나오겠지만, 5 4 3 2 1 과 같은 음성을 사용하였다. 다르게 말하면, 연속적 대화보다는 쉬운 task로 볼 수 있고, 고립 단어 변환으로 볼 수도 있을 것 같다.

위의 그림은 음성 변환 그림이다. 맨 왼쪽 위가 남자 $x_A$이고, 위쪽 가운데가 변환한 여자 $x_{AB}$, 위쪽 오른쪽이 다시 원래 남자로 변환한 $x_{ABA}$이다.

 

몇 가지 음성에 대한 결과를 랜덤으로 뽑아서 저자가 github에 공개를 해놓았다. 여기서 들어볼 수 있다.

 

6. Conclusion

개인적인 생각으로는, 기존에 음성 변환 및 생성에 있어서 GAN이 잘 작동하지 않았던 연구사례들이 많다. 이 부분을 저자는 언어학적 정보를 잃지 않기 위해 Style Embedding Discriminator를 추가하였다. 간단한 아이디어지만 이 부분은 Novel하다 볼 수 있으며, 더 발전시킬 수 있을 것 같다.

아쉬운 점으로는

1. 코드 공개가 없다는 점

2. Hyperparameter 언급이 없다는 점

3. 결과가 paired lingustic만 나온다는 점

으로 꼽아볼 수 있다.

 

- 주관적인 생각이 들어있으므로 관련 논문에 대해 잘못된 부분이나 comment는 언제나 환영합니다.

728x90

+ Recent posts