728x90

이번에 리뷰를 진행할 논문은 Parrtron 이라는 논문인데, Google에서 작성한 논문이다. 이전에 리뷰한 논문에서의 저자가 1저자로 작성한 논문이다.  https://arxiv.org/abs/1904.04169 여기에서 확인할 수 있다.

 

 

Abstract & Intro

이 논문은 Translatotron처럼 중간 이산 표현(text)를 통하지 않고, 입력 spectrum을 다른 spectrum으로 직접 매핑하는 end-to-end 음성 변환 모델이다. 인코더, 스펙트로그램 및 음소 디코더로 구성 되며, 보코더가 음성으로 변환하는 역할을 맡는다. 악센트, 프로소디 및 배경 소음에 관계없이 모든 입력 스피커의 음성을 고정 된 억양과 일관된 조음 및 단일 표준 대상 스피커의 음성으로 정규화하도록 학습하였고, 또한 청각 스피커(목소리에 장애가 있는)로부터의 음성을 표준화하도록 조정하였으며, 이는 성공하고, 이를 통한 비정형 목소리를 음성 인식기를 통한 WER measurement및 무작위 대상으로부터의 Mean Opinion Score (MOS) 측정을 통해 제안한 모델이 명료도 및 자연스러움이 얼만큼 개선되었는지 보여주고 있다. 마지막으로 화자 8명에 대하여, 1명과 나머지 7명 중 1개를 합성하고, 잡음(배경음)을 합성한 뒤 분리하는 것을 보여준다. 

 

Model Architecture

 

먼저 이 모델의 목적은, "소스 음성을 입력으로 넣고, 대상 음성을 출력으로 생성/합성하는 end-to-end Seq2Seq model architecture"를 사용하여 타겟 신호를 직접 생성하며 처음부터 합성하는 end-to-end architecture이다. 즉, 화자 특성을 포함하여 모든 비언어적 정보를 투사하고 누가, 어디서, 어떻게 말하는지가 아니라 말하는 내용만 유지 하는 것이다. 이렇기 위해서는 텍스트로부터 indenpendent한, N:1 음성 변환 작업에 해당한다. 다르게 말하면 화자는 여러명이고 target 음성의 화자는 1명이라는 것이다. 사용되는 데이터는 쌍을 이루는 입력/출력 음성 발화의 병렬 모음이 필요하다.

 

Google에서는 Parallel WaveNet 기반 TTS 시스템을 이용하여 손으로 작성한 script로 부터 TTS를 합성하여 target set을 만들었다. TTS를 사용함으로서 다음을 보장 할 수 있다고 밝히는데, 1) 대상은 항상 일관된 스피커 및 악센트로 말하고, 2) 배경 소음이나 불쾌감이 없으며, 3)마지막으로, 필요한 만큼의 데이터셋을 합성할 수 있다.

 

Google은 2천 2백만 건의 영어 음성으로 구성된 30,000시간의 교육 세트에서 모델을 훈련시켰다고 한다. 이 모음을 사용하여 TTS 시스템을 통한 여성 음성으로 대상 발화를 생성했다고 한다. (엄청난 데이터 양...)

 

이제부터 모델 아키텍처에 대해 설명한다.

Parrtron model architecture

전체 모델 아키텍처는 이렇다. Encoder, Spectrogram decoder, ASR decoder가 사용되고 있다. 

 

 

 

1) Encoder

Parrotron encoder part

빨간색 표시한 부분이 Encoder이다. Encoder에서 소개드릴 내용이 많다. 우선 이 모델에서 사용되는 핵심 아키텍처는 최근의 Attention 기반 end-to-end ASR 모델(1: Listen, Attend and Spell, 2: Spectral and Prosodic Transformations of Hearing-impaired Mandarin Speech)과 Tacotron(1: Tacotron2-Natural TTS synthesis by conditioning WaveNet on mel spectrogram predictions, 2: Tacotron-Towards end-to-end speech synthesis) 과 같은 TTS 모델을 기반으로 한다.

 

