본문 바로가기

AI/Speech Processing

[Paper Review] Improving Data Augmentation-based Cross-Speaker Style Transfer for TTSwith Singing Voice, Style Filtering, and F0 Matching

 

이 논문은 음성 합성에 관한 논문으로, 노래하는 목소리 합성(Singing Voice Conversion, SVC)에 대한 내용이다. 

음성 합성에 대해 처음 공부해보게 되면서 읽게 된 논문으로, 새롭게 알게 된 내용과 용어들이 많아 재미있었다. 

 

 

용어 정리 

더보기

- Expressive data

 : 일명 Style data라고도 할 수 있는데, 감정이나 음색적으로 표현이 풍부한 데이터를 의미. 

-> 감정에 대한 label이 있는건가? 는 더 알아봐야 함. 

 

- Neutral data

: 일반적인 음성 데이터. 감정이 두드러지는 음성 데이터가 아닌 일반적인 데이터를 의미. 

 

- F0 (Fundamental Frequency) 

 :  기저 주파수 (사람들이 고유하게 가지고 있는 기저 주파수) 

Cross-speaker style transfer in TTS 

: TTS에서의 발화 스타일을 source speaker의 expressive data로부터 target speaker의 neutral data로 변환하는 것이 주목적! 

 

이를 pre-trained singing voice conversion(SVC) 모델을 사용하여 해결하는 것이 위 논문의 주된 방법이다. 

 

 

 

 

Introduction 

[ Related Works] 

이전에는, target speaker의 원하는 스타일(expressive style)의 데이터가 있어야만 했다. 

즉, B 화자의 화내는 음성으로 변환하고 싶다면, B 화자가 화를 내는 음성 데이터가 있어야 했다. 

 

하지만, 이 방법에는 문제점이 많은데

1. 자동으로 label을 부여하는 것은 에러가 발생하기 쉽고, 

2. 비용이 많이 들며

3. 시간이 많이 소요되고

4. 화자의 능력치를 요구한다. (ex. 일반인이 성악가수처럼 노래를 부를 수는 없다.)

 

 이러한 문제점을 해결하기 위해서 소위 말하는 "화자간 스타일 전이학습"이 등장했다. 

 A 화자 -> B 화자 (이때, B 화자의 neutral data만 존재) -> B화자의 실제 expressive style 데이터가 필요 없다는 것만으로도 대단..!  

 

 Data augmentation은 low-resource scenarios 상황에서도 성공적이었다. 최근 연구들 중에서도 TTS 모델을 훈련시키기 위해 많이 사용한다. 

 

 - 첫 번째 예로, source 발화를 변환하기 위해 CopyCat을 사용하고, TTS에서 speech 생성하는 모델로는 Tacotron2를 사용했다. 하지만 여전히 대량의 expressive data가 필요하다는 문제점이 있다. 

 

 - 두 번째 예로, text-predicted-GST-Tacotron2 모델은 텍스트로부터 스타일적인 rendering을 예측한다. (무슨 말인지 잘 모르겠다.)  어쨋든 이 방법은 from scratch로 학습시켜야 하고, massive한 데이터가 필요하다는 단점이 있다. 

 

  - 세 번째 예는, 첫 번째 방법을 디벨롭 한 것으로, CopyCat 모델을 F0 조건을 사용한 방법이다. 하지만 target speaker의 10시간 이상의 neutral 데이터와 1시간 이상의 style 데이터가 필요하다. 

 

 - 최근 스타일 데이터 요구량이 15분까지 줄어들었다. (curriculum learning 전략 사용) 

 

 - 오직 하나의 연구가 높은 표현력의 화자간 스타일 전이를 다뤘는데, 이는 감정을 유지하는 VC에 의존하는 방식이다. pitch-shifted augmented data를 다양한 pitch에 대해 진행하여 VC와 결합하였다. Happy와 Sad라는 두 가지 감정에 대해서만 다루었다. 하지만, 성별이 같은 경우만 다루어서 상당수가 비슷한 음색을 지녔다. 또한, target 화자의 1000개 발화를 필요로 한 것도 한계점이다. 

 

주요 문제점 : Target 화자의 neutral / style 데이터가 많이 필요하다

 


 [Our work] 

높은 표현력을 지닌 화자간 스타일 전이 문제 해결 방법을
SVC(Singing Voice Conversion)의 아이디어에서 착안

 

Speech VS Singing 

 Speech에 비래서 Singing이 풍부한 감정 정보, 더 긴 발음 지속성 그리고 강화된 고주파 형성대를 갖는다. 

 

 Singing voice에는 4가지 축음 모드가 있다. 

