티스토리 뷰

반응형

Personalized Lightweight Text-to-Speech: Voice Cloning with Adpative Structured Pruning


  • Personalized Text-to-Speech를 위해서는 많은 양의 recording과 큰 규모의 모델을 필요로 하므로 mobile device 배포에 적합하지 않음
  • 이를 해결하기 위해 일반적으로 pre-train 된 Text-to-Speech 모델을 fine-tuning 하는 voice cloning을 활용함
    - 여전히 pre-train된 대규모 모델에 기반을 두고 있어 한계가 있음
  • Adaptive Structured Pruning
    • Trainable structured pruning을 voice cloning에 적용
    • Voice-cloning data로 structured pruning mask를 학습하여 각 target speaker에 대한 unique 한 pruned 모델을 얻음
  • 논문 (ICASSP 2023) : Paper Link

1. Introduction

  • End-to-End Text-to-Speech (TTS)는 꾸준히 연구되고 있지만, 그에 대한 customization은 충분한 연구가 부족함
    • 특히 고품질의 single-speaker end-to-end TTS 시스템은 학습을 위해 많은 양의 data와 큰 규모의 모델을 필요로 함
      - 몇 시간 이상의 음성 recording과 학습 시간을 요구하기 때문에 실용적이지 않음
    • 따라서 personalized TTS는 mobile device에서의 활용을 궁극적인 목표로 함
      - 제한된 학습 data, 빠른 학습 속도, 작은 모델 size의 3가지 측면을 모두 만족해야 함
    • BUT, 제한된 학습 data를 활용해 scratch로 모델을 학습하는 것은 어려움
      - 고품질 합성을 위해 transfer learning을 주로 활용
      - 이렇게 unseen speaker에 대해 학습된 TTS 모델을 transfer 하는 것을 Voice Cloning이라고 함
  • TTS 모델 학습 외에도 personalized TTS 작업은 계산 비용, 속도 측면에서 모델 size를 줄이는 것도 중요
    • LightSpeech의 경우, Neural Architecture Search를 활용하여 제한된 환경 내에서 최적의 모델 size를 결정
    • Unstructured pruning method를 활용하여 모델 size를 줄일 수도 있음
      - 이 경우 sparse matrix 계산이 까다롭다는 문제가 있음

-> 그래서 personalized TTS의 voice cloning 작업을 경량화하기 위해 learnable structured pruning method를 도입

 

  • Adaptive Structured Pruning
    • Unstructured pruning과 달리 각 weight matrix의 channel을 제거하여 sparse matrix 보다 더 작은 weight matrix를 생성
      - 아래 그림과 같이 structured pruning은 prune 되지 않은 파란색 부분을 더 작은 matrix로 연결할 수 있기 때문
      - 결과적으로 matrix 계산을 가속화하고 계산 비용을 줄일 수 있음
    • Pruning 작업은 weight magnitude와 같은 pruning parameter에 의존
      - 적절한 channel pruning을 위한 learnable mask를 도입 
      - 각 target speaker에 대한 personalized pruning이 가능

< Overall of This Paper >

  • Voice cloning을 위해 structured pruning을 도입
  • Few-shot data만 사용하여 learnable pruning mask를 학습 

Structured Pruning과 Unstructured Pruning의 차이

2. Background

  • 본 논문은 pruning을 적용하는 TTS 모델로써 FastSpeech2를 활용

- Voice Cloning

  • Voice cloning은 few-shot dataset을 통해 target speaker의 음성에 대한 TTS 모델을 생성
    • 이때, 제한된 data를 활용해 scratch로 학습하는 것은 overfitting 및 합성 품질을 저해함 
    • 결과적으로 pre-train 된 multi-speaker TTS 모델을 활용해 fine-tuning 하는 것이 선호
      - Fine-tuning 가속화를 위해 meta-learning 등의 방법을 활용할 수 있음

