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)資料流