티스토리 뷰

반응형

VoiceCraft: Zero-Shot Speech Editing and Text-to-Speech in the Wild


  • Speech editing, zero-shot text-to-speech를 위해 token infilling neural codec language model을 구성할 수 있음
  • VocieCraft
    • Transformer decoder architecture와 causal masking, delayed stacking을 결합하여 existing sequence 내에서 generation을 수행하는 token rearrangement를 도입
    • 추가적으로 speech editing evaluation을 위한 RealEdit dataset을 제공
  • 논문 (ACL 2024) : Paper Link

1. Introduction

  • Speech signal을 learnable sequence로 tokenizing 하고, resulting unit sequence에 대해 language model을 training 하면 speech를 text로 변환할 필요 없이 spoken utterance에 대해 NLP task를 직접 수행할 수 있음 
    • 특히 AudioLM과 같은 residual vector quantization (RVQ) 기반의 neural codec language model (NCLM)은 long-term coherent speech continuation에서 뛰어난 생성 품질을 보이고 있음
    • 여기서 zero-shot text-to-speech (TTS)는 target voice의 short reference와 target transcript를 사용하여 unseen voice를 합성하는 것을 목표로 함
      - 대표적으로 VALL-E는 zero-shot TTS를 transcript-conditioned speech continuation으로 framing 하는 NCLM을 구성하여 우수한 성능을 달성
    • 한편으로 speech editing은 target transcript와 match하도록 utterance의 word나 phrase를 수정하는 것을 목표로 함 
      1. 기존에는 single TTS model과 voice conversion model을 결합하여 desired speech segment를 생성한 다음, unedited part와 concatenate 하는 방법을 사용함
        - BUT, prosody mismatch와 boundary artifact로 인해 unnatural한 결과가 발생
      2. 최근의 UniCATS, VoiceBox는 surrounding speech context에 따라 generation을 condition하는 방식으로 speech editing model을 개선함

-> 그래서 zero-shot TTS, speech editing task 모두에서 활용할 수 있는 unified NCLM인 VoiceCraft를 제안

 

  • VoiceCraft
    • Causal masking step과 delayed stacking step으로 구성된 2-step token rearrangement procedure를 활용
      1. Causal masking은 speech codec sequence에서 bidirectional context로 autoregressive generation을 가능하게 함
      2. Delayed stacking은 효율적인 multi-codebook modeling을 지원함
    • 추가적으로 speech editing을 evaluate하기 위해 RealEdit dataset을 제작

< Overall of VoiceCraft >

  • Speech editing, Zero-shot TTS를 수행할 수 있는 neual codec language model
  • 결과적으로 각 task에 대해 뛰어난 합성 품질을 달성

2. Method

  • VoiceCraft는 neural codec의 output token을 rearranging 하여 speech editing을 위한 sequence infilling과 zero-shot TTS를 위한 continuation을 left-to-right language modeling으로 cast 함
    • Rearrangement는 2-step으로 구성됨 
      1. Causal Masking : bidirectional context로 autoregressive continuation/infilling을 지원
      2. Delayed Stacking : 효율적인 multi-codebook modeling을 지원
    • VoiceCraft는 decoder-only transformer를 사용하여 autoregressive sequence prediction으로 training 됨 

VoiceCraft를 통한 Speech Editing