1. Pressed

2. Breathy

3. Flow

4. Modal 

 이것들은 pitch(높낮이), loudness(소리의 세기), larynx level adjustments(후두부 조정)의 변화로 발생하는 것들이다. 이를 통해서 서로 다른 음질의 voice를 만들어낸다. 

 

 게다가, singing voice와 스타일적 speech간의 관계가 꽤 합리적이기 때문에 사용하기 적합하다. 

EX) Pressed이면서 높은 주파수는 "angry"로 들리는 것처럼 

 

따라서 화자간 스타일 전이 시에 사용하는 VC를 SVC로 바꾸는 것을 제안하였다. 

 

이 논문의 주요 Contributions 

-  SVC를 사용한 data augmentation으로 더 나은 표현력 재현. 
-  F0 matching 기술 제안 -> source 와 target 간의 음색 이전에 사용 
- Style classifier filter를 사용하여 표현력이 높은 데이터만 파인튜닝에 사용. 
- Target 화자의 neutral 데이터를 몇 분 이내로 줄이는 전이학습 개발. 
- 재현성을 위해 open-source 데이터만 사용. 
- 다른 모델과 성능 비교

 

 


Method 

 

 

WorkFlow 

1. Pre-trained SVC가 target 화자 데이터와 source expressive 데이터로 파인튜닝 됨 -> 스타일 패턴 학습

2. 1.에서 파인튜닝 된 SVC와 F0 매칭 알고리즘을 가지고, source neutral 과 source expressive 데이터가 target speaker 음성으로 변환됨.

3. 기반이 되는 TTS를 변환된 neutral 데이터셋으로 학습시킴.

4. Style classifier가 source expressive dataset으로 학습됨. -> target speaker 음성으로 변환된 voice가 같은 스타일을 유지하고 있는지를 보고 데이터 선정.

5. 필터링된 데이터로 TTS 파인튜닝. -> target speaker의 음성이 원하는 스타일로 변환됨. 

 

base SVC model 선정 -> So-VITS-SVC

더보기

4개의 서로 다른 encoder를 결합한 모델 

  1. Pre-trained timbre encoder 
    : Speaker representation 추출 용
  2. Whisper encoder 
    : Content 정보 추출 용 
  3. HuBERT 
    : Prosody representation(운율 정보) 추출 용 
  4. CREPE
    : F0 추출 용 

이는 Spectrogram을 생성하는 flow-based 디코더에 의해 사용됨. 

해당 모델은 화자 분류기(speaker classifier)와 GRL(gradient reversal layer)를 사용해서 "speaker disentanglement"하도록 함. -> 화자를 구분하는 것이 목적이 아니기 때문에! 

 

VCTK & Open-Singer Chinese 데이터셋으로 학습됨. -> 풍부한 축음(phonation)모드를 학습하기 위함. 

 => 이러한 pre-trained 모델을 사용함으로써, target 화자의 neutral 데이터는 몇 분 이내로 줄일 수 있었다.!  

 

 

F0 Matching Algorithm 

 화자 간의 음색을 맞추기 위한 문제! 

 

 성별이 다른 두 사람의 음성을 변환하는 경우, F0가 맞지 않는다면 비현실적인 음성 합성이 될 수 있다. 

이를 위해 변환(conversion) 단계에서 F0 matching algorithm을 추가함. 

 

  1. 3개의 input의 neutral 음성에 대해, 유성 구간(실제로 말하는 구간)을 기준으로 Harvest estimator를 사용하여 F0의 평균값 계산. 
  2. 그 후 각 화자에 대해, 음성별로 계산된 F0 평균값들의 평균을 산출 -> 해당 화자가 주로 말하는 F0의 평균값을 구함
  3. Target speaker와 평균 F0값과 각 소스 화자의 평균 F0값 사이의 간격을 반음(semitonal) 단위로 계산.
  4. 변환 과정에서, 입력된 소스 화자의 F0 곡선을 해당 반음 간격만큼 이동(transpose) -> 변환된 음성이 목표 화자의 음성 범위에 적합한 F0 범위를 갖도록 하기 위함. 

 

Style Filtering 

: 변환된 음성이 우리가 원하는 스타일이 아닌 경우 배제하기 위해 사용. 

 

 Source expressive dataset(원하는 스타일 데이터)으로 훈련을 시킨 style classifier를 converge가 될 때까지 훈련시킨다. 다수의 화자 데이터로 학습시키기에, 화자의 음색에 robust하도록 학습이 가능하다. 

 

 결과적으로, conversion 후에도 style label이 유지가 되는 데이터들만 선정하여 파인튜닝에 이용한다.

