코드: https://github.com/p0p4k/pflowtts_pytorch (비공식)
3. METHOD
본 연구의 목표는 고품질 및 빠른 non-autoregressive TTS 모델에서 제로샷 화자 적응을 위한 context 내 학습 기능을 제공하는 것이다. 참조 음성에서 화자 정보를 추출하는 화자 임베딩 접근법의 잠재적 병목 현상을 피하기 위해, 신경 코덱 언어 모델과 유사하게 참조 음성을 화자 적응을 위한 프롬프트로 직접 활용하는 접근 방식을 채택한다. 음성 프롬프트 방법 외에도 효율적인 샘플링을 위해 플로우 매칭 생성 모델을 사용한다. 본 방법의 개요는 3.1절에서 제공되며, 3.2절에서 디코더에 대한 자세한 설명을 제공하고, 나머지 세부 사항은 3.3절에서 설명한다.
3.1 P-Flow
P-Flow 훈련은 마스크드 오토인코더와 유사하다. <텍스트, 음성> 쌍 데이터를 주어, 음성의 멜-스펙트로그램을 x, 텍스트를 c로 표시한다. x에서 임의로 위치한 3초 세그먼트를 마스킹하는 $m^p$를 정의한다. 우리는 $x^p = (1−m^p)·x$로 정의한다. 훈련 중 P-Flow의 목표는 c와 일부 세그먼트 $x^p$가 주어진 상태에서 x를 재구성하는 것이다. 훈련 중에는 P-Flow가 $x^p$를 포함한 x 전체를 재구성할 것으로 예상하지만, 모델은 x 내의 $x^p$의 정확한 위치를 지정하지 않는다.
P-Flow는 c와 일부 세그먼트 $x^p$가 주어진 상태에서 음성의 조건부 확률 분포 $p(x|c, x^p)$을 모델링하는 법을 학습한다. 많은 제로샷 TTS 모델이 모든 정보를 고정 크기 벡터로 압축하는 것과 달리, 우리는 텍스트 c와 음성 프롬프트 $x^p$를 받아 화자 조건 텍스트 표현을 생성하는 텍스트 인코더 $f_{enc}$를 도입한다. 우리는 이 텍스트 인코더를 음성 프롬프트 텍스트 인코더라 부른다. 이 텍스트 인코더의 출력은 플로우 매칭 생성 모델을 사용하여 멜-스펙트로그램으로 매핑되고, 마지막으로 오디오 보코더를 사용하여 waveform으로 변환된다.
음성 프롬프트 텍스트 인코더:
그림 1a와 같이, 우리는 텍스트 입력 c와 함께 음성 프롬프트로써 임의 세그먼트 $x^p$의 멜-스펙트로그램을 입력한다. 그런 다음 둘 다 동일한 차원으로 투영하여 텍스트 인코더의 입력으로 사용한다. 음성 프롬프트 텍스트 인코더의 역할은 프롬프트 $x^p$에서 추출된 화자 정보를 사용하여 화자 조건 텍스트 표현 $h_c = f_{enc}(x^p, c)$를 생성하는 것이다. 대규모 코덱 언어 모델과 유사하게, 우리는 임의의 텍스트 위치에서 음성 프롬프트에 어텐션할 수 있는 non-autoregressive 트랜스포머 구조를 사용한다.
음성 프롬프트 텍스트 인코더가 음성 프롬프트에서 화자 정보를 효과적으로 추출하도록 훈련하기 위해, 텍스트 인코더 표현과 멜-스펙트로그램 사이의 거리를 최소화하는 인코더 손실을 사용한다. 이는 단일 화자 TTS 모델의 샘플링 단계를 줄이기 위한 Grad-TTS [30]에서의 원래 목적 외에도, 생성된 텍스트 표현에 화자 관련 세부 사항을 포함하도록 인코더를 장려한다.
음성 프롬프트된 인코더 출력 $h_c$와 멜-스펙트로그램 x의 길이가 다르기 때문에, Glow-TTS [21]에서 제안된 monotonic alignment search (MAS) 알고리즘을 사용하여 텍스트 인코더 출력을 멜-스펙트로그램과 정렬한다. MAS를 적용하여 텍스트 인코더 출력과 멜-스펙트로그램 사이의 전체 L2 거리를 최소화하는 정렬 $A = MAS(h_c, x)$을 도출한다. 정렬 A를 기반으로 각 텍스트 토큰의 지속 시간 d를 결정하고 텍스트 토큰의 지속 시간에 따라 인코더 출력을 복제하여 $h_c$를 확장한다. 이 정렬 프로세스는 멜-스펙트로그램 x와 정렬된 텍스트 인코더 출력 h를 생성한다. 비교적 간단한 재구성 손실은 $L_{enc} = MSE(h, x)$로 작성된다.
실제 훈련에서는 모델이 훈련 중 x 내에서 $x^p$의 정확한 위치를 제공받지 않더라도 여전히 $x^p$의 사소한 복사-붙여넣기(collapse to trivial copy-pasting)로 수렴한다. 이를 피하기 위해, 우리는 $x^p$에 해당하는 세그먼트의 재구성 손실을 단순히 마스킹한다. 그럼에도 불구하고 최종 모델은 여전히 연속적인 멜-스펙트로그램 시퀀스를 추론할 수 있다. 마스크된 인코더 손실 $L^p_{enc}$는 멜-스펙트로그램 x의 무작위 세그먼트 xp에 대해 $m^p$를 사용하여 다음과 같이 정의된다:
$L^p_{enc} = MSE(h · m^p, x · m^p)$
이 손실을 최소화함으로써, 인코더는 주어진 음성 x와 유사한 정렬된 출력을 생성하기 위해 음성 프롬프트에서 가능한 한 많은 화자 정보를 추출하도록 훈련된다. 이는 화자 적응을 위한 context 내 학습 기능을 향상시킨다.
플로우 매칭 디코더:
고품질 및 빠른 제로샷 TTS를 수행하기 위해, 우리는 플로우 매칭 생성 모델을 디코더로 사용하여 $p(x|h)$의 조건부 확률 분포를 모델링한다. 플로우 매칭 디코더는 연속 정규화 플로우(CNF)의 조건부 벡터 필드 $v_t(·|h)$를 모델링하여 표준 정규 분포에서 데이터 분포로의 조건부 매핑을 나타낸다. 디코더는 $L^p_{cfm}$이라는 플로우 매칭 손실을 사용하여 무작위 세그먼트에 대한 마스크를 적용하여 훈련된다. 자세한 내용은 3.2절에서 제공된다.
지속시간(duration) 예측기:
MAS가 사용되지 않는 추론 중 텍스트-토큰 지속 시간을 재현하기 위해, 우리는 [21]과 유사한 방식으로 훈련된 지속 시간 예측기를 사용한다. 지속 시간 예측기는 텍스트 인코더의 숨겨진 표현을 추가 화자 조건 없이 입력으로 사용하며, 이 표현은 이미 화자 정보를 포함하고 있다. 이는 텍스트 인코더 훈련에 영향을 미치지 않기 위해 분리된 입력을 사용하여 모델의 나머지 부분과 동시에 훈련된다. 지속 시간 예측기는 각 텍스트 토큰의 로그-스케일 지속 시간 log d̂를 추정하며, 지속 시간 예측기의 훈련 목표 $L_{dur}$는 훈련 중 MAS를 통해 얻은 로그-스케일 지속 시간 log d와의 평균 제곱 오차를 최소화하는 것이다.
P-Flow의 전체 훈련 손실은 다음과 같다:
$L = L^p_{enc} + L^p_{cfm} + L_{dur}$
제로샷 추론에서는 텍스트 인코더에 입력으로 사용할 참조 샘플에서 무작위 청크를 사용하며, 원하는 텍스트를 입력으로 사용하여 $h_c$를 얻는다. 우리는 음성 프롬프트에 해당하는 전사를 제공하지 않는다. 그런 다음, 지속 시간 예측기에서 예측된 d̂를 사용하여 $h_c$를 확장하고, 플로우 매칭 디코더를 사용하여 개인화된 음성을 생성한다.
3.2 플로우 매칭 디코더
플로우 매칭을 사용하여 멜-스펙트로그램 디코더 작업의 조건부 분포 $p(x|h)$을 모델링한다. 먼저 플로우 매칭의 개요를 제공한 후 샘플링 절차와 추가적인 질적 개선을 위한 가이드 관련 기술을 설명한다.
플로우 매칭 개요:
플로우 매칭 [23, 35, 24]은 데이터 밀도 $p_1(x)$와 더 간단한 샘플링 밀도 $p_0(x)$ (기본적으로 표준 정규 분포)를 연결하는 시간 종속 확률 경로에 맞추는 방법이다. 이는 연속 정규화 플로우와 밀접한 관련이 있지만, 확산 및 스코어 매칭 모델 [13, 16, 34]의 일반적인 설정과 유사한 방식으로 시뮬레이션 없는 효율적인 훈련이 가능하다. 우리는 [23]에서 명시된 조건부 플로우 매칭을 채택하여, 소스와 타겟 분포 간의 더 간단하고 종종 직선적인 궤적을 권장한다. 더 간단한 궤적은 추가 증류 없이 테스트 시 샘플링 단계를 줄이는 데 유리하다. 간단히 하기 위해, 이 개요에서는 조건부 변수 h를 무시한다.
Lipman et al. [23]을 따라, 우리는 플로우 $ϕ : [0, 1] × \mathbb{R}^d → \mathbb{R}^d$를 다음 ODE를 사용하여 두 밀도 함수 간의 매핑으로 정의한다:
$\frac{d}{dt} ϕ_t(x) = v_t(ϕ_t(x)); ϕ_0(x) = x$
여기서 $v_t(x)$는 시간 종속 벡터 필드로, 시간에 따른 확률 흐름의 궤적을 지정한다. $v_t(x)$는 또한 우리의 학습 가능한 구성 요소로, 앞으로는 $v_t(ϕ(x); θ)$로 표시한다. 분포에서 샘플링하려면, $t = 0$에서 샘플링 분포 $p_0$에서 초기 조건을 샘플링하고, Eq. (2)에서 ODE를 해결한다. 특히, [23]의 공식은 더 직선적인 궤적을 권장하여, 10개의 오일러 단계로 ODE 해를 저렴하게 근사할 수 있다.
실제로 $ϕ_t(x)$의 주변 흐름을 결정하는 것은 어렵다. 따라서 Lipman은 이를 다음과 같이 여러 조건부 흐름 $ϕ_t,x_1(x)$을 통해 주변화(marginalizing)하는 방식으로 공식화한다:
$ϕ_t,x_1(x) = σ_t(x_1)x + μ_t(x_1)$
여기서 $σ_t(x_1)$와 $μ_t(x_1)$는 시간 조건부 아핀 변환으로, 가우시안 분포 $p_1$과 $p_0$ 간의 변환을 매개변수화한다. 마지막으로, $q(x_1)$를 우리의 데이터에 대한 실제지만 아마도 비가우시안 분포로 정의한다. 우리는 $σ_{min}$(경험적으로 0.01로 설정됨)으로 약간의 백색 잡음을 추가하여 개별 샘플을 섭동하여 q의 혼합 가우시안 근사치로 $p_1$을 정의한다. 우리는 SDE 공식에서의 확률성에서 오는 복잡함 없이 궤적을 지정할 수 있다.
이를 활용하여, Lipman et al.은 간단한 선형 궤적을 권장하며, $ϕ_t$를 위한 다음 매개변수를 도출한다:
$μ_t(x) = tx_1, σ_t(x) = 1 - (1 - σ_{min})t$
벡터 필드를 훈련하는 것은 조건부 플로우 매칭 목표 함수 LCFM (θ)를 사용하여 수행된다:
$L_{CFM} (θ) = \mathbb{E}_{t∼U [0,1],x_1∼q(x_1),x_0∼p(x_0)} ∥v_t(ϕ_t,x_1 (x_0); θ) - \frac{d}{dt} ϕ_t,x_1 (x_0)∥^2$
Eq. (4)를 Eq. (3) 및 (5)에 대입하면 최종 CFM 목표가 도출된다:
$L_{CFM} (θ) = \mathbb{E}{t,q(x_1),p(x_0)} ∥v_t(ϕ_t,x_1(x_0); θ) - (x_1 - (1 - σ{min})x_0)∥^2$
마스크된 플로우 매칭 손실:
플로우 매칭 디코더는 텍스트 인코더의 출력 h로 제공된 하위 세그먼트 $x^p ∈ x$에 의해 제공되므로, $x^p$에 해당하는 출력 부분에 대한 손실을 다시 마스킹해야 할 필요가 있었다. 일반적인 $v_t(x_t; θ)$는 $v̂_θ(x_t, h, t)$로 매개변수화되어 조건부를 설명한다. 여기서 t는 연속적인 사인파 임베딩으로 표현된다. 이를 통해 마스크된 CFM 목표가 도출된다:
$L^p_{CFM} (θ) = \mathbb{E}{t,q(x_1),p(x_0)} ∥m^p · (v̂_θ(ϕ_t,x_1(x_0), h, t) - (x_1 - (1 - σ{min})x_0))∥^2$
샘플링:
조건부 플로우 매칭 손실은 조건부 벡터 필드를 주변화하여 샘플링 중에 사용되는 주변 벡터 필드를 달성한다. 선형적으로 보간된 조건부 궤적은 결과적으로 동일한 직선성을 보장하지는 않지만, 우리는 여전히 꽤 유사한 것을 얻는다. 본 연구에서는 첫 번째 오일러 방법을 사용하여 10단계로 ODE를 해결하는 것이 충분히 간단한 궤적을 제공하는 것을 발견했다. N 오일러 단계로 샘플링은 다음 재귀 관계를 사용하여 수행된다:
$x_0 ∼ N (0, I); x_{t+ \frac{1}{N}} = x_t + \frac{1}{N} v̂_θ(x_t, h, t)$
가이디드 샘플링:
발음 명확성을 더욱 향상시키기 위해, classifier-free guidance (CFG) 방법 [14]에서의 기술을 적용한다. 관련 연구에서, GLIDE [29]는 빈 텍스트 시퀀스에 대한 궤적을 빼는 방식으로 텍스트 조건부 샘플링 궤적을 증폭시킨다. 우리는 유사한 공식을 사용하여, 평균 특징 벡터에서 궤적을 멀리 유도한다. γ를 가이드 스케일로 한다. 우리의 가이드 증폭된 오일러 공식은 다음과 같다:
$x_{t+ \frac{1}{N}} = x_t + \frac{1}{N} (v̂_θ(x_t, h, t) + γ(v̂_θ(x_t, h, t) - v̂_θ(x_t, h̄, t))$
3.3 모델 세부 사항
고수준 모델 아키텍처는 그림 1에 나와 있다. 본 모델은 세 가지 주요 구성 요소로 구성된다: 프롬프트 기반 텍스트 인코더, 추론 중 음소 지속 시간을 복원하기 위한 지속 시간 예측기, 및 Wavenet 기반 플로우 매칭 디코더. 실험에서는 텍스트 인코더가 단지 3백만 개 파라미터의 소형 트랜스포머 구조를 포함하더라도 강력한 제로샷 결과를 보인다. 각 구성 요소에 대한 추가 아키텍처 세부 사항은 섹션 B에 제공된다.
주요 인용(우선순위 순으로)
[23] Lipman, Y., Chen, R. T. Q., Ben-Hamu, H., Nickel, M., & Le, M. (2022). Flow Matching for Generative Modeling. arXiv preprint arXiv:2210.02747.
[37] Wang, C., Chen, S., Wu, Y., Zhang, Z., Zhou, L., Liu, S., Chen, Z., Liu, Y., Wang, H., Li, J., et al. (2023). Neural Codec Language Models are Zero-Shot Text to Speech Synthesizers. arXiv preprint arXiv:2301.02111.
[24] Liu, X., Gong, C., & Liu, Q. (2022). Flow Straight and Fast: Learning to Generate and Transfer Data with Rectified Flow. arXiv preprint arXiv:2209.03003.