Diffusers documentation

StableAudio3DiTModel

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

StableAudio3DiTModel

用于音频生成的整流流速度预测扩散 Transformer(DiT),应用于 Stable Audio 3。

每个 StableAudio3DiTBlock 执行以下操作:

  1. 自注意力 — 带有旋转位置编码(RoPE)的微分多头注意力。
  2. 交叉注意力 — 关注来自 T5Gemma 文本编码器的 token 序列。
  3. 前馈 — SwiGLU 投影。

该模型以 timestep(指数傅里叶特征 → 线性投影)和 全局条件向量(来自 StableAudio3DurationEmbedder 的时长嵌入)作为条件输入。

StableAudio3DiTModel

class diffusers.StableAudio3DiTModel

< >

( io_channels: int = 256patch_size: int = 1embed_dim: int = 1536depth: int = 24num_heads: int = 24cond_token_dim: int = 768global_cond_dim: int = 768local_add_cond_dim: int = 257timestep_features_dim: int = 256ff_mult: float = 4.0num_memory_tokens: int = 64use_differential_attention: bool = True )

参数

  • io_channels (int,默认为 256) — 潜在通道的数量。
  • patch_size (int,默认为 1) — 在 Transformer 之前应用的时间维度 patch 大小。
  • embed_dim (int,默认为 1536) — Transformer 隐藏维度。
  • depth (int,默认为 24) — StableAudio3DiTBlock 层的数量。
  • num_heads (int,默认为 24) — 注意力头的数量。
  • cond_token_dim (int,默认为 768) — 交叉注意力上下文令牌的维度。
  • global_cond_dim (int,默认为 768) — 全局时长嵌入的维度。
  • local_add_cond_dim (int,默认为 257) — 局部加性(inpaint)张量的通道数。
  • timestep_features_dim (int,默认为 256) — 傅里叶时间步特征的输出维度。
  • ff_mult (float,默认值为 4.0) — SwiGLU 前馈扩展因子。
  • num_memory_tokens (int,默认为 64) — 可学习记忆 token 的数量。
  • use_differential_attention(bool,默认为 True)— 启用差分自注意力/交叉注意力。

Stable Audio 3 的 Diffusion Transformer (DiT) 骨干网络。

模型接收一批带噪声的音频潜变量、一个标量时间步、交叉注意力上下文(投影后的文本和时长 token)以及一个全局时长嵌入,并预测速度场(rectified-flow 目标)。

条件设置:

  • 交叉注意力上下文(encoder_hidden_states)由 to_cond_embed 进行投影。
  • 全局时长嵌入(global_hidden_states)由 to_global_embed 进行投影,与时间步嵌入相加,然后通过 global_cond_embedder 扩展为每个块的 AdaLN 调制。
  • local_add_cond(inpainting)通过 to_local_embed 按块进行投影。

num_memory_tokens 个可学习 token 会在 transformer 内部被前置到音频序列中,并在输出投影之前被移除。

forward

< >

( hidden_states: Tensortimestep: Tensorencoder_hidden_states: Tensorglobal_hidden_states: Tensorencoder_attention_mask: typing.Optional[torch.Tensor] = Nonelocal_add_cond: typing.Optional[torch.Tensor] = Nonereturn_dict: bool = True ) → StableAudio3DiTModelOutput or tuple

参数

  • hidden_states (torch.Tensor) — 带噪声的潜在音频 (batch, io_channels, T)。
  • timestep (torch.Tensor) — 扩散时间步 (batch,),取值范围为 [0, 1]。
  • encoder_hidden_states (torch.Tensor) — 交叉注意力上下文 (batch, T_ctx, cond_token_dim)。
  • global_hidden_states (torch.Tensor) — 全局时长嵌入 (batch, global_cond_dim)。
  • encoder_attention_mask (torch.Tensor,可选) — 布尔掩码 (batch, T_ctx),True 表示有效。
  • local_add_cond (torch.Tensor, 可选) — 局部加性(inpaint)条件 (batch, local_add_cond_dim, T)。
  • return_dict (bool,默认为 True) — 是否返回 StableAudio3DiTModelOutput。

返回值

StableAudio3DiTModelOutput 或 tuple

预测的速度场,形状与 hidden_states 相同。

StableAudio3DiTBlock

class diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock

< >

( dim: intcontext_dim: intdim_heads: int = 64use_differential: bool = Trueff_mult: float = 4.0local_add_cond_dim: int = 257 )

单个 SA3 DiT 变换器块。

操作顺序:

  1. AdaLN 调制自注意力(部分 RoPE,RMS QK 归一化)
  2. 针对文本/时长上下文的交叉注意力(普通 RMS 前置归一化)
  3. AdaLN 调制的 SwiGLU 前馈

AdaLN 调制为 to_scale_shift_gate + global_modulation,拆分为六个块 (scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff)。每个门控分支都会乘以 sigmoid(1 - gate) 进行缩放。交叉注意力不进行 AdaLN 调制,这与参考实现一致(cross_attend_norm 是普通的 RMS 归一化)。

当提供 local_seq(用于图像修复)时,它会通过 to_local_embed 按块进行投影,并添加到交叉注意力之后(前馈层之前)残差流中的音频位置,以与参考实现保持一致。

StableAudio3DiTModelOutput

class diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput

< >

( sample: Tensor )

参数

  • sample (torch.Tensor) — 预测的速度场,其形状与输入 hidden_states 相同。

StableAudio3DiTModel 的输出。

Update on GitHub