0%

Amadeus

Amadeus

一、执行流程

  1. 语音转文本:

    • 语音情绪识别:emotion2vec
    • 语音识别:Whisper
  2. 聊天交互:Qwen2

  3. 文本转语音:

    • 文本情绪识别:BERT
    • 语音生成:GPT-SoVITS
  4. 表现形式:2d/3d模型

一、 VITS

1. VAE

VAE 模型基本原理简单介绍_smile-yan的博客-CSDN博客_vae模型

  • KL 散度

当我们想使用简单分布近似所观测到的数据分布时,KL 散度可以用于衡量在近似的过程中损失了多少信息。因此我们可以使用 KL 散度作为损失函数,从而学习到复杂数据的近似分布。
$$
D_{KL}(p||q) = \sum^N_{i=1}p(x_i)(logp(x_i)-logq(x_i))
$$
==KL 散度不能用于衡量两个分布之间的距离,因为 KL 散度不是对称的 ($$D_{KL}(p||q) != D_{KL}(q||p)$$)==

  • 损失函数

$$
L(θ,φ;x,z) = E_{z \sim q_φ(x|z)[logp_θ(x|z)]} + D_{KL}(q_φ(z|x)||p(z))\
L(θ,φ;x,z) = E_q[log(Decoder的输出分布)] + D_{KL}(Encoder的输出分布||预设的正太分布)\
L(θ,φ;x,z) = \frac{1}{m}\sum^m_{i=1}(x_i-\hat{x_i})^2 + D_{KL}(q_φ(z|x)||p(z))
$$

后半部分的KL 散度控制 Encoder 输出类正太分布,而前半部分的期望则是重构损失,用于衡量输入与输出的差异。在实际的代码编写中,一般使用MSE代替左半部分。