Posts SV2TTS - Speaker verification을 Multi-Speaker에 활용한 TTS 모델 (Voice Cloning)
Post
Cancel

SV2TTS - Speaker verification을 Multi-Speaker에 활용한 TTS 모델 (Voice Cloning)

Abstract

  • SV2TTS로도 불리는 본 논문은 Speaker verification을 Multi-Speaker에 활용한 TTS 모델이다. 또한 학습되지 않은 화자의 음성을 몇 초만의 오디오로 비슷하게 표현해낼 수 있는 voice cloning도 제안하고 있다.
  • 이 모델은 기존의 2개 학습 과정을 수행하는 것과 다르게, 3개 독립적인 학습으로 구성되어 있다.
    1. 약 15분 분량의 음성 데이터를 가진 18000명의 화자는 transcript 없이 학습하여 화자 검증 작업(d-vector)을 수행한다. 학습된 Speaker Encoder는 몇 초만의 음성 데이터로 fixed-dimension 임베딩 벡터를 생성하게 된다.
    2. Speaker Embedding 레이어를 추가한 Multi-Speaker Text-to-spectrogram을 수행하는 Acoustic 모델로 Tacotron2를 활용한다.
    3. Spectrogram-to-Waveform으로 변환하는 Autoregressive Vocoder 모델로 Wavenet을 활용한다.
  • TTS 모델의 일반화 성능을 최대한 높이기 위해 많고 다양한 화자 데이터셋으로 Speaker Encoder를 학습한다. 그리고 학습한 데이터를 무작위로 샘플링하여 Speaker Embedding 레이어를 통과해 새로운 화자(speaker)와 비슷한 음성으로 복제해 합성해낼 수 있다.

요약: 10초 수준의 새로운 목소리와 비슷하게 생성해내고자, 최대한 여러 사람들의 발화의 구조를 조합하여 비슷하게 생성해낸다.

Introduction

  • 본 모델은 학습하지 않은 화자의 초 단위 데이터만으로도 자연스러운 음성을 생성하는 TTS 시스템이다. (초 단위 오디오로 학습 없이 생성 가능한 zero-shot)

  • 자연스러운 음성을 위해 수십분의 데이터로 n천 명이 넘는 데이터가 존재해야 하는 단점이 존재하는데, 이 문제를 해결하기 위해 화자의 특징 공간을 찾아내는 Speaker Verification Embedding을 미리 학습하고, 이를 활용하여 더 적은 분량의 데이터에서 고품질 TTS 학습을 통해 화자 모델링을 수행한다.
  • 논문에서는 1200명의 음성 데이터로 Acoustic Model과 Vocoder를 학습하고, 18000명의 데이터로 Speaker Encoder를 학습했다. 이정도 데이터만으로 새로운 화자와 비슷한 목소리를 생성해낼 수 있었다. 이게 가능한 이유는 Speaker Encoder가 화자를 판별하는 역할로, 화자의 특징 공간을 잘 잡아내어 합성 시 적용하기 때문이다.
  • 기존의 Tacotron은 single speaker만 가능하며, Deep Voice3는 multi-speaker를 활용해도, unseen data를 합성하지 못한다. 이런 점에서 논문에서 제시하는 모델은 fixed size memory buffer를 사용하는 VoiceLoop 모델에 가깝다고 볼 수 있다.
  • 그리고 Speaker Encoder는 ‘Neural voice cloning with a few samples’의 구조와 거의 유사하지만, Acoustic Model과 Speaker Encoder를 독립적으로 둔다. 또한 Speaker Encoder는 화자 정보만 있으면 학습이 가능하다는 점에서 다르다.
  • 물론 zero-shot transfer를 위해 d-vector에서 사용한 것보다 수천 명 더 많은 스피커에 대한 학습이 필요하다.


Multi-Speaker Speech Synthesis

Speaker Verification을 위해 GE2E loss를 사용하는 D-vector를 활용했다.

