티스토리 뷰

반응형

SpecGrad: Diffusion Probabilistic Model based Neural Vocoder with Adaptive Noise Spectral Shaping


  • Denoising Diffusion Probabilistic Model을 사용하는 neural vocoder는 주어진 acoustic feature에 대한 diffusion noise 분포를 조절함
  • SpecGrad
    • Time-varying spectral envelope가 conditioning log mel-spectrogram에 가까워지도록 diffusion noise를 조절하는 neural vocoder
    • Time-varying filter를 통한 high-frequency band에서의 품질 상승
  • 논문 (INTERSPEECH 2022) : Paper Link

1. Introduction

  • Neural vocoder는 acoustic feature가 주어졌을 때, 그에 맞는 speech waveform을 생성하는 것을 목표로 함
    • 특히 vocoder는 Text-to-Speech (TTS), Speech Enhancement의 필수 요소로써 낮은 계산 비용으로 high-fidelity의 waveform을 합성하는 것이 중요함
    • Denoising Diffusion Probabilistic Model (DDPM)은 높은 합성 품질과 제어 가능한 계산 비용으로 주목을 받고 있음
    • DDPM은 denoising process로 random signal을 speech waveform으로 반복적으로 변환하는 방식을 활용
      - BUT, DDPM은 high-fidelity의 waveform을 얻으려면 많은 반복을 필요로 함
      -> 따라서, 합성 품질을 유지하면서 반복 수를 줄이기 위해 noise schedule을 주로 활용
  • PriorGrad는 acoustic model의 prior 분포를 활용하여 DDPM vocoder를 개선
    • Conditioning log mel-spectrogram을 기반으로 diffusion noise를 조절하는 방식
      - 이때 diffusion 분포는 대각 성분이 mel-spectrogram의 frame-wise energy인 대각 공분산 matrix를 사용하는 Gaussian 분포
    • 해당 분포는 대각 공분산 matrix가 time-domain에서 waveform의 power를 나타내므로,
      - 결과적으로 각 sample point에 대한 noise schedule의 scaling으로 고려할 수 있음

-> 그래서 conditioning log mel-spectrogram에 diffusion noise의 spectral envelope를 적합하는 SpecGrad를 제안

 

  • SpecGrad
    • DDPM의 diffusion noise 생성과 cost function에서 사용되는 decomposed 공분산 matrix로부터,
    • Time-Frequency (T-F) domain에서 time-varying filtering을 적용
    • 이를 통해 diffusion noise의 spectral envelope에 대한 공분산 matrix를 설계

< Overall of SpecGrad >

  • Spectral envelope가 conditioning log mel-spectrogram에 가까워지도록 diffusion noise를 조절하는 neural vocoder
  • Time-varying filter를 도입하여 spectral envelope의 공분산 matrix를 설계
  • 결과적으로 기존 DDPM 기반 neural vocoder 보다 우수한 합성 품질을 달성

SpecGrad와 다른 DDPM-based Vocoder의 차이점

2. Conventional Methods

- DDPM-based Neural Vocoder

  • DD-point speech waveform x0RD가 conditioning log mel-spectrogram c=(c1,...,cK)RFK로부터 생성된다고 하자
    • 이때 ckRFk-th time에 대한 F-point log mel-spectrogram이고, K는 time frame의 수
      - 이때 x0q(x0|c)로 나타내는 확률 밀도 함수(PDF)를 찾는 것을 목표로 함
    • 따라서, DDPM-based neural vocoderq(xT)=N(0,I)에서 시작하여 learned Gaussian transition을 가지는 xtRD Markov chain을 활용하는 latent variable model:
      (Eq. 1) q(x0|c)=RDTq(xT)Tt=1q(xt1|xt,c)dx1dxT

      - 이때, q(xt1|xt,c)를 모델링하기 위해서, x0xT에서 xt로부터 xt1의 recursive sampling을 통해 얻어짐
  • DDPM에서 xt1p(xt|xt1)=N(1βtxt1,βtI)에 의해 주어지는 noise schedule {β1,...,βT}에 따라 Gaussian noise를 점진적으로 추가하는 diffusion process에 의해 생성
    • 이때, 임의의 time step t에서 xt를 아래 식을 통해 closed form으로 sampling 가능:
      (Eq. 2) xt=ˉαtx0+1¯αtϵ
      - αt=1βt, ˉαt=ts=1αs, ϵN(0,I)
    • 여기서 DDPM-based neural vocoder는 xt에서 ϵϵ=Fθ(xt,c,βt)로 예측하는 parameter θ를 가지는 Deep Neural Network (DNN) F를 사용
    • 만약 βt가 충분히 작다면, q(xt1|xt,c)N(μt,γtI)로 주어지고, 이때 μt는: 
      (Eq. 3) μt=1αt(xt1αt1¯αtFθ(xt,c,βt))
      - γt=1ˉαt11ˉαtβt
    • 이후 DNN F는 Evidence Lower BOund (ELBO)를 최대화함으로써 학습될 수 있지만, 대부분의 DDPM-neural vocoder는 단순화된 loss를 사용
      - 대표적으로 WaveGrad는 1 norm을 사용:
      (Eq. 4) LWG=||ϵFθ(xt,c,βt)||1
      - ||||p : p norm

- PriorGrad

  • PriorGrad는 adaptive prior N(0,Σ)를 도입한 DDPM-based neural vocoder
    • 이때 Σ는 conditioning log mel-spectrogram c로부터 계산됨
    • PriorGrad의 특징
      1. 모든 diffusion step에 대해서 ϵN(0,I)로부터 sampling 됨
      2. Σ에 따른 Mahalanobis distance를 loss로 사용:
        (Eq. 5) LPG=(ϵFθ(xt,c,βt))TΣ1(ϵFθ(xt,c,βt))
        - T : transpose
    • PriorGrad에서 공분산 matrix는 Σ=diag[(σ21,σ22,...,σ2D)]으로 나타냄
      - σ2d : ck의 normalized frame-wise energy를 interpolating 하여 계산된 d-th sample의 signal power
      - diag : 대각 성분이 input vector인 diagonal matrix