- Rearrange Step 1: Causal Masking

  • 아래 그림과 같이 input으로 continuous speech waveform이 주어지면, VoiceCraft는 먼저 EnCodec을 사용하여 $T\times K$ codec matrix $X$로 quantize 함
    • $T$를 temporal frame 수, $K$를 RVQ codebook 수라고 할 때, $X$는 $(X_{1},...,X_{T})$로 나타낼 수 있음
      - 여기서 $X_{t}$는 timestep $t$에서 서로 다른 codebook의 code를 나타내는 length $K$의 vector
      - Codebook $k$의 code가 codebook $k-1$의 residual을 modeling 한다고 가정함
    • Training 중에 논문은 some token span $(X_{t_{0}},...,X_{t_{1}})$를 randomly mask 한 다음, unmask 된 모든 token을 condition으로 해당 masked token을 autoregressively predict 하는 것을 목표로 함 
      1. 이때 $t_{1}<T$인 경우, autoregressive generation을 수행할 때 future output에 대한 condition을 수행할 수 없다는 문제가 있음
      2. 따라서 masking 할 span을 sequence 끝으로 이동하여 causal 하게 $X$의 masking을 modify 해야 함
        - 이를 통해 해당 token을 infilling 할 때, past/future의 unmasked token을 모두 condtion 할 수 있음
    • 그러면 모든 masked span을 sequence 끝으로 이동시키는 방식으로 해당 procedure를 multiple masked span으로 확장할 수 있음 
      1. 먼저 masking 할 span 수 $n$을 $\text{Poison}(\lambda)$에서 sampling 한 후, 각 span에 대해 span length $l\sim \text{Uniform}(1,L)$을 sampling 함 
      2. 이후 서로 overlap 되지 않는다는 constraint하에서 $X$의 span location을 randomly select 함 
      3. Selected $n$ span은 mask token $\langle M_{1}\rangle,...,\langle M_{n}\rangle$로 대체됨 
      4. 결과적으로 masked span 내의 original token은 sequence $X$의 끝으로 이동되고, 각 span 앞에는 해당 mask token이 위치함 
    • e.g.) $X=(X_{1},...,X_{6})$이라고 하고 $X_{2}$에서 $X_{4}$까지 single span을 mask 한다고 하자
      1. 그러면 original sequence $X$는 $Y=(Y_{1};\langle M_{1}\rangle ,Y_{2};\langle M_{1}\rangle ; Y_{3};)$으로 rearrange 됨
        - $Y_{1}=(X_{1}), Y_{2}=(X_{5},X_{6}), Y_{3}=(X_{2},X_{3},X_{4})$
      2. $Y_{1},Y_{2}$를 unmasked span, $Y_{3}$를 masked span이라고 하면 end of span $\text{EOS}$ token은 masked span의 끝인 $Y_{3}$에 추가되고, end of utterance $\text{EOU}$ token은 utterance 끝인 $Y_{2}$에 추가됨