Parrotron의 기본 encoder 구성은 "Sequence-to-sequence models can directly translate foreign speech" 와 유사하며, 일부 변형이 되어있다. 위에 언급한 reference 논문에 대해 간단히 모델 부분만 체크하겠다. (https://arxiv.org/abs/1703.08581)

 

Sequence-to-sequence models can directly translate foreign speech

우선 이 논문은 음성 인식하는 논문이다.

1-1> Encoder

- 이 논문의 인코더 입력은 80channel log mel spectrogram이다.

- 25ms로 frame length를 두었고, 10ms hop을 사용하여 40%만큼 겹쳤다. 90 symbol로 출력하는데, phoneme기반의 음성인식이다.

- Encoder는 8개의 layer로 이루어져있으며, Time X 80 X 3 tensor형태이다. 

- 그 후, 2개의 CNN + ReLU 활성화를 통과한다. 여기에서 각 CNN은 32kernels로 이루어진 3 X 3 X에서 time X frequency이다. 이 CNN의 stride 는 2 X 2를 사용하였고, 결국 total factor는 4로 downsampling된다.

- 이후 Batch Normalization을 적용한다. CNN~Batch까지 다른 관점에서 바라보면 vgg랑 비슷하다고 볼 수 있지 않을까?

- 그 후, single bidrectional convolution LSTM (CLSTM)을 통과하는데, 이 때 filter 가 1 X 3 으로 통과한다.

- 마지막으로, 각 방향당 256크기의 LSTM을 갖는 BiLSTM을 통과하는데, 이 후 512차원의 Dense를 통과한다. Dense를 통해 Linear Projection을 하고 (512), Batch normalization과 ReLU가 함께 쓰인다.

- 즉 최종 Encoder의 ouptut은 512-dimensonal의 인코더 representation으로 나온다.

 

1-2> Decoder

- 64-dimensional의 word embedding된 y_{k-1}가 입력인데, 즉 text가 입력이다. 음성~ -> 인식 이므로 음성이 text로 바뀜. 심볼은 이전 time-step을 이용하며, 512-dimensional의 attention context vector를 사용한다.

- 128개의 Single hidden layer (attention)으로 이루어져있다.

- 이것들이 256-dimensional의 4개의 Unidirectional LSTM으로 통과한다.

- 마지막의 attention context와 LSTM output은 concatenation되어 출력 단어(vocabulary)를 예측하는 softmax로 통과한다.

 

1-3> Etc

- 9.8 parameter들을 가지고 있다. 생각보다 크지 않다.

- 전형적인 Seq2Seq으로, Teacher forcing을 사용하여 batch 당 64개의 utterances들을 구성하여 사용하였다.

- Adam optimizer를 사용하여 10개의 copy에서 비동기적 확률론적 경사하강(Stochastic gradient descent)를 사용하였다.

- 초기 lr은 1e-3이고, 백만 step 지나고 factor of 10을 decay한다.

- Beam search를 사용하였으며, Beam width는 3이며, 어떤 Language Model도 사용하지 않았다.

여기까지가 "Sequence-to-sequence models can directly translate foreign speech"의 Model Architecture와 Experimental Setup 부분을 정리한 내용이다.

 

다시 Parrotron으로 돌아가서,

 

16 kHz의 샘플링 된 waveform으로부터, 125-7600 Hz의 범위에서 80-channel log mel-spectrogram을 추출하였으며, 이 때, Hanning 윈도우를 사용하였고, 50ms 프레임 길이, 12.5ms 프레임을 겹쳤고, 1024-STFT 계수를 사용하여 추출하였다. (기존 위에 ref 삼은 논문보다 겹치는것을 줄였다.)

 

- 입력: 80channel log mel-spectrogram

- 2-layers CNN with 32 kernels (ReLU + BatchNormalization)

- Convolutional Bidirectional LSTM with 1x3 filter ==> 이를 통해 time step 마다 주파수 축을 통해서 뭉친다.

- 256-dimensional 3-layers LSTM

- 512 Dense + ReLU + Batchnormalization

- Get representation of Encoder input

 

위의 6줄이 Encoder의 구성이다.

 

 

2) Decoder (Spectrogram decoder)

Parrotron decoder part

최대한 쉽게 설명하기 위해 구분하여 진행해보자면,

- 디코더 타겟은 1025-dim STFT이며, 왜 이러냐면... NFFT를 1024으로 사용하고 hop을 25%사용했기 때문에 1025차원의 Spectrum을 얻는다. 마지막 1은 허수부분이다.

