딥러닝/음성합성

Latent Filling 정리

moonai 2024. 6. 13. 22:29

논문 제목: Latent Filling: Latent space data augmentation for zero-shot speech synthesis (2024) 링크

논문 저자: Jae-Sung Bae, Joun Yeop Lee, Ji-Hyun Lee, Seongkyu Mun, Taehwa Kang, Hoon-Young Cho, Chanwoo Kim

 

 

 

개요

논문의 본문으로 들어가기 앞서 zero-shot learning에 대한 이해가 필요하다. Zero-shot learning은 처음 보는 데이터 라벨 또는 입력 분포에 대해 정확한 분류가 가능하도록 학습하는 기법을 말한다. 다시 말해, 새로운 입력 값과 정답 라벨에 대해서 잘 예측해야 하는 문제이다. 그러한 모델을 학습시키기 위해서는 보통 상당히 많은 양의 학습 데이터와 함께 고품질의 데이터를 필요로 한다. 실제로 위와 같은 데이터를 학습하기는 쉽지 않기 때문에, 보통 데이터 증강(data augmentation) 기법을 함께 활용하고 있다.

 

 

 

 

음성에서 사용되는 데이터 증강 기술로는 'pitch shifting', 'speech synthesis를 사용한 데이터 추가' 같은 것이 존재한다. 그러나 이렇게 데이터 자체를 변형하거나 생성한 데이터들은 부정확한 발음과 노이즈를 포함하고 있을 수 있어 오히려 학습하는데 방해할 수 있게 된다. 이에 본 논문에서는 새로운 데이터 증강 기술 중 하나인 latent filling을 음성 도메인에 접목시키면서 zero-shot learning이 가능한 음성합성 모델을 제안하였다.

 

 

 

 

본문

Latent filling은 음성 데이터를 증강하는 기술로, 음성 데이터를 입력받아 화자 임베딩을 생성한 뒤, 다른 화자가 말하는 것과 같은 임베딩을 잠재 공간에서 생성한다. 이는 이전에 음성 데이터 자체에 변형을 가해 데이터를 늘리는 것과 달리, 잠재공간에서 데이터를 생성하고 늘린다는 것에 의미가 있다. 모든 데이터에 대해  증강을 한 것은 아니며 하이퍼파라미터로 지정되는 확률 $\epsilon$ 값을 기준으로 데이터에 변형을 주거나 주지 않도록 모델을 설계하였다. (더 자세한 과정은 아래 pseudo code에 기술되어 있다.)

 

 

 

 

출처: Latent Filling

 

 

 

먼저 모델의 입력으로 음소 시퀀스, 음성 데이터(acoustic feature) 그리고 사용하는 언어의 정보가 주어진다. 음소 시퀀스 $y$는 음소 임베딩 $h_y$ 의 형태로 변환되고, 언어 정보도 index를 기반으로 임베딩 $l$로 변환된다. 음성학적 정보를 담고있는 데이터 $x$는 speaker encoder $\phi$ 를 거쳐 화자 임베딩이 생성되며, 여기서 증강 기법을 적용한다면 $\tilde{s}$ 로, 적용하지 않았다면 $s$ 를 변환한다. Fastspeech2 모델과 비슷하게 duration predictor와 length regulator가 사용되었으며 모델은 먼저 음소 임베딩 $h_y$ 로부터 생성한 acoustic feature $\hat{x}$ 와 정답 acoustic feature인 $x$ 간의 loss 그리고 duration predictor에 대한 loss를 최소화시킨다. 이를 reconstruction loss $L_{Rec}$ 으로 표현한다.

 

 

 

 

$$ L_{Rec} = \ell_1 (d, \tilde{d}) + \ell_2 (x, \hat{x}) $$

 

 

 

 

 

