티스토리 뷰

반응형

MobileSpeech: A Fast and High-Fidelity Framework for Mobile Zero-Shot Text-to-Speech


  • Zero-shot Text-to-Speech는 few-second unseen speaker voice prompt로 강력한 voice cloning capability를 달성할 수 있음
  • BUT, 대부분의 기존 방식들은 우수한 합성 품질에 비해 추론 속도, model size 측면의 한계가 있음
  • MobileSpeech
    • Discrete codec를 기반으로 speech codec의 hierarchical information과 weight mechanism을 incorporate 하는 Speech Mask Decoder module을 도입
      - 특히 text와 speech 간의 gap을 해소하기 위해 information flow를 less-to-more로 simulate 하는 high-level probabilistic mask를 적용
    • Speaker prompt는 prompt speech와 incorporate text로부터 fine-grained prompt duration을 추출하도록 함
  • 논문 (ACL 2024) : Paper Link

1. Introduction

  • 대부분의 text-to-speech (TTS) 모델은 수백시간의 dataset으로 training 되고 추론에 적합한 추가적인 fine-tuning이 필요하므로 time-consuming 하고 user-friendly 하지 않음
    • 한편으로 추론 시간을 줄이기 위해 VALL-E, NaturalSpeech 등은 zero-shot capability를 기반으로 few-second voice만으로 unseen speaker에 대한 cloning을 도입함
      - BUT, 해당 모델들 역시 대규모의 cloud를 기반으로 하므로 model parameter나 추론 속도 측면에서 근본적인 해결책은 아님
    • 따라서 보다 user-friendly한 mobile device에서 zero-shot TTS 모델을 활용하기 위해서는 다음의 조건들을 만족해야 함
      1. Fast
        - 동일한 text에 대해 single mobile device에서 TTS를 수행하면 A100 GPU 보다 8~10배의 RTF 저하가 나타나므로, zero-shot TTS의 근본적인 추론 속도를 향상해야 함
      2. Lightweight
        - Mobile, edge-device에 배포하기 위해서는 model size와 runtime memory footprint가 최소화되어야 함
      3. High Similarity and Diversity 
        - Zero-shot TTS는 동일한 text에 대해 다양한 음성을 생성하고 few-second prompt 만으로도 timbre와 prosody를 clone 할 수 있어야 함
      4. High Quality
        - Naturalness를 향상하기 위해서는 adjacent harmonics 간의 frequency bin detail을 반영하고 강력한 duration modeling이 가능해야 함
      5. Robustness
        - Word missing이나 repeating이 없어야 함

-> 그래서 위 문제들을 해결하면서 mobile device에 적합한 zero-shot TTS 모델인 MobileSpeech를 제안

 

  • MobileSpeech
    • FastSpeech2 framework와 mask generation module을 기반으로 speech의 discrete codec architecture를 고려한 Speech Mask Decoder (SMD) module을 설계
    • 추가적으로 high similarity, high quality, low latency를 달성하기 위한 speaker prompt module을 도입

< Overall of MobileSpeech >

  • Mobile device에 배포 가능한 zero-shot TTS 모델
  • Discrete speech codec의 hierarchical token structure에 기반한 SMD module과 high quality generation을 위한 speaker prompt module을 채택
  • 결과적으로 mobile device에서 빠른 latency와 우수한 합성 품질을 달성

2. Method

- Overall

  • MobileSpeech는 아래 그림과 같이 FastSpeech2를 기반으로 구성됨
    • 먼저 input text는 phoneme sequence로 처리되어 text encoder를 통해 target text representation을 얻음
      - 한편으로 speech prompt는 EnCodec에 기반한 prompt encoder를 통해 prompt codec acouostic token의 channel dimension을 1-dimension으로 compress 함
    • 이후 prompt codec acoustic token에서 fine-grained prompt duration을 추출한 뒤 target text와 결합하고, duration prediction module과 length regularizer에 전달하여 expanded target text를 얻음
    • 다음으로 핵심 구조인 speech mask codec decoder을 통과함
      1. 이때 training 과정에서 aligned target text의 일부를 나머지 text generation을 guide 하는 prompt로 randomly select 하여 사용
      2. 특히 speech codec의 RVQ feature를 사용한 masking/parallel generation을 기반으로 multi-channel training과 priority training, text에 의존하여 acoustic token을 생성하도록 함
    • 최종적으로 acoustic token은 pre-trained codec tokenizer인 Vocos를 사용하여 speech output으로 변환됨

Overall of MobileSpeech