- Autoregressive RNN을 사용하여 decoder를 구성하였으며, 1번의 decoder step당 1 frame씩 인코딩 된 입력 sequence에서 출력 spectrogram으로 predict를 진행한다.

- previous(이전의) decoder time step으로부터의 예측은 256 ReLU가 연결된 2개의 layer를 포함하는 Pre-Net을 통과하는 것이 attention이 잘 먹힌다고 밝혔다. ***여기에서 Pre-Net은 이전에 review한 논문에 자세하게 나와 있음***

- Pre-Net 출력과 attention context vector가 연결되어 1024 unit의 2-layers Unidirectional LSTM을 통과함

- LSTM 출력과 attention context vector을 concatenation하여 Linear transformation을 통해 target spectrogram을 예측한다.

- 마지막으로, ***마찬가지로 이전 논문에서의 Post-Net이 나옴*** 5-layers CNN Post-Net을 통과한다. 각각의 Post-Net은 5 x 1 형태의 512 filter를 갖고, BatchNormalization도 있으며, tanh activation 을 통해 출력 된다.

- 예측된 spectrogram에서 오디오 신호를 합성하기 위해 Griffin-Lim 알고리즘을 사용하여 예측된 magnitude와 일치하는 phase를 추정한 뒤 Inverse Short-Time Fourier Transform을 통해 waveform으로 변환한다.

- Griffin-Lim은 음질이 그닥 좋지 않으므로, Griffin-Lim보다 시간이 오래걸리지만 음성의 품질이 더 좋은 WaveRNN을 사용하여 사람들에게 평가하였다.

 

3) ASR 디코더를 이용한 Multitask Learning

Parrotron ASR decoder part

앞서 Translatotron에서의 구조와 비슷하다. 이 ASR decoder의 목적은 기본 언어의 높은 수준의 표현을 동시에 배우기 위해 인코더 네트워크에 multitask learning 기법을 사용하여 공동으로 train을 하면, encoder 의 음성의 feature를 더 잘 배운다고 한다. 쉽게 말해서, Signal-to-Signal로의 변환이 어렵기 때문에 중간에 ASR 디코더를 달아서 음성 부분을 학습시키는 것이다. 인코더 latent 표현에 따라 출력 음성의 (grapheme:자소 or phoneme:음소) transcript를 예측하는 역할을 맡는다. 이러한 multitask learning으로 train된 인코더는 기초적인 transcript에 대한 정보를 유지하는 입력의 latent 표현을 학습하는 것으로 생각할 수 있다.

 

ASR decoder의 input은 이전 step의 grapheme에 대한 64-dimensional 임베딩과(ASR decoder part) 512-dimensional의 attention context를 concatenate하여 생성된다.  그 후 256 unit LSTM layer로 전달 되고, 마지막으로 attention context와 LSTM의 output은 concatenated되어 softmax로 전달되고, 그 후 phoneme으로 출력 될 확률을 예측한다.

 

 

Application

 

1) 음성 정규화

이 실험은 임의의 speaker로 부터 사전 정의 된 target의 음성으로 변환된 음성을 정규화하는 목적이다. 임의의 speaker는, 크게 말해서 화자 별 특성에 따라 같은 script를 말해도 신호의 크기 및 세기, 잡음, 명료도가 다를 수 있다. Google은 input speaker가 누구든지 mapping된 target data로의 변환에 정규화하는 것을 목적으로 실험을 진행했다. 

 

제안한 model의 output을 원래 입력 신호의 lingustic information을 보존하는지 평가하기 위해 음성 명료도를 측정하고(MOS), ASR 엔진을 사용하여 단어 오류율인 Word Error Rate (WER)를 평가했다. ASR 엔진은 WaveRNN으로 진행한 결과에 대해서만 평가했다. 

 

보유한 음성의 ASR WER은 8.3%이라고 한다. 표에는 기입이 안되어 있다. 고품질 TTS 모델을 사용하여 ASR 엔진으로 평가하면 WER이 7.4%이라고 논문에 밝혀져있다.

 

