# StableAudio3DiTModel

Diffusion Transformer (DiT) prediksi kecepatan rectified-flow untuk generasi audio, digunakan dalam [Stable Audio 3](https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models).

Setiap `StableAudio3DiTBlock` melakukan:

1. **Self-attention** — perhatian multi-kepala diferensial dengan penanam posisi rotasi (RoPE).
2. **Cross-attention** — memperhatikan urutan token dari pengkode teks T5Gemma.
3. **Feed-forward** — Proyeksi SwiGLU.

Model dikondisikan pada **timestep** (fitur Fourier eksponensial → proyeksi linear) dan **vektor kondisioning global** (embedding durasi dari [StableAudio3DurationEmbedder](/docs/diffusers/main/id/api/pipelines/stable_audio_3#diffusers.StableAudio3DurationEmbedder)).

## StableAudio3DiTModel[[diffusers.StableAudio3DiTModel]]

#### diffusers.StableAudio3DiTModel[[diffusers.StableAudio3DiTModel]]

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

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_stable_audio3.py#L403)

**Parameter:**

io_channels (`int`, defaultnya 256) : Jumlah kanal laten.

patch_size (`int`, defaultnya 1) : Ukuran patch temporal yang diterapkan sebelum transformer.

embed_dim (`int`, defaultnya 1536) : Dimensi tersembunyi Transformer.

depth (`int`, defaultnya 24) : Jumlah lapisan `StableAudio3DiTBlock`.

num_heads (`int`, defaultnya 24) : Jumlah kepala perhatian.

cond_token_dim (`int`, defaultnya 768) : Dimensi dari token konteks cross-attention.

global_cond_dim (`int`, defaultnya 768) : Dimensi dari embedding durasi global.

local_add_cond_dim (`int`, defaultnya 257) : Saluran dari tensor lokal-aditif (inpaint).

timestep_features_dim (`int`, defaultnya 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`, defaultnya `True`) : Aktifkan perhatian diri/silang diferensial.

Backbone Diffusion Transformer (DiT) dari [Stable Audio 3](https://stability.ai/news/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, lalu memprediksi medan kecepatan (objektif rectified-flow).

Kondisioning:
- Konteks cross-attention (`encoder_hidden_states`) diproyeksikan oleh `to_cond_embed`.
- Embedding durasi global (`global_hidden_states`) diproyeksikan oleh `to_global_embed`, dijumlahkan dengan embedding timestep, kemudian diperluas oleh `global_cond_embedder` menjadi modulasi AdaLN per blok.
- `local_add_cond` (inpainting) diproyeksikan per blok oleh `to_local_embed`.

`num_memory_tokens` token yang dapat dipelajari ditambahkan di awal urutan audio di dalam transformer dan dihapus sebelum proyeksi output.

#### forward[[diffusers.StableAudio3DiTModel.forward]]

```python
forward(hidden_states: Tensor, timestep: Tensor, encoder_hidden_states: Tensor, global_hidden_states: Tensor, encoder_attention_mask: typing.Optional[torch.Tensor] = None, local_add_cond: typing.Optional[torch.Tensor] = None, return_dict: bool = True)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_stable_audio3.py#L521)

**Parameter:**

hidden_states (`torch.Tensor`) : Audio laten 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`, defaultnya `True`) : Apakah akan mengembalikan `StableAudio3DiTModelOutput`.

**Mengembalikan:** `StableAudio3DiTModelOutput` atau `tuple`

medan kecepatan yang diprediksi, dengan bentuk yang sama seperti `hidden_states`.

## StableAudio3DiTBlock[[diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock]]

#### diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock[[diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock]]

```python
diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTBlock(dim: int, context_dim: int, dim_heads: int = 64, use_differential: bool = True, ff_mult: float = 4.0, local_add_cond_dim: int = 257)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_stable_audio3.py#L316)

Blok transformer SA3 DiT tunggal.

Urutan operasi:
1. Self-attention yang dimodulasi AdaLN (RoPE parsial, RMS QK-norm)
2. Cross-attention ke konteks teks/durasi (pre-norm RMS polos)
3. 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[[diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput]]

#### diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput[[diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput]]

```python
diffusers.models.transformers.transformer_stable_audio3.StableAudio3DiTModelOutput(sample: Tensor)
```

[Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/transformers/transformer_stable_audio3.py#L34)

**Parameter:**

sample (`torch.Tensor`) : Medan kecepatan yang diprediksi, dengan bentuk yang sama seperti input `hidden_states`.

Output dari [StableAudio3DiTModel](/docs/diffusers/main/id/api/models/stable_audio_3_transformer#diffusers.StableAudio3DiTModel).