- Speech Codec Mask Decoder

  • Paired text-speech data $\{X, Y\}$가 있다고 하자
    • $X=\{x_{1}, x_{2}, x_{3},...,x_{T}\}$ : aligned text, $Y$ : pre-trained discrete codec encoder (EnCodec)으로 얻어지는 speech representation
      - 이때 $Y=C_{1:T, 1:N} \in \mathbb{R}^{T\times N}$을 text length와 동일한 downsampled utterance length로 취급함
      - $N$ : frame의 channel 수
    • 그러면 각 acoustic code matrix row-vector는 $C_{t,:}$의 frame $t$에 대한 8개의 code를 represent 하고, 각 acoustic code matrix의 column-vector $C_{:,j}$는 $j$-th codebook의 code sequence를 의미함
      - $j\in \{1,2,...,N\}$
    • 한편 real-world scenario에서는 prompt text를 얻기 어려우므로, MobileSpeech에서는 VALL-E와 달리 target speech를 guide 하기 위해 text-agnostic speech prompt를 도입함
      1. 구체적으로 time length $T$의 sequence에 대해 length가 $k$인 segment를 randomly extract 하여 arbitrary length의 prompt를 simulate 함
      2. 이때 $k$는 다음 range에 속함:
        (Eq. 1) $\frac{T}{3}\leq k \leq \frac{2\times T}{3}$
      3. Split point $k$가 select 되면, 해당하는 prompt speech $Y_{prompt}$와 target text를 얻을 수 있음:
        (Eq. 2) $Y_{prompt}=C_{1:k,1:N},\,\, X_{target}=X_{k:T}$
      4. 결과적으로 Speech Codec Mask Decoder (SMD) module의 objective는 다음의 conditional probability function을 최대화하는 것이 됨:
        (Eq. 3) $P(C_{k:T, 1:N}|C_{1:k, 1:N},X_{k:T};\theta)$
  • RVQ-based speech discretization token을 사용하면 finer RVQ-level의 token이 perceptual quality에 less contribute 하는 hierarchical token structure가 유도됨
    • 이를 통해 token sequence의 joint distribution을 효과적으로 factorization 하고 approximation 할 수 있음
    • 따라서 MobileSpeech는 generation process를 first channel generation과 remaining channel generation의 두 부분으로 나누어서 수행함:
      (Eq. 4) $P(C_{k:T,1:N}|C_{1:k,1:N},X_{k:T};\theta)=P(C_{k;T,1}|C_{1:k,1:N},X_{k:T};\theta)\times \prod_{j=2}^{N}P(C_{k:T,j}|C_{1:k,1:N},X_{k:T};\theta)$
    • 먼저 first channel $P(C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)$를 생성하기 위해 mask-based generative model을 parallel decoder로 채택함
      1. 이때 codec level $i$에 대한 cosine schedule에 따라 mask $M_{i}\in\{0,1\}^{T}$를 sampling 함
        - 즉, $u\sim \mathcal{U}\left[0,\frac{\pi}{2}\right]$에서 masking ratio $p=\cos(u)$를 sampling 한 다음, mask $M_{i}\sim \text{Bernoulli}(p)$를 얻음
      2. $M_{i}$을 $i$-th level에서 mask 되는 portion, $\bar{M}_{i}$를 $i$i-th level에서 unmask 된 portion이라고 하면, 해당 예측은 prompt speech와 target text의 concatenation과 first channel의 unmasked portion으로 refine 됨:
        (Eq. 5) $P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T},\bar{M}_{1}C_{k:T,1};\theta)$
  • 추론 시에는 text에서 first-layer discrete token이 직접 얻어지므로, training 중에 masked environment를 simulation 하기 위해서는 higher-confidence token을 iteratively select 하는 multiple iteration이 필요함
    • 이때 iteration 수를 줄이기 위해 논문은 training process에서 certain probability를 통해 first channel의 acoustic token을 completely mask 함
      - 특히 first token masking은 모델을 easier-to-harder instance로 생성되도록 gudie 하므로 upper limit를 향상함
    • 결과적으로 아래와 같이 probability parameter $\alpha$를 통해 first channel generation을 control 함:
      (Eq. 6) $P(C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)=\alpha P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T},\bar{M}_{1}C_{k:T,1};\theta)+(1-\alpha)P(M_{1}C_{k:T,1}|C_{1:k,1:N},X_{k:T};\theta)$
    • 한편으로 training 중에 remaining channel을 생성하기 위해, random selection process에 weighting mechanism을 incorporate 하여 channel importance가 layer-by-layer로 decrease 하도록 함
      1. 이를 위해 논문은 [Algorithm 1]과 같은 $P_{rank}$ mechanism을 채택
      2. 즉, $j$-th channel의 acoustic token을 예측할 때, $j$-th layer $\bar{M}_{j}$의 unmasked portion과 $j$-th layer 이전의 모든 acoustic token을 사용함:
        (Eq. 7) $P(M_{j}C_{k:T,j}|C_{1:k,1:N},X_{k:T},C_{k:T,<j},\bar{M}_{j}C_{k:T,j};\theta)$