Speaker Encoder

  • Speaker Encoder는 합성 모델에 타겟 화자로 발화가 가능하도록 만드는 것이다. Speaker Encoder의 일반화 목표는 타겟 화자의 짧은 목소리만으로도 식별할 수 있어야 한다.

  • Encoder는 랜덤하게 선택한 발화에서 log-mel spectrogram frame을 뽑아 d-vector(fixed-dimensional 임베딩 벡터)로 매핑한다.

  • 학습 과정은 end-to-end speaker verification을 최적화하도록 학습하여 같은 speaker로부터의 임베딩끼리는 더 높은 cosine similarity를 갖게 하고, 다른 speaker끼리는 멀게 하는 방식으로 학습한다.

  • Input 40-channel의 log-mel spectrogram은 768 cell로 구성된 LSTM(256 dimension projection) 3개를 지난다. 그리고 최종 임베딩은 마지막 레이어에서 나온 output에 L2 normalize를 적용하여 생성된다.

Inference and zero-shot speaker adaptation

  • Inference 과정에선 텍스트와 일치할 필요 없이 음성 오디오를 사용해 조절한다. 즉 Inference의 화자 특징은 waveform으로부터 추론되는데, 외부 화자에서 나온 오디오로 조절할 수 있다.

  • Inference 과정은 아래 그림과 같이 10초 이하의 참고 문장을 통해 spectrogram을 재구성하여 화자 특성에 맞게 배치한다. 왼쪽 맨 아래 남성 발화의 spectrogram을 보면 길게 늘어진 부분이 있는데, 오른쪽 생성된 spectrogram을 보면 제대로 반영된 것을 확인할 수 있다.


Experiment

Dataset

  • Tacotron2와 Wavenet을 학습하기 위해 VCTK 데이터셋, 109명 화자 44시간 데이터와 LibriSpeech 데이터셋 1172명 화자 436시간 데이터를 사용했다.

  • 데이터에 spectrogram 속 잡음을 제거하거나, 배경음을 줄이는 방식으로 전처리를 수행했다.

  • VCTK 데이터셋은 노이즈가 적어 데이터를 그대로 vocoder에 학습했으나, 노이즈가 많은 librispeech는 Tacotron으로 생성한 spectrogram이 성능이 좋은 것으로 확인되어 따로 waveform에 denoising을 수행하지 않는다.

  • Speaker Encoder는 1.8만명의 데이터로 평균 3.9초 분량의 3600만개 문장으로 학습했다. 이 데이터는 Tacotron2와 Wavenet에는 사용되지 않는다.

  • MOS로 평가를 수행하는데, 1~5로 선택하는데 0.5 단위로 등급을 매긴다. MOS 평가를 위해 Speech naturalness 와 Speaker similarity 두 가지 관점에 따라 평가한다.

Speech Naturalness

  • 학습에 사용되지 않은 100개 문장을 생성하고, 2개의 세트로 나누어 평가를 수행했다. VCTK 데이터셋은 11명의 unseen / seen 화자로, LibriSpeech는 10개의 unseen / seen 화자로 평가했다.

  • VCTK는 기본적으로 MOS 4.0을 넘었으며 LibriSpeech보다 약 0.2 높은 결과를 볼 수 있다. 이는 LibriSpeech가 transcript의 punctuation(구두점)이 부족해 자연스럽게 끊도록 학습이 안되는 점과 노이즈가 VCTK보다 많기 때문으로 판단한다.

  • 들어보면 화자의 prosody가 reference의 prosody를 모방하는 경우가 있음을 확인하였고 이 덕분에 더 많은 운율을 가진 LibriSpeech에서 효과가 크다. 이런 경우는 화자 정체성을 분리하기 위해 추가적인 주의를 기울여야 함을 의미한다.

  • 이는 합성 네트워크 내에서 운율 인코더를 통합하거나 [16, 24]에서와 같이 운율 인코더를 통합하거나 동일한 화자의 무작위로 쌍을 이루는 참조 및 대상 발화에 대한 교육을 통해 화자 ID를 운율과 분리하기 위해 추가 주의를 기울여야 함을 시사합니다.)