(Tacotron2 에 classifier layer를 얹은 듯 한다.)

 

 

TTS

TTS 학습은 2 step으로 이루어짐. 

  1.  Neutral pre-training
  2. Style finetuning 

1. Neutral pre-training 

 * 가정 : neutral source dataset이 TTS를 훈련시키기 충분한 양이라는 가정 하에 진행. 

Source expressive data와 Target speaker data의 대량의 데이터를 요구하는 문제를 완화시킴. 따라서, 스타일 조정을 위한 Expressive source data는 최소한의 적절한 양만 필요로 함. 

 

  • TTS model : FastPitch 사용. 
더보기

FastPitch 

명시적인 발음 길이(duration), 음정(pitch), 에너지(energy) 예측기를 포함하는 빠르고 고품질의 TTS 모델 


Experiments

Dataset 

  • Target speaker dataset : LJSpeech dataset (단일 화자 데이터)
  • Neutral source dataset : VCTK (TTS를 처음부터 훈련시키기에 충분한 양 - 110명의 화자, 다양한 음색과 성별) 
  • Source Expressive dataset : ESD dataset의 영어 부분 (높은 표현력, 성별의 균형, 10명의 서로 다른 화자 균등 분포) 

 

Baseline Models 

  • 당시 SOTA 모델 (Daft-Exprt) 과 비교

 

Daft-Exprt

: 음정(pitch), 발음 길이(duration), 에너지(energy) 와 같은 높고 낮은 수준의 운율적(prosody) 특징을 포착하도록 설계된 모델. 

데이터 증강을 하지 않고, GRL을 통한 adversarial 훈련으로 화자 정보와 운율적(prosody) 특성을 분리(disentanglement)하려고 시도. 
이 모델은 LJ 데이터셋 전부를 사용하여 학습됨. (우리는 ESD 데이터 사용!) 
=> 운율 정보는 유지하면서 화자 고유 정보는 제거하도록 훈련! 

합성을 위해서는 두 가지 방법 고려. 
1. Style 전이를 위해  ground-truth speech sample(exact text가 있는)을 사용. -> text가 style label이지 않을까 싶음 

                                                                                       또는

1. ESD 데이터셋의 모든 training sample들에 대해 운율 임베딩 계산. 
2. 2번에서 계산한 임베딩 값을 reference로 삼아, 특정 스타일에 대한 추론(inference)은 해당 스타일의 모든 학습 운율 임베딩의 중심점(centroid)을 계산하여 수행. 
=> 각 스타일에 대해 학습된 운율 임베딩들의 평균(중심점)을 구하고, 이를 이용해 해당 스타일의 운율을 추정함.

 

 Ablation study 

- style filter를 제거하고 성능 측정. 

- ESD 데이터의 모든 데이터를 사용 (기존에는 영어에 대해서만 사용)

- SVC 대신 SOTA 모델인 FreeVC로 대체 (VCTK로 pre-trained 된 모델) 

 

 

Training Setup

  • GPU : Quadro RTX 5000 (48GB)
  • VC / SVC : 1000 epoch (finetuning)
  • base TTS : 600k step (pre-train)
  • Style fine-tuning : 100k steps 
  • Style filter : converge 될 때까지 학습 -> valid set에서 84% accuracy 달성
  • 최종 TTS fine-tuning에 선정된 데이터 : 571(angry), 74(happy), 2230(sad), 99(surprise)
  • Pipe-line 상 최종 걸린 시간 : 6일 + 11시간 
  • 생성된 mel을 sudio로 변환하는 데에 사용한 모델 : BigVGan

 

Evaluation 

  • Metric : MOS 사용. 

Results 

 

 

 

 

 

 

 

 

 

관련해서 더 읽어볼 논문 리스트업

  • So-VITS-SVC (github)
  • StarGAN
  • CycleGAN
  • ZHOU, Yiquan, et al. VITS-based Singing Voice Conversion System with DSPGAN post-processing for SVCC2023. In: 2023 IEEE Automatic Speech Recognition and Understanding Workshop (ASRU). IEEE, 2023. p. 1-8.
  • QIAN, Kaizhi, et al. Contentvec: An improved self-supervised speech representation by disentangling speakers. In: International Conference on Machine Learning. PMLR, 2022. p. 18003-18017.