위의 Table 1에서 맨 윗줄은 보조 ASR decoder가 없는 결과이다. 27.1%의 비교적 낮은 WER을 갖고 있다. 두번 째 줄인 Grapheme 단위로 예측하는 ASR decoder를 추가할 경우 19.9%로 약 7.3%가량 크게 개선되었다. Phoneme 단위로 ASR decoder를 달아도 맨 윗줄과는 확연한 차이가 보이는데, CLSTM 대신 decay(parameter 미세 조정)를 사용하며 LSTM을 2개 추가할 경우 가장 좋은 성능인 WER 17.6%을 달성하였다.

 

논문에서, CLSTM을 제거하여 매개 변수 수를 줄이면 성능이 크게 저하되며, 그러나 CLSTM 대신 2개의 additonal BLSTM을 사용하면 약간 향상 되는 동시에 모델이 단순화 된다고 한다. 이것이 마지막 줄의 결과이다. 

 

위의 Table 2는 강력한 악센트와 배경 소음이 포함 된 보다 까다로운 테스트 셋에 대한 MOS 평가 와 ASR 성능의 평가 결과이다. 이 표에서 WER이 높은것이 중요한 것이 아니라, Real speech와 Parrotron의 결과에 대한 WER의 큰 차이가 없음으로 인해 언어적 내용을 보존하고 있음을 확인한다. 라고 주장하고있다.

 

정규화 실험 중 마지막으로, 모델이 동일한 TTS 음성으로 정규화 된 음성을 지속적으로 생성하는지에 대한 증명을 Table3을 통해 하였다. 8명의 영어 native들에게 발화된 model output 음성을 주고 평가하였는데, 질문 내용은 

- 5점 척도에서 Parrotron 음성이 TTS 음성과 얼마나 유사한가? ==> 4.6점

- 출력 음성에서 배경 소음이 있는가? ==> 0%

- 출력 음성에서 불일치가 포함되어 있는가? (Transcript와 다른지에 대한 평가인듯) ==> 0%

- 출력 언어는 일관된 조음, 표준 억양 및 prosody를 사용하는가? ==> 83.3%

 

위와 같고, 위와 같은 결과를 얻었다. 

 

2) 청각 장애 연설의 정규화

위의 정규화 모델을 사용하여 standard 음성이 아닌, 청각 장애인을 유창한 음성으로 변환 할 수 있는지에 대한 실험이다. 이를 통해 사람들의 음성을 통한 의사 소통을 향상시키는 것으로 사용 될 수 있다고 주장한다.

 

실험은 러시아에서 태어난 10대에 청각장애를 소유한채로 영어를 배운 사람을 대상으로 진행된다. 

요약하면, 표준어로부터 학습된 Parrotron 은 위의 청각 장애 언어르 완전히 정규화 하지 못하지만, 이를 해결 하기 위해 Google은 모든 매개 변수를 조정하고 모든 파라미터를 청각 장애 음성으로 적응(인코더만 미세 조정, 디코더와 음소 디코더 파라미터 모두 hold)시켰다. 그리하여 아래 표와 같은 결과를 얻었다.

 

첫째 줄의 Real speech는 청각 장애의 언어이며, MOS가 매우 낮고, 위에서 사용된 ASR 엔진의 WER은 89.2이다. 즉 워드 단위로 100개가 입력 될경우 10.8개 밖에 못맞춘 것이다.

두번째 줄의 Parrotron (male)은 위의 정규화 시스템을 그대로 사용했을 경우, MOS는 조금 나아지지만 마찬가지로 음성 인식 결과는 더 나빠졌다.

2)에서 제안한 fine tuning 기법(적응)으로 뽑은 결과는 MOS에서 1점 가량의 상승을 보였으며, WER도 일반인과 같은 성능을 내고 있다. 놀라운 결과라고 볼 수 있다.

 

위의 실험을 통해, 모든 fine tuning 전략이 음성을 이해하기 쉽고 훨씬 더 자연스러운 speech로 이어진다는 것을 밝혀냈다. 최고의 fine tuning은 모든 매개 변수를 조정하는 것이라고 논문에서 언급하고있다.

 

3) 음성 분리

이 실험은 Parrotron이 다양한 음성 응용에 사용될 수 있음을 설명하기 위해 만든 섹션이라고 한다. 중첩 된 혼합 음성 중 magnitude가 가장 큰 스피커의 신호를 재구성하는 음성 분리 작업이다. 최대 8개의 서로 다른 스피커의 즉각적인 혼합과 잡음(배경)을 넣어서 평가한다.

 