또 다른 손실함수로는, 생성한 acoustic feature에 대한 loss를 $\ell_2$ 노름을 사용해서 비교하지 않고, 잠재 공간에서의 유사도를 비교하는 $L_{SCL}$ 이 존재한다. 사전학습된 speaker encoder $\phi$ 가 만들어낸 잠재공간에서 예측한 acoustic feature 임베딩 역시 비슷한 곳에 위치해야 하기 때문에 아래와 같은 식이 등장하였다. 유사도를 측정하는 기준으로 코사인 유사도가 사용되었다.

 

 

 

 

$$ L_{SCL} = -\frac{1}{N} \sum_{i=1}^N cos\_sim(s_i, \phi(\hat{x}_i)) \tag{1} $$

 

 

 

 

Latent Filling

그렇다면 아직 설명하지 않은 latent filling은 무엇일까? 사전학습된 인코더인 speaker encoder는 주어진 음성을 잠재공간에 적절하게 매핑시켜 준다. 그렇다면 여러 가지 음성학적 특징이 표현될 수 있는 잠재공간에 각 화자의 목소리 데이터가 매핑이 된다. 연구팀은 이 잠재 공간에서 임의의 벡터값을 추출한다. 먼저 (a) 임의의 2개의 화자 임베딩을 선택하여 가중평균을 취하는 interpolation 기법과, (b) 현재 주어진 음성의 화자 임베딩에서 가까운 임의의 지점을 선택하여 만들어내는 기법인 adding noise가 존재한다.

 

 

 

 

출처: Latent Filling

 

 

 

 

 

위 증강기법 중 (b) noise adding은 latent filling을 하지 않는 경우에도 적용하였으며, latent filling을 하는 경우에는 (a), (b) 모두 적용시켰다. Gaussian noise를 모두 추가해 주는 것은 모델의 강건함 (robustness)를 증가시키기 위한 것으로 보인다. Latent filling을 하게 되는 확률은 임의로 추출한 값 $u_1$ 과 threshold $\epsilon = 0.25$ 에 의해 결정이 되며 증강 기법의 알고리즘을 연구팀은 수도코드로 작성해 주었다.

 

 

 

 

출처: Latent Filling

 

 

 

 

그런데, latent filling으로 생성한 데이터의 라벨 (정답)
acoustic feature는 무엇이지?

 

 

 

 

Latent filling의 설명을 들으면서 궁금했던 것은 임의로 생성한 화자 임베딩에 대한 정답 acoustic feature는 무엇인가였다. 연구팀은 이 문제를 해결하기 위해 정답으로 예측한 acoustic feature $\tilde{x}$ 를 다시 speaker encoder에 넣어서 $\tilde{s}$ 를 생성하도록 하였다. 그런 뒤, 잠재공간에서 예측한 acoustic feature의 화자 임베딩과 입력으로 사용된 화자 임베딩 사이의 유사도를 높이도록 하였다. 

 

 

 

 

$$ L_{LFCL} = -\frac{1}{N} \sum_{i=1}^N cos\_sim (\tilde{s_i}, \phi(\tilde{x_i})) \tag{2} $$

 

 

 

 

학습

여기까지 읽고 들었던 간단한 질문은 '왜 항상 latent filling을 적용하지 않고 확률에 기반하여 일부만 augmentation을 적용하였는가?'였다. 그 부분에 대한 정답은 모델이 특정 정보만 학습하는 것을 방지하기 위함이다. 만약 모든 데이터에 latent filling을 적용한다면 TTS 시스템이 생성한 음성은 입력 텍스트와의 일관성이 떨어지게 된다. 이는 화자의 특성만을 파악하고 reconstructino loss $L_{Rec}$를 학습하지 못하기 때문이다. 반면 latent filling을 못하게 되면 화자의 특성에 대해 학습하기 어려워 잠재 공간에서 적절한 증강이 불가능해진다. 따라서 증강 기법을 적용할 확률 $\tau$ 를 설정하는 것이 매우 중요하다고 밝혔으며 연구팀은 실험적으로 25%가 가장 적절했다고 한다.

 

 

 

 

실험 및 결과