- Speaker Prompt

  • MobileSpeech는 encoder-decoder arhcitecture로 구성되고, prompt speech의 prosodic/timbre information을 capture 할 수 있도록 다양한 prompt strategy를 도입함
    • 먼저 duration encoder는 Q-K-V attention layer를 활용하여 다양한 information을 integrate 함
      1. 이를 위해 prompt acoustic token에서 fine-grained prompt duration을 추출하고 이를 positional information과 함께 prompt duration encoder에 전달함
      2. 이후 prompt duration은 target text duration 예측을 guide 하는 데 사용됨
        - 이를 통해 disfluent speech phenomena의 발생을 개선할 수 있음
    • 구조적으로 duration extractor와 duration predictor는 동일한 구조를 따름
      1. 여기서 text는 normalization layer를 통과한 다음 query에 mapping 되고,
      2. Query는 prompt acoustic/prompt duration과 함께 Q-K-V attention layer와 convolutional layer를 통해 latent feature를 얻음
      3. 이후 latent feature는 output result를 생성하기 위해 residual connection을 통해 text에 더해짐
    • Decoder에서는 (Eq. 1), (Eq. 2)와 같이 training 중에 target text와 speech에서 length $k$의 sequence를 randomly select 하여 text-independent speech prompt를 형성함
      - 이때 model의 robustness를 위해 encoder의 speaker prompt와 decoder의 speaker prompt는 서로 다른 sequence를 사용함
    • Speech Mask Codec Decoder (SMD)에서, UniCATS와 같이 모든 input prompt acoustic은 unmask 하고 acoustic token의 original feature를 preserve 함
      • 추가적으로 SMD module에 prompt encoder를 통해 acoustic token을 전달하고, target text에 대한 cross-attention을 적용
      • 이를 통해 weak condition token으로써 prompt acoustic token의 information을 반영할 수 있도록 하여 contextual capability를 향상

(파랑) Prompt Duration Extractor, (초록) Duration Predictor

- Train and Inference

  • Training 중에 duration predictor와 duration extractor의 loss $\mathcal{L}_{dur}, \mathcal{L}_{promptdur}$는 Mean Squared Error (MSE)를 통해 최적화됨
    • 한편으로 alignment accuracy를 향상하고 input/output 간의 information gap을 줄이기 위해 Montreal Forced Alignment (MFA)를 통해 phoneme duration을 추출함
      - 이때 duration은 logarithmic domain에서 예측되어 Gaussian distribution을 유도해 training을 용이하게 함
    • SMD module은 $P_{rank}$ strategy에 따라 randomly select 된 first channel과 discrete acoustic token을 기반으로 cross-entropy loss를 적용해 최적화됨
      1. 여기서 first channel과 $j$-th channel의 loss를 각각 $\mathcal{L}_{smd}^{1}, \mathcal{L}_{smd}^{j}$라고 하자
      2. 그러면 $2\leq j\leq N$일 때, overall loss $\mathcal{L}$은:
        (Eq. 8) $\mathcal{L}=\mathcal{L}_{smd}^{1}+\mathcal{L}_{smd}^{j}+\mathcal{L}_{promptdur}+\mathcal{L}_{dur}$
    • 추론 시에는 prompt speech를 original text state에 incorporate 하여 discrete acoustic token을 iteratively 생성함 
    • 이때 acoustic token의 first channel을 생성하기 위해 SoundStormconfidence-based sampling scheme을 활용 
      1. 즉, multiple forward pass를 수행한 다음 각 iteration $i$마다 masked position에 대한 candidate를 sampling 함
      2. 이후 cosine schedule을 따르는 $P_{i}$에 대해 confidence score를 기준으로 $P_{i}$ candidate를 retain 함
      3. 나머지 channel에 대해서는 greedy strategy를 활용하여 highest probability를 가진 token을 directly select 함

3. Experiments

- Settings

- Results

  • 먼저 LibriTTS dataset에 대해서 MobileSpeech는 가장 우수한 합성 성능을 달성함

LibriTTS에서의 결과

  • Mandarin dataset에 대해서도 MobileSpeech가 가장 선호되는 것으로 나타남

Mandarin Dataset에서의 결과

  • Ablation Study
    • 먼저 fine-grained prompt duration을 제거하고, SMD module에서 prompt acoustic token을 input으로만 사용하는 경우를 비교해 보면
    • 정량적, 정성적 지표 모두에서 MobileSpeech의 성능이 저하되는 것으로 나타남

Ablation Study 결과 (정량적 지표)
Ablation Study 결과 (정성적 지표)

  • 추가적으로 추론 속도 측면에서, iteration 수는 RTF와 반비례하는 것으로 나타남
    - 특히, iteration 수를 늘리는 것이 반드시 성능 향상으로 이어지지는 않음

Iteration 수와 RTF 비교

 

반응형
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/12   »
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 31
Total
Today
Yesterday