이 섹션은 SOTA separation 모델을 말하는 것이 아니다. 일반화 된 개방형 speaker set으로부터 speech를 생성할 수 있는지 평가하기 위해 분리를 진행한다고 한다. 솔직히 잘 이해가 안된다.

 

Google은 음성 신호의 즉각적인 혼합을 인위적으로 진행하기 위해, train set의 각 target 음성에 대해 1~7개의 발화를 무작위로 선택하여 배경 소음으로 혼합하였다. 백그라운드 발화 수도 임의로 선택된다. 혼합하기 전, 모든 발화를 비슷한 세기로 정규화한다.

 

배경에 대해 무작위로 샘플링 된 가중치 w(0.1~0.5)와 목표 발화에 대한 1-w로 두 신호를 평균화하여 target 발화와 배경 잡음을 혼합하였다. 이로 인해 인위적으로 구성된 모든 발화에서 12.15dB의 평균 SNR이 발생하고, 이에 대한 표준 편차는 4.7이라고 한다.

 

Parrotron이 분리 작업을 할 수 있는지 평가하기 위해 위의 정규화 파트 부분의 학습된 것을 가져와서 혼합 발화를 입력으로 넣고 모델을 훈련 시켜 해당하는 원래의 발화를 생성하는 식으로 진행하였다고 한다. 이를 ASR 엔진을 사용하여 분리 모델의 영향을 평가하였는데, 1) 배경 잡음을 넣기 전의 원래 깨끗한 발화, 2) 시끄러운 잡음인 배경 음과 음성을 혼합 한 후, 3) Parrotron을 실행하여 생성된 출력

형식으로 평가하였다고 한다.

 

위의 표를 보면, 잡음이 많은 세트인 "Noisy"에서의 WER은 33.2%이다. 이를 Parrotron을 사용하여(분리) denoising하면 17.3%의 WER를 얻었다고 한다. (음 근데 사실 이부분은 real time demonstration을 좀 보고 싶다.) 이를 통해 모델이 target speaker의 음성을 보존하고 다른 스피커로부터 분리 할 수 있음을 보여준다고 한다. 

 

 

Conclusion

위 논문에선 이전 논문처럼 End-to-End 로 음성 변환을 진행하였는데, 필수적으로 script가 필요하지 않았다. 하지만 signal-to-signal 간의 음성 변환을 위하여 multitask learning 관점에서 음성 인식 디코더를 auxiliary part로 사용하였고, 이는 성능 개선에 도움이 되었다고 밝혔다. 위 논문의 목적은 "언어적 콘텐츠를 보존하고, 다른 스피커의 음성을 단일 대상 스피커의 음성으로 표준화하는 것" 이다. 청각 장애인의 음성이 model을 거쳐 단일 대상 스피커 (TTS)로 나올 경우, 제안 된 모델의 방법이 WER 개선에 영향을 미쳤다고 밝혔다. 또한 악센트가 많은 음성을 정규화를 통하여 표준 음성으로 변환하여 명료성을 향상시켰다. 추후 input 화자의 특성을 보존하며 정규화 및 개선하는 것을 목표로 두고 있다.

 

가장 큰 novelty는 N:1의 음성 변환을 정규화로 시키면서 좋은 성능을 내고 있다는 점, ASR 엔진을 이용한 명확한 평가를 하였다는 점, 그리고 청각 장애인 데이터셋으로부터 fine tuning을 통해 성능 개선을 했다는 점이라고 뽑고 싶다.

 

추가적으로, Google의 ASR엔진을 쉽게 사용할 수 있도록 API나 weight를 공유해주면 연구용으로 비교 및 사용하기 편할텐데... 아쉽다.

 

 

728x90
728x90

이번에 진행할 논문은 Translatotron: Direct speech-to-speech translation with a sequence-to-sequence model 이다. Google Research에서 published 하였으며, https://arxiv.org/abs/1904.06037 에서 확인해볼 수 있다.

(그림을 업로드하다가 중간에 렉이먹어서 도중에 쓴 것들이 다 날아갔다... 다시 씁니다ㅜ.ㅜ)

 

Intro, Related Work