모델을 학습할 때 사용한 데이터는 영어와 한국어 데이터셋이다. 영어 데이터셋으로는 VCTK, LibriTTS, LJSpeech 데이터셋을 사용했으며 이는 도합 259시간의 음성데이터와 1,245명의 화자가 녹음한 데이터로 구성되어 있다. 한국어 데이터는 AIHub에서 제공하는 데이터를 사용하였으며 3,086명의 일반인이 녹음한 7,414시간의 음성과 44명의 전문 성우가 녹음한 256시간의 음성이 사용되었다. 입력으로 주어지는 음성을 변환하는 데에는 SOTA 모델인 ECAPA-TDNN을 사용하였으며, 생성한 acoustic feature를 waveform으로 변환하는 보코더 모델로는 Bunched LPCNet2를 사용하였다.

 

 

 

 

평가에 사용된 음성은 Ground Truth (GT), Grount Truth를 사용해 다시 보코더로 합성한 Ground Truth (GT-re)와 SC-Glow TTS, YourTTS 모델의 추론 결과이다. 또한 데이터 증강 기법의 비교를 위해 latent filling을 적용한 결과, crowd sourcing으로 얻은 데이터로 학습한 결과, pitch shifting을 적용한 결과를 모두 비교하였다. 주요 평가지표로 화자의 임베딩 유사도를 측정하는 SECS, 발음한 단어의 오류율을 Whisper ARS 모델로 측정한 (WER), 심사위원의 평가인 MOS 평가지표가 사용되었다.

 

 

 

 

출처: Latent filling

 

 

 

 

Baseline 모델에 latent filling augmentation 기법을 적용하였을 때, 대부분의 점수에서 최상위권을 기록하였으나 WER과 MOS 평가지표에서는 2위이거나 최상위에 가장 근접해 있는 결과를 보여주었다. 연구팀은 이 결과에 대해서 새로운 화자 임베딩으로 음성을 생성하였으나, 해당 음소에 대한 정보가 덜 학습되어서 발생한 것이라고 추측하였다. 무엇보다 확실하게 알 수 있는 것은 원본 데이터 수준에서 증강기법을 적용하는 것보다 잠재공간에서 증강기법을 적용하는 것이 더 자연스러운 음성합성이 가능했다는 것이다.

 

 

 

 


 

 

 

 

생각

이전에 개인적으로 개인화된 음성합성 시스템 (personalized TTS system)에 대한 연구 및 프로젝트를 진행했던 적이 있었다. 당시 zero-shot learning에 대한 개념이 없어서 최소한의 사용자 목소리 데이터만으로 acoustic feature를 추출하는 방법에 대해 고민했던 적이 있었다. 지금 와서 논문을 읽고 느낀 것이지만, 이런 식으로 latent filling 기법을 적용한다면 처음 보는 화자의 reference 음성 1개만 존재하더라도 개인화된 TTS 시스템의 개발이 가능했을 것이라고 추측해 본다.

 

 

 

 

논문 주제 자체가 매우 흥미로워 읽는 시간 자체가 정말 빠르게 지나갔다. 이전 리뷰에 이어서 사용자의 정보를 잠재공간에 매핑하여 필요한 정보들을 사용하는 기법들이 성공을 이루면서 더 정확한 임베딩을 생성하는 것이 앞으로 음성합성하는 데 있어 큰 key point가 될 것 같다. 하지만 하나 의문이 드는 것도 있다. 이 논문에서 사용한 latent filling 증강기법을 사용하게 되면 잠재공간에 존재하는 화자 임베딩 벡터들의 convex set 내에서만 augmentation이 되는데, 그 이외의 새로운 화자 정보가 주어진다면 추론에 실패할 것 같다는 생각이 든다.

 

 

 

 

이런 문제를 해결하기 위해서 최대한 넓은 convex set을 구성해야 했기에 다양한 사용자의 음성으로 학습해야 하지 않았을까?

 

'딥러닝 > 음성합성' 카테고리의 다른 글

Hierarchical TiCa Speaker Encoder 정리  (0) 2024.06.14
Mels-TTS 정리  (0) 2024.06.13