3. Flow-VAE

VAE(Variational Autoencoder)

目的:還原成語音波形
VAE 有兩個部分:
  • Encoder(編碼器):把原本的音訊(或 token 對應的特徵)壓縮成一組「潛在向量」(latent vector),這個向量在高維空間裡,濃縮了聲音的所有關鍵特徵。
  • Decoder(解碼器):試圖把這個 latent 向量還原回接近原始的聲音(或特徵)。
具體來說,在 MiniMax-Speech 裡,VAE流程:
  • 預訓練時,讓 Encoder 學會把真實的語音波形→壓縮成潛在向量(z)。
  • Decoder 學會把 z 盡量還原成「真實的語音波形」。
  • 訓練時,模型要求 Decoder 的還原結果要和原本的聲音「盡量接近」。
  • 為了讓這個 latent 空間好用,VAE 會對這個向量空間做「分佈限制」(要求符合一個標準常態分佈),這是 VAE 最大的數學特徵。

在 TTS 生成時:

  • AR Transformer 輸出一串 audio token。
  • 每個 token 查表變成 embedding,這些 embedding 拼起來(或組成序列),視為一組「壓縮描述的聲音資訊」。
  • 這個 latent vector 送進 VAE Decoder,目標是還原成完整語音波形。

Normalizing Flow

Flow 的主要功能,是讓潛在空間(latent space)的分布更靈活、更精準
  • VAE 規定 latent z 必須是標準常態分佈,這有點「太死板」。
  • Flow 加上去,可以學會把「資料真實分布」和「理想分布」(比如標準常態分佈)做更複雜的轉換(用很多可逆的函數堆疊實現)。
  • 這會讓 VAE 的 latent space 可以承載更豐富、複雜的聲音資訊,還原時更自然、變化更多。
訓練時(Training)資料流
推論時(Inference/Generation)資料流