Speaker Similarity

  • 동일한 화자로 만든 합성된 문장과 랜덤으로 선택된 Ground truth의 유사도를 비교한다. 평가자가 문법이나 상황 등을 고려하지 않고 오직 유사도에 집중해 평가하도록 지시했다.

  • SV2TTS를 사용해 seen speaker set으로 합성한 결과를 비교했을 때 4.2로 높은 MOS를 보였지만, unseen speaker set으로 비교했을 때 3.28로 상대적으로 낮은 수치를 보였다. 3.28은 ‘적당히 유사’에 가까운 수치로, 정확한 성별과 pitch, formant 범위 특징을 잘 반영한다고 볼 수 있으나, prosody 관련 정보가 많이 손실되어 더 좋은 결과나 나오지 않았다고 판단한다.

  • VCTK의 경우 Speaker Encoder를 학습할 때 북미 발음으로만 학습하고, accent를 판단하는 법을 지정하지 않아 유사도 점수가 낮아진 것이라 판단한다. 억양이 다르면, 다른 화자의 것이라 판단하여 더 낮아지게 된다. (accent가 달라도 톤이나 목소리 특징이 유사하다고 하는 평가자도 존재)

  • 일반화 능력을 평가하기 위해 각각 두 데이터셋으로 합성한 모델을 교차하여 다른 데이터셋에 테스트해 보았다. 두 데이터셋 모두 자연스러움은 4점 이상으로 높은 성능을 보였으나, LibriSpeech 모델이 훨씬 높은 유사도를 보인다. 즉, 100개 화자를 갖는 LibriSpeech 만으로는 고품질 speaker transfer에 충분하지 않음을 알 수 있다.

Speaker Verification

  • 제한된 Speaker Verification 시스템에서 Unseen speaker에 대해 합성음과 실제 음성을 비교한다. 원래 1만명으로 학습했지만, 검증을 위해 11만명 화자 2800만개 데이터로 학습했다.

  • 테스트를 위해 Acoustic과 Vocoder에서 사용하지 않은 unseen 화자 VCTK 11명, LibriSpeech 10명을 선택하여 테스트한다. 화자마다 100개의 테스트 음성을 생성하고 VCTK 21000번, LibriSpeech 23100번을 수행하여 테스트했다.

  • 평가 방법은 EER(Equal Error Rate)로 FFR(False Reject Rate)과 FAR(False Acceptance Rate)이 같은 시점에서의 오류율을 의미한다. 1) FFR(False Reject Rate) – 시스템에 등록된 화자가 접근했는데, 해당 화자를 인식하지 못하고 인증을 거부하는 오류를 의미 → 허가된 화자가 오류로 인한 접근 거부 비율 2) FAR(False Acceptance Rate) – 시스템에 미등록된 화자가 접근했는데, 등록된 화자로 잘못 인식하여 허용하는 오류를 의미 → 미허가된 화자가 오류로 인한 접근 허용 비율

  • 다양한 화자가 존재하는 LibriSpeech로 Speaker Encoder를 학습했을 때, 본인 데이터셋이나 더 적은 화자가 존재하는 VCTK 기준 5~6%로 Ground Truth와 크게 다르지 않은 수치를 보인다. 그러나 VCTK로 학습하고 LibriSpeech에 대한 EER은 29%로 상당히 높은 에러율을 보인다.

  • Ground Truth와 합성음을 비교하는 것이 어렵기에 확장된 LibriSpeech 데이터셋을 평가했으나, EER 2.86%로 타겟 화자에 가까운 경향이 있지만(cosine similarity > 0.6), 사실상 대부분 다른 음성에 가깝다(cosine similarity > 0.7). 그래서 타겟과 유사하긴 하지만 다른 화자와 헷갈릴 수 있기에 충분히 좋은 음성을 생성하지는 못한다고 알 수 있다.