- Transformer Block

  • FastSpeech2는 encoder, decoder, variance adaptor 등으로 구성
    • Encoder와 Decoder는 transformer block을 stack 하여 구성되고, variance adpator는 CNN layer를 활용함
      - 각 transformer block은 Multi-Head Self-Attention (MHA) layer와 Feed-Forward (FFN) layer를 가짐
    • 이때 input XRL×d를 사용하여 self-attention layer를 공식화하면:
      SelfAtt(WQ,WK,WV,X)=softmax(XWQWTKXTdk)XWV
      - L : input X의 length, d : input X의 hidden dimension
      - dk : self-attention layer의 hidden dimension
      - WQ,WK,WVRd×dk : 각각 query, key, value matrix
    • Input X에 대해 Nh개의 head를 가진 MHA layer의 output은:
      MHA(X)=Nhi=1SelfAtt(W(i)Q,W(i)K,W(i)V,X)W(i)O
      - WORdk×d : output matrix
    • Up-projection과 down-projection layer를 포함하는 FFN layer는:
      FFN(X)=ReLU(XWU)WD
      - WURd×df,WDRdf×d : 각각 up/down projection
    • 결과적으로 transformer block의 output은:
      X=LN(MHA(X)+X)
      TransformerBlock(X)=LN(FFN(X)+X)
      - LN : layer norm

- Structured Pruning

  • Unstructured pruning은 weight matrix의 element와 같은 개별 model parameter를 선택하여 제거
  • Structured pruning은 각 layer의 output에서 제거할 특정 neuron을 선정

Structured Pruning

- Pruning with L0 Regularization

  • 대부분의 pruning method는 parameter magnitude와 같은 criteria를 기반으로 binary pruning mask를 결정함
    • BUT, 이러한 criteria는 target speaker에 대한 personalized pruning에 적합하지 않음
    • 이를 위해 binary pruning mask에 L0 norm을 추가
      - Discrete binary mask는 non-differentiable 하기 때문에, hard-concrete 분포를 활용하여 continuous binary mask로 변환하고 trainable 하게 만듦
      - 이때, regularization term은 모든 mask에 대한 L1 norm과 같음
    • 아래의 hard-concrete 분포에서 learnable mask z를 sampling 하면:
      (Eq.1)
      u=U(0,1)
      s=Sigmoid(logulog(1u)+logαβ)
      z=min(1,max(0,γ,+s(ηγ)))
      - u : uniform 분포 U(0,1)에서 sampling 된 random variable
      - γ0,η1 : sigmoid function의 output interval을 (0,1)에서 (γ,η)로 조정
      - β : function의 steepness를 조절
    • 이때, 주요 learnable masking parameter는 Bernoulli 분포에서 sampling 되는 z의 logit인 logα
  • Weight matrix WRd1×d2에 대해 weight pruning을 수행하기 위해서는,
    • 연관된 learnable mask zRd1×d2를 생성해야 함
      1. Structured learning을 사용하기 위해, 해당 mask는 2개의 learnable masking parameter α1Rd1, α2Rd2가 필요
        - 해당 parameter는 (Eq.1)을 사용하여 input dimension mask z1과 outptu dimension mask z2를 생성
      2. 이후 최종 maks z=z1zT2를 얻고,
      3. 이로부터 pruned weight matrix W=Wz를 얻음
        - : element-wise dot product

3. Method

- Structured Pruning FastSpeech2

  • Data에 의해서 결정되는 input/output dimension을 제외한 FastSpeech2의 모든 dimension은 prunable 함
    • Prunable dimension의 목록은:
      1. 모델 d에 영향을 주는 hidden dimension들
        - Encoder/Decoder의 positional encoding
        - 모든 embedding dimension

        - MHA layer의 W(i)Q,W(i)K,W(i)V,W(i)O
        - FFN layer의 WU,WD
        - Layer noramlization의 scale, shift
        - Variance adaptor, Output linear layer의 input channel
      2. W(i)Q,W(i)K,W(i)V,W(i)O에 영향을 주는 MHA layer의 Nh,d(i)k
      3. WU,WD에 영향을 주는 FFN layer의 d(i)f
      4. Variance adaptor와 post-net의 hidden dimension
    • Pruning을 위해 위 목록들의 각 dimension에 대해 learnable masking parameter를 생성
      - 모델 dimension dαd로 masking
      - MHA dimension d(i)kα(i)k로 masking
      - FFN dimension d(i)fα(i)f로 masking
      - MHA head Nhαh로 masking
    • 학습 시, input/output connection을 기반으로 각 TTS parameter에 대한 mask z를 생성
      - d는 residual connection으로 인해 많은 parameter에 영향을 주므로, masking parameter αd에 의해 생성된 zd를 기반으로 해당 parameter를 z로 masking