한국인과 미국인이 서로 대화를 나누려 한다. 하지만 이 둘은 서로간의 언어 정보에 대해 하나도 모른다고 가정하겠다. 즉 한국인은 영어를 하나도 할 줄 모르고, 미국인도 마찬가지라고 가정한다.

 

한국인이 미국인에게 대화를 걸려면 1) 말을 하고, 2)이를 음성 인식하여, 3)인식 된 text를 번역하고, 4)얻은 text를 음성으로 합성해야 대화가 가능하다. 너무나 복잡하다. 사실 우리는 이 방법을 사용하여 외국인들과 대화를 하고 있지 않은가? 그만큼 우리는 대단한 존재일 수 있다.

 

어찌됐든, 위의 복잡한 단계를 해결할 중요한 이유가 하나 더 있다. 바로 중간에서 잘못 된 오류를 범할 경우, 마지막으로 음성 합성 된 결과값이 미국인에게 잘못 전달 될 수 있다. 예를 들어,

 

한국인: 제가 저기에 가려면 어떻게 해야하나요?

1) 음성 인식: 제가 저기에 가려면 어떻게 해야하나요?

2) 번역: How can I get there?

3) 음성 합성: ~~

4) 미국인에게 전달

 

이렇게 잘 전달되면 문제가 없다. 하지만 가령,

 

2) 번역: Can I go there?

 

라고 번역이 잘못 되었을 경우, 미국인은 yes라 할 것이고, 한국인은 pardon?을 외칠 것이다.

 

이러한 복잡한 문제를 해결한 연구 결과가 있다. 바로 지금 review할 논문인데, translatotron이다. 내가 생각한 이 논문의 novelty는 서로 다른 언어간의 음성 번역을 한 번에 진행 한 시발점(starting research) 이라고 생각한다.

 

딥러닝은 많은 발전이 이루어 졌고, 음성 인식, 번역, 음성 합성에서 굉장한 성능을 내고 있다. 하지만 위의 사례처럼 이용하려면 음성 인식 -> 번역 -> 합성이 이루어져야 한다. 하지만 이 논문은 이것을 한 번에 다 해내고 있다. 심지어 목소리까지 바꿀 수 있다.

 

이 논문의 실험은 스페인어-영어 데이터셋으로 진행하였다.

 

자 그럼 이 논문에 대해 알아 가 봅시다.

 

 

Method

모델 구조는 별도로 훈련 된 여러 구성 요소로 구성된다. 즉 이 모델은 end-to-end가 아니고, pretrain된 것들도 사용한다.

전체 모델 아키텍처는 아래 그림과 같다.

 

- Primary task: target spectrogram을 생성하는 attention based Seq2Seq

- Speaker Encoder: 이 부분은 선택적으로 쓰이는 부분인데, 대상의 목소리를 원할 경우 바꿔서 번역할 수 있음

- Vocoder: target spectrogram을 시간도메인인 waveform형태로(음성) 바꾸는 부분

- Auxiliary tasks: source와 target의 phoneme sequence 예측 하는 부분

 

차례차례 보도록 해봅시다.

 

- Primary task, Encoder

먼저 Translatotron의 Encoder부분은 아래 빨간 표시한 곳이다.

Translatotron Encoder Part(빨간 표시)

Encoder의 input은 80channel log-mel-spectrogram이 사용된다. 여기에서 80channel은 mel을 80 dimension으로 뽑았단 얘기이다. librosa의 n_mels와 같다. 그렇게 뽑은 mel-spectrogram에 log값을 취해준 것이다.

그 다음 8-layer Stacked Bidrectional LSTM을 사용한 것으로 나와있다. BLSTM을 8개 쌓은것이다. 이 최종 output은 speaker encoder를 사용했을 경우 i-vector와 concat하여 decoder ouptut과 transformer 에서 사용되는 multi-head attention을 통해 encoder-decoder간 scaled-dot product attention이 이루어진다. speaker encoder가 사용되지 않았을 경우엔 저 concat 부분은 사용되지 않는다. 중간에 Auxiliary recogniton tasks로 가는 화살표가 있는데 이것은 마지막에 설명할 예정

 

- Primary task, Decoder

Translatotron Decoder Part(빨간 표시)

