Diffusers documentation
StableAudio3DiTModel
StableAudio3DiTModel
Diffusion Transformer (DiT) prediksi kecepatan rectified-flow untuk generasi audio, digunakan dalam Stable Audio 3.
Setiap StableAudio3DiTBlock melakukan:
- Self-attention — perhatian multi-kepala diferensial dengan penanam posisi rotasi (RoPE).
- Cross-attention — memperhatikan urutan token dari pengkode teks T5Gemma.
- Feed-forward — Proyeksi SwiGLU.
Model dikondisikan pada timestep (fitur Fourier eksponensial → proyeksi linear) dan vektor pengkondisian global (embedding durasi dari StableAudio3DurationEmbedder).
StableAudio3DiTModel
kelas diffusers.StableAudio3DiTModel
< source >( 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 )
Parameter
- io_channels (
int, defaultnya 256) — Jumlah kanal laten. - patch_size (
int, default 1) — Ukuran patch temporal yang diterapkan sebelum transformer. - embed_dim (
int, default 1536) — Dimensi tersembunyi Transformer. - depth (
int, defaultnya 24) — Jumlah lapisanStableAudio3DiTBlock. - num_heads (
int, defaultnya 24) — Jumlah kepala perhatian. - cond_token_dim (
int, default 768) — Dimensi token konteks cross-attention. - global_cond_dim (
int, defaultnya 768) — Dimensi dari embedding durasi global. - local_add_cond_dim (
int, default 257) — Jumlah channel dari tensor local-additive (inpaint). - timestep_features_dim (
int, default 256) — Dimensi output dari fitur timestep Fourier. - ff_mult (
float, default 4.0) — Faktor ekspansi feed-forward SwiGLU. - num_memory_tokens (
int, defaultnya 64) — Jumlah token memori yang dapat dipelajari. - use_differential_attention (
bool, defaultnyaTrue) — Aktifkan differential self/cross attention.
Backbone Diffusion Transformer (DiT) dari Stable Audio 3.
Model menerima batch dari latens audio berisik, timestep skalar, konteks cross-attention (token teks dan durasi yang diproyeksikan), serta embedding durasi global, dan memprediksi medan kecepatan (objektif rectified-flow).
Kondisioning:
- Konteks cross-attention (
encoder_hidden_states) diproyeksikan olehto_cond_embed. - Embedding durasi global (
global_hidden_states) diproyeksikan olehto_global_embed, dijumlahkan dengan embedding timestep, kemudian diperluas olehglobal_cond_embeddermenjadi modulasi AdaLN per blok. local_add_cond(inpainting) diproyeksikan per blok olehto_local_embed.
num_memory_tokens token yang dapat dipelajari ditambahkan di awal urutan audio di dalam transformer dan dihapus sebelum proyeksi output.
forward
< source >( 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
Parameter
- hidden_states (
torch.Tensor) — Laten audio berisik(batch, io_channels, T). - timestep (
torch.Tensor) — Timestep difusi(batch,)dalam[0, 1]. - encoder_hidden_states (
torch.Tensor) — Konteks cross-attention(batch, T_ctx, cond_token_dim). - global_hidden_states (
torch.Tensor) — Embedding durasi global(batch, global_cond_dim). - encoder_attention_mask (
torch.Tensor, opsional) — Mask bool(batch, T_ctx),True= valid. - local_add_cond (
torch.Tensor, opsional) — Kondisioning aditif lokal (inpaint)(batch, local_add_cond_dim, T). - return_dict (
bool, defaultnyaTrue) — Apakah akan mengembalikanStableAudio3DiTModelOutput.
Mengembalikan
StableAudio3DiTModelOutput atau tuple
medan kecepatan yang diprediksi, dengan bentuk yang sama seperti hidden_states.
StableAudio3DiTBlock
kelas diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock
< source >( dim: intcontext_dim: intdim_heads: int = 64use_differential: bool = Trueff_mult: float = 4.0local_add_cond_dim: int = 257 )
Blok transformer SA3 DiT tunggal.
Urutan operasi:
- Self-attention yang dimodulasi AdaLN (RoPE parsial, RMS QK-norm)
- Cross-attention ke konteks teks/durasi (pre-norm RMS polos)
- Feed-forward SwiGLU yang dimodulasi oleh AdaLN
Modulasi AdaLN adalah to_scale_shift_gate + global_modulation, yang dipecah menjadi enam bagian (scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff). Setiap cabang yang diberi gerbang (gated) diskalakan dengan sigmoid(1 - gate). Cross-attention tidak dimodulasi dengan AdaLN, sesuai dengan referensi (cross_attend_norm adalah RMS norm biasa).
Ketika local_seq diberikan (inpainting), ia diproyeksikan per blok oleh to_local_embed dan ditambahkan ke posisi audio dari residual stream setelah cross-attention (dan sebelum feed-forward), sesuai dengan referensi.
StableAudio3DiTModelOutput
kelas diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput
< source >( sample: Tensor )
Output dari StableAudio3DiTModel.