- Optimizing Adaptive Structured Pruning Mask

  • FastSpeech2의 모든 parameter에 대해 pruning mask z를 생성하기 위해, learnable masking paremeter α를 도입
    • 이후 모든 mask에 대한 L1 norm을 계산하여 regularization term으로 사용:
      Lreg=z||z||1
    • 학습 시작 시, sampling 된 z가 1에 가까워지도록 모든 α값을 큰 값으로 초기화함
    • 결과적으로 voice-cloning 모델 pruning에 대한 최종적인 loss:
      Ltotal=LTTS+1λLreg=LTTS+1λz||z||1
      - λ : regularization에 대한 weighting factor
      - 논문에서는 λTTS parameter의 총 개수로 설정하여, regularization term을 모델의 density로 만듦

- Inference

  • 추론 시에는 (Eq.1)를 사용하여 continuous pruning maks z를 생성하는 과정을 생략
    • 대신 각 logα로부터 binary pruning mask를 직접 결정
      - 여기서 Sigmoid((logα)/β)는 Bernoulli 분포를 나타냄
      - 이때, 경험적으로 대부분의 확률은 0 또는 1에 가까운 값을 가지고 전체의 2%만이 (0.05,0.95) 범위에 속함
      -> 따라서, Sigmoid((logα)/β)=0.5를 threshold로 사용
    • 결과적으로 z의 각 element zi와 corresponding element αi에 대해, 아래의 condition을 계산할 수 있음:
      zi={0,Sigmoid((logαi)/β)<0.51,Sigmoid((logαi)/β)0.5

4. Experiments

- Settings

  • Dataset : LibriTTS, VCTK
  • Vocoder : MelGAN
  • FastSpeech2를 기반으로 8-shot voice cloning을 목표로 하여 fine-tuning과 pruning을 적용

- Results

  • GT : ground-truth, GT + Vocoder : ground-truth with Vocoder
  • FT : fine-tuning, Prune : pruning with voice-cloning data, Prune' : pruning with pre-training data
    • Pre-training data만 사용하여 pruning 된 Prune'의 경우 낮은 성능을 보임
    • Voice cloning을 적용한 모델들은 높은 naturalness를 보임

성능 비교 결과

  • Speaker classifier를 통한 합성 sample에서의 speaker 식별 정확도를 비교해 보면,
    • Fine-tuning 모델은 높은 speaker, accent accuracy를 보임
      - 압축되지 않은 voice cloning 모델의 경우, 최고의 성능을 보이지 못함
    • Pruning 이후 fine-tuning을 수행했을 때, 가장 높은 accuracy와 두 번째로 높은 압축률 (sparsity)를 달성
      - 결과적으로 pruning 후 fine-tuning이 voice cloning을 위한 가장 안정적인 파이프라인 

Speaker Classifier를 통한 비교

- Other Pruning Advantages

  • Pruned 모델은 추론 속도를 2배로 향상하고 GPU 사용량을 절반으로 줄일 수 있음
    • Distillation과 비교했을 때, pruning은 scratch 학습이 필요하지 않으므로 학습 시간 단축이 가능
    • 추가적으로 pruning은 pre-train 된 고품질 TTS 모델을 활용해 pruning process 전반에 걸쳐 품질 유지가 가능

 

반응형
최근에 올라온 글
최근에 달린 댓글
«   2025/04   »
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