Spectrogram Decoder는 Text-to-Speech에서 좋은 평가를 받고 있는, 마찬가지로 구글에서 published 한 Tacotron2 구조와 유사하다. Pre-net, Autoregressive LSTM, Post-net 을 포함하고 있다. 여기에서,

 

Pre-net: 2-layer FC

Autoregressive LSTM: Bi-directiona LSTM(Tacotron2 encoder), LSTM(2-Uni-directional layers in Tacotron2 decoder)

Post-net: 5-layer CNN with residual connections 으로서, mel scaled filter bank spectrogram을 개선하는 역할

 

로 정의할 수 있다.

Tacotron2 model architecture

Tacotron2의 Encoder는 text를 character 단위의 embedding을 하고, Pre-net을 거친다. Pre-net은 정확히,

Pre-net: (Dense -> ReLu -> Dropout) X 2

 

로 이루어져 있다. 그 후, CBHG를 통과하는데,

 

CBHG: Conv1D Bank -> Max pooling -> Conv1D projection -> Conv1D layer, Conv1D layer + First input(이 부분이 residual connections) -> Highway Network(4 layers of Dense - ReLu) -> Bidirectional RNN

으로 이루어져 있다. Encoder의 최종 결과는 embedding result가 나온다. 위의 모든 process를 mel-spectrogram과 최적의 alignment를 하기 위해서라고 생각하면 좋을 것 같다. 너무 복잡하지만..

 

Tacotron2의 Decoder는 Encoder와 거의 비슷한데, RNN의 구조를 띄고 있다. 즉 각 step마다 output (1개의 spectrogram frame)을 출력한다. 그리고 autoregressive 한 형태이므로, 이전 step을 사용하여 현재 step의 frame을 예측한다. 매 step마다 encoder의 context vector와 attention을 통해 output 1개를 얻는 것이다. 최종적으로 projection 하는 decoder의 hidden layer의 output은 2개의 256으로 이루어진 FC가 를 가장 먼저 통과한다. 즉 Dense 형태로, (256, 1)의 형태를 얻는다.

 

그 후 LSTM과 이루어진 context vector는 80개의 neurons을 갖는 FC로 통과한다. 이게 바로 mel-spectrogram의 channel인 n_mel와 동일하다! 이 최종 부분이 spectrogram을 frame by frame으로 예측한다. 그 후 PreNet으로 다시 들어가고, linear scale spectrogram을 얻는다. 아마 Reduction Factor 를 3으로 사용했던 것 같은데, 그렇다면 3개의 predicted spectrogram을 사용하여 1개의 linear scale spectrogram을 얻는다.

 

attended ecoder outputs

Attention 부분에 대해 조금 더 언급하고 싶어서 수식을 캡쳐했다. context vector Ci 는 encoder의 output(h)와 attention weights(alpha)의 product로 연산되는데, alpha_ij는 아래의 식에 의해 연산된다.

 

Attention weights

자 많이 보던거 나왔죠? exp/exp합은 softmax이다. 대충 눈 도장 익히면 아~확률 구하는구나 라고 생각하면 편하다.

e_ij = vaT tanh(Wsi-1 + Vhj + Ufi,j + b) 인데,

si-1: decoder LSTM의 이전 hidden state

alpha_i-1 : 이전 attention weight

hj: j번째 encoder hidden state

W, V, U, va 그리고 b: 학습시 사용된 parameter들

fi, j: 공식에 의한 계산된 위치

fi: F * alpha_i -1

F: CNN 연산

이다.. 복잡한데, 제 설명이 부족하시다 생각하신 분께서는  Tacotron2 와 attentive-attention mechanism을 읽어보시는 것을 추천드립니다.

 

정리하면, Tacotron2는 encoder에서 text를 입력받아 Pre-net, CBHG를 통해 character embedding result를 얻고, decoder에서는 80channel의 log-mel-spectrogram 입력을 받아 encoder-decoder attention을 통해, 256 dense로 1개를 예측하고, 다시 그 값이 80 dense를 통해 80channel의 spectrogram이 통과한다. 이 때, frame by frame, autoregressive방식으로 진행되고, 위의 output은 Post-Net을 통과하여 linear scale spectrogram으로 얻는다. 이게 다 ~~끝나고 vocoder를 통해 음성이 복원된다.

 

Translatotron도 유사하다. 이 떄, 4 or 6 LSTM이 성능이 좋다고 언급되어있다.