3. Proposed Method

- SpecGrad

  • PriorGrad의 성능은 공분산 matrix Σ에 의해 결정
    • 특히 PriorGrad의 ELBO는 Σx0의 공분산에 가까울수록 작아짐
    • 이러한 Σ를 얻기 위해서는 amplitude spectrum ϵx0와 유사하게 만들어야 함
      - 따라서, SpecGrad는 spectral envelope를 Σ에 통합하는 방식을 제안
  • Σ는 positive semi-definite이므로, Σ=LLT로 decompose 될 수 있음
    • N(0,Σ)에서 sampling은 ˜ϵN(0,I)(Eq. 5)에 따라 ϵ=L˜ϵ으로 표현할 수 있고, 이를 다시 쓰면:
      (Eq. 6) LSG=||L1(ϵFθ(xt,c,βt))||22
    • 이때 SpecGrad는 낮은 계산 비용으로 high-fidelity의 waveform을 생성하는 LRD×D을 설계하는 것을 목표로 함
    • L에 대해서 요구되는 property는:
      1. ϵ(=L˜ϵ)의 amplitude spectrum은 x0에 근사해야 함
        - ELBO를 최소화하는데 필수적이기 때문
      2. LL1간의 곱은 계산 효율적이어야 함
        - LL1이 학습과정에서 반복적으로 사용되고, 첫 번째 property로 인해 training sample x0에 의존적이기 때문
  • 위의 요구사항을 만족하기 위해, SpecGrad는 T-F domain에 time-varying filter를 적용
    • Window size N을 가지는 STFT를 NK×D의 matrix G로 표현할 때, T-F domain에서의 time-varying filter는:
      (Eq. 7) L=G+MG
      - M=diag[(m1,1,...,mN,K)]CNK×NK : filter mn,k를 정의하는 diagonal matrix
      - mn,k0 : (n,k)-th T-F bin에 곱해지는 coefficient
      - G+ : dual window를 적용한 inverse STFT의 matrix representation
    • 이를 통해 L design 문제를 filter design 문제로 recast 할 수 있음
      - 따라서 ϵ(=L˜ϵ)x0의 spectral envelope에 근사하도록 M을 설계
      - 이때, L1L1G+M1G로 근사 
    • MM1이 diagonal 하므로, L과 근사된 L1은 FFT를 사용하여 O(KNlogN) 내에 연산될 수 있음
      - 이때 K개의 FFT를 병렬로 계산할 수 있으므로, (Eq. 7)에 대한 계산 비용은 완화될 수 있음

- Implementation

  • SpecGrad는 아래의 [Alogrithm 1][Algorithm 2]에 따라 학습/추론됨
    • 이때 DDPM neural vocoder와 PriorGrad의 차이는, diffusion noise sampling G+MG˜ϵ과 loss function (Eq. 6) 뿐 임
      - 따라서 SpecGrad는 noise schedule를 활용할 수 있고, 결과적으로 SpecGrad는 WaveGrad의 추론 속도는 거의 동일
    • SpecGrad는 T-F domain filter M을 계산하기 위해, cepstrum을 통해 spectral envelope를 추정
      1. 대응하는 power spectrogram을 계산하기 위해 mel-compression matrix에 대한 pseudo-inverse를 conditioning log mel-spcetrogram c에 적용
      2. r-th order lifter를 적용하여 각 time frame에 대한 spectral envelope를 계산
        - 이때 학습과정에서 numerical stability를 위해 0.01을 추정된 envelope에 더함
      3. k-th time frame에 대한 coefficient m1,k,...,mN,k는 얻어진 envelope에 대한 minimum phase response로 계산
    • Filter M을 구성하기 위해서 다른 방법을 사용할 수도 있음
      - 다만 spectrogram을 직접 사용하는 것보다 제안된 envelope 추정을 활용하는 것이 더 만족스러운 결과를 제공함

SpecGrad의 Training Algorithm
SpecGrad의 Inference Algorithm

3. Experiments

- Settings

  • Dataset : Internal speech dataset
  • Comparisons : WaveGrad, PriorGrad
  • Inference Noise Schedule : 아래 표 참조

실험에 사용된 noise schedule

- Results

  • SpecGrad는 주관적/객관적 성능 평가에서 모두 WaveGrad, PriorGrad 보다 우수한 성능을 보임
    - 특히 noise schedule 선택에 관계없이 SpecGrad의 성능이 가장 우수함

WaveGrad의 noise schedule에 따른 합성 품질 비교
PriorGrad의 noise schedule에 따른 합성 품질 비교

  • Side-by-Side test를 수행했을 때도 마찬가지로, SpecGrad의 성능이 WaveGrad, PriorGrad보다 우수한 것으로 나타남
    - SpecGrad는 conditioning log mel-spectrogram에 따라 high-frequecny component를 줄일 수 있기 때문
    - 결과적으로 frequency가 높아질수록 추정된 noise를 제거하는 양이 적어지기 때문에 artifact 방지가 가능

Side-by-Side test 결과

- Evaluation as Speech Enhancement Backend

  • SpecGrad에 대한 robustness를 알아보기 위해, DDPM-based Vocoder를 speech enhancement의 backend로 사용
    - 결과적으로, SpecGrad의 성능이 WaveGrad, PriorGrad보다 우수하게 나타남

Speech Enhancement 환경에서의 실험 결과

 

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