Speaker Embedding space

  • PCA로 나타냈을 때 합성음과 실제 음성이 비슷한 공간을 공유하여 유사함을 확인할 수 있으나, t-SNE로 나타냈을 때 확연히 합성음과 실제 음성이 가깝지만 별개의 클러스터를 형성하는 것을 확인할 수 있다.

  • 클러스터 할 때 성별은 확실하게 PCA와 t-SNE 모두 잘 나눈 것을 확인할 수 있다. 즉, Speaker Encoder가 합리적으로 표현을 학습했음을 알 수 있다.

Number of speaker encoder training speakers

  • 다양한 화자에 대한 일반화가 잘되는 이유가 speaker encoder으로 판단되기 때문에 학습된 representation의 퀄리티에 미치는지 확실하게 조사했다.

  • Table 5를 보면 확실히 품질 면에서는 Clean이 Other에 비해 품질은 좋지만 유사도가 미세하게 낮다. 그리고 LibriSpeech 기준으로 데이터를 추가할수록 정확도와 유사도 모두 상승하는 것을 알 수 있으며, 객관적인 지표인 SV-EER에서도 화자 수에 따라 더 낮은 에러율을 보인다.

  • 이 결과를 통해 transcript가 존재하는 데이터를 요구하는 DeepVoice3의 Multi-speaker 다르게, 화자 정보만 존재하는 데이터로 speaker encoder 학습 후 synthesizer(tacotron2)에 적용하는 것이 비용적으로 유리하다는 것을 의미한다.


★ Fictitious speakers ★

  • Speaker encoder를 활용하면 cloning의 기능을 수행할 수 있다. Speaker encoder를 bypassing하고 speaker embedding space의 특정 부분을 지정하여 Tacotron2로 합성하면 train과 test에서 학습하지 않은 목소리가 나온다.

  • Unseen 화자에 대해 합성을 수행하고, tacotron2와 speaker encoder 각각에 학습한 데이터 중, 랜덤으로 10개 뽑고 그중 가장 비슷한 화자와 비교했을 때 Table 6와 같은 결과를 보인다.

  • 완전히 가상의 목소리지만 Naturalness MOS가 3.65으로 사람과 비슷한 수준이고, 가장 가까운 화자 목소리와 비교해 cosine similarity와 SV-EER을 측정하면 unseen data답게 높은 에러를 보여 학습한 목소리와 완전히 구별된다고 볼 수 있다.


Conclusion

  • 본 논문은 Tacotron2과 별개로 독립적으로 speaker encoder를 transcript 없이 학습하여 seen data에서 좋은 성능을 보이고, 심지어 unseen data에 대해서도 좋은 성능으로 생성할 수 있도록 제안했다.

  • 먼저 Tacotron2의 Multi-Speaker에 학습하는 화자의 수를 증가시킬수록, Speaker Encoder에서도 화자의 수를 늘리면 더 높은 품질을 얻어낼 수 있다는 것을 실험을 통해 증명해냈다.
  • 즉, transcript가 있거나 고품질인 음성 데이터가 적은 경우에도 합리적으로 성능을 향상시킬 수 있음을 의미한다. 또한 독립적으로 두었기에 추가적인 triplet or contrastive loss가 필요하지 않아 모델 구조가 단순하다.
  • 하지만, 몇 초의 reference 음성에 대한 부족한 유사도를 개선하려면 ‘Neural voice cloning with a few samples’이나 ‘Sample efficient adaptive text-to-speech’의 approach가 필요하다.
  • 그리고 single speaker에 비해 화자 당 데이터가 부족하여 자연스러움이 부족하고, accent를 전달하는 데에도 제한 조건이 존재한다. 마지막으로 reference 음성에서 prosody를 음성과 완전히 분리할 수 없다는 점 또한 문제 또한 개선 할 요소다.
This post is licensed under CC BY 4.0 by the author.