Translatotron의 decoder에서의 예측은 1025dimension의 log spectrogram의 frame을 예측한다. 각 디코딩 단계마다 2개의 스펙트로그램 frame을 예측한다. 이렇게 사용하는 이유는 음성 신호가 연속성을 띄고 있기 때문이고, decoder의 부하를 줄여주기 때문이다. 

 

쓰고 보니 Tacotron2 리뷰를 따로 안해도 될듯 ㅎㅎ

 

- Vocoder

아래 부분의 빨간색 표시가 Vocoder 부분이다.

Griffin-Lim을 기본적으로 사용하였다. 하지만 MOS테스트에서 음성의 자연성을 평가할 때 WaveRNN을 사용하였다. Griffin-Lim은 CPU로 돌릴 수 있지만, WaveRNN은 시간이 더 오래걸리고, GPU 기반이다. 그러나 음성 복원 품질은 WaveRNN이 더 좋기때문에 이를 이용하여 테스트한 듯.

 

또한 Vocoder에서 reduction factor를 사용하여 감소 계수 2로 frame을 계수만큼 예측한다. 이 계수만큼의 log-spectrogram을 생성한다. 이렇게 복원된 음성을 직접 들을 수 있다. 

 

- Speaker Encoder

이 부분에서는, D-벡터를 뽑아서 사용한다. D-벡터는 Speaker Independent System의 특징인데, 화자별 차이의 벡터값 정도로 생각하면 될 것 같다. Speaker vefirication를 위한 pretrained 된 것을 여기에서 사용한다.

 

위 논문에서, 851k 스피커, 8개 언어에 대한 정보를 사용했다고 밝혔다. training 시에는 사용하지 않았고, inference에 합성할때에만 썼다고 한다. 256차원으로 값이 나오면, 이를 linear projection을 통해 16으로 줄이고, 마지막 encoder BLSTM layer의 output과 concat했다고 밝혔다. 오직 tanfer task에만 사용되었다.

 

- Auxiliary recognition tasks

각각 attention이 구성되어 있는 소스 및 대상 음소 시퀀스를 예측하는 파트이다. BLSTM의 마지막 값이 여기에 연결된다. single head attention이 있는 2 layer LSTM으로 구성되어 있다. 여기에서, 한 입력은 소스 음소 (스페인어) 이고 다른 입력은 대상 (영어) 이다. signal-to-signal의 변환이 모델에서 버거워 하기 때문에, multitask learning 기법을 사용하여 음성을 phoneme 단위로 인식하여, 이 정보를 decoder 단에 전해주어 음성 변환을 도운 task라고 보면 되겠다. 3개의 loss가 사용되었다. 이 task를 통해 BLEU score가 개선되었다고 밝히고 있다.

 

 

Experiments & Results

아래 그림은 사용된 Hyperparameter들이다.

결과는 실제로 들어보는 것이 좋을 것 같다. 아래 사이트에서 들을 수 있다.

 

https://google-research.github.io/lingvo-lab/translatotron/

 

Speech-to-speech translation

Audio samples from "Direct speech-to-speech translation with a sequence-to-sequence model" Paper: arXiv Authors: Ye Jia *, Ron J. Weiss *, Fadi Biadsy, Wolfgang Macherey, Melvin Johnson, Zhifeng Chen, Yonghui Wu. Abstract: We present an attention-based seq

google-research.github.io

 

 

 

Conclusion

저자가 정리한 부분은 아래와 같다.

- 한 언어에서 다른 언어로 된 음성으로 직접 번역하는 최초의 모델

- 향후 연구점의 출발점으로 고려

- training하는 동안 speech transcripts를 사용하는것이 중요하다고 함

 

아마도 signal-to-signal간의 학습이 잘 안되었기 때문이지 않았을까 싶다.

 

내 느낌점은, 처음 이 논문이 나오고, demonstration을 들어보고나서 정말 놀라웠었다. 작년 5월에 처음 봤는데 나는 무슨 연구를 하고 있는 건가 싶었다. 새로운 길을 개척한 논문이라고 평가하고 싶다. 벌써 8개월 정도가 지났는데 어떤 성능을 갖는 end-to-end 가 나올지 기대된다.

 

728x90
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