- Rearrange Step 2: Delayed Stacking

  • Causal masking token rearrangement 이후, rearranged matrix $Y$의 각 timestep은 $K$ token의 vector가 됨 
    • MusicGen에서는 stacked RVQ token에 대해 autoregressive generation을 수행할 때, time $t$에서의 codebook $k$의 예측이 동일한 timestep의 codebook $k-1$의 예측에 따라 condition 되는 delay pattern을 도입함
    • 이와 비슷하게 VoiceCraft는 span $Y_{s}$가 $L_{s}\times K$ shape라고 가정하고, delay pattern을 적용해 $Z_{s}=(Z_{s,0}, Z_{s,1},...,Z_{s, L_{s}+K-1}$로 rearrange 함 
      1. 이때 $t\in[L_{s}+K-1]$에서 $Z_{s,t}$는:
        (Eq. 1) $Z_{s,t}=(Y_{s,t,1},Y_{s,t+1,2},...,Y_{s,t-K+1,K})$
        - $[N]$ : integer set $\{0,1,...,N\}$
      2. $Y_{s,t-k+1,k}$ : matrix $Y_{s}$의 coordinate $(t-k+1,k)$에 위치한 token
        - 즉, $(t-k+1)$-th timestep의 $k$-th codebook entry
    • $\forall t \in [L_{s}+K-1], Z_{s,t}$에 $K$ valid token이 포함되도록 special learnable $[\text{empty}]$ token을 도입하고, $Y_{s,t-k+1,k}\triangleq [\text{empty}],\,\, \forall t\in\{s: s<k\cup s-k+1>L_{s}\}$를 정의함 
    • 여기서 mask token은 span의 일부가 아니고, delayed stacking 중에 변경되지 않음
      - 결과적으로 논문은 delayed stacking의 resulting matrix를 $Z=(Z_{1},\langle M_{1}\rangle, Z_{2},\langle M_{2}\rangle,...,\langle M_{\frac{S-1}{2}}\rangle, Z_{S})$로 정의
      - $Y$는 $S$ span으로 구성된다고 가정

Token Rearrangement Procedure & Modeling Framework

- Modeling

  • VoiceCraft는 transformer decoder를 사용하여 speech $W$의 transcript를 condition으로 $Z$를 autoregressive modeling 함
    • Concatenation operator $;$에 대해 decoder의 input을 $[W;Z]$라고 하자
      1. Codec matrix $Z$ 내 span $s$의 timestep $t$에서 model은 $Z_{s,t}$의 모든 $K$ token을 동시에 예측함
      2. 즉, $K$ MLP head를 사용하여 transformer의 final hidden state를 $K$ codebook 각각에 대해 하나씩 $K$ logit set로 project 함
        - 이때 prediction은 transcript $W$와 $Z_{s,t}$ 이전 $Z$에 있는 모든 token $H_{s,t}$에 따라 condition 됨
    • 결과적으로 transformer decoder는 $Z$의 factorized conditional distribution을 모델링함:
      (Eq. 2) $\mathbb{P}_{\theta}(Z|W) = \prod_{s}\prod_{t}\mathbb{P}_{\theta}(Z_{s,t}| W,H_{s,t})$
      (Eq. 3) $\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,= \prod_{s}\prod_{t}\prod_{k=1}^{K}\mathbb{P}_{\theta}(Z_{s,t,k}|W,H_{s,t})$
      - $\theta$ : model parameter
    • (Eq. 2)는 time에 따른 autoregressive factorization, (Eq. 3)은 independence assumption이 주어진 codebook에 대한 factorization
      - 논문에서는 $W, H_{s,t}$가 주어졌을 때, $Z_{s,t}$의 $K$ RVQ code는 서로 independent 하다고 가정
    • (Eq. 3)의 token-level probability formulation을 사용하여 training loss를 negative log-likelihood로 얻을 수 있음:
      (Eq. 4) $\mathcal{L}(\theta)=-\log \mathbb{P}_{\theta}(Z|W)=-\sum_{k=1}^{K}\mathcal{L}_{k}(\theta)$
    • 경험적으로 first residual codebook에 later codebook 보다 더 많은 weight를 주면 성능을 더욱 향상할 수 있으므로, final loss는:
      (Eq. 5) $\mathcal{L}_{\theta}=\sum_{k=1}^{K}\alpha_{k}\mathcal{L}_{k}(\theta)$
      - $(\alpha_{k})^{K}_{k=1}$ : tunable hyperparameter
      - 이때 mask token과 $[\text{empty}]$ token을 제외한 모든 token에 대한 prediction loss를 계산

- Inference

  • Speech Editing
    • Speech recording $R$과 transcript $W$가 있을 때, VoiceCraft는 $R$의 relevant span만 modify 하여 target transcript $W'$과 match 되도록 함
      - $W'$는 $W$의 일부 word가 insert, substitute, delete 된 version이라고 가정함
    • 해당 task는 training과 비슷하지만 다음의 차이점을 가짐:
      1. Training 중에 input transcript는 단순히 original recording $W$를 사용하지만, 추론 시에는 modified transcript $W'$를 사용함
      2. Training 중에는 mask 할 span이 randomly choice 되지만, 추론 시에는 original transcript와 target transcript를 비교하여 mask 할 word를 식별함
        - 이후 original transript의 word-level forced alignment를 적용하여 mask word에 해당하는 codec token span을 식별
    • 한편으로 edited speech와 unedited speech 간의 smooth transition을 보장하려면, span 주변의 neighboring word도 co-articulation effect를 모델링하기 위해 modify 되어야 함
      - 이를 위해 small margin hyperparameter $\epsilon$을 사용하여 left, right side 모두에서 mask span length를 $\epsilon$ 만큼 extend 함
    • Autoregressive generation 중에는 editing place에 mask token이 insert 된 target transcript를 VoiceCraft에 제공하고, 해당 sequence를 autoregressively continue 하도록 하여 masked span을 fill 함
      - 이후 생성된 codec token은 utterance의 correct location으로 splice back 되고, encoder-decoder network를 사용하여 전체 codec token sequence를 waveform으로 mapping 함
  • Zero-Shot TTS
    • VoiceCraft의 zero-shot TTS는 original utterance의 끝에서 insertion edit을 수행하는 것에 해당함
    • 이때 모델에는 target transcript와 transcription이 포함된 voice prompt가 제공됨
      - 해당 input은 서로 concatenate 되고 autoregressive 하게 target transcript에 대한 codec sequence를 생성함

RealEdit dataset의 예시

3. Experiments

- Settings

  • Dataset : GigaSpeech, LibriTTS, RealEdit (위 표 참고)
  • Comparisons : FluentSpeech, VALL-E, XTTS, YourTTS

Speech Editing Dataset 구성

- Results

  • Ablation Study
    • Model size가 클수록 VoiceCraft의 성능은 향상됨
    • Coedbook에 heavy weighting을 부여하면 WER, MCD 같은 intelligibility 성능을 개선할 수 있지만, $F0$, energy 같은 prosody는 저하됨
      - 논문에서는 최적 configuration으로써 830M의 $(5, 1, 0.5, 0.1)$ weight를 선택

Ablation Study

  • Speech Editing Results
    • VoiceCraft는 FluentSpeech와 비교하여 더 우수한 speech editing 성능을 달성함

Speech Editing 성능

  • Side-by-side 비교에서도 VoiceCraft가 더 선호되는 것으로 나타남

Side-by-Side Test

  • Original speech와의 비교에서도 큰 차이를 보이지 않음

Original Speech와의 비교

  • Zero-Shot TTS Results
    • Zero-shot 측면에서도 VoiceCraft는 가장 우수한 성능을 달성함

Zero-Shot TTS 성능

 

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday