# StableAudio3DiTModel

Un Diffusion Transformer (DiT) de predicción de velocidad de flujo rectificado para la generación de audio, utilizado en [Stable Audio 3](https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models).

Cada `StableAudio3DiTBlock` realiza:

1. **Autoatención** — atención multi-cabeza diferencial con incrustaciones de posición rotacional (RoPE).
2. **Atención cruzada** — atiende a la secuencia de tokens del codificador de texto T5Gemma.
3. **Feed-forward** — Proyección SwiGLU.

El modelo se condiciona en un **timestep** (características de Fourier exponenciales → proyección lineal) y un **vector de condicionamiento global** (incrustación de duración desde [StableAudio3DurationEmbedder](/docs/diffusers/v0.43.0/es/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)
```

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

**Parámetros:**

io_channels (`int`, por defecto 256) : Número de canales latentes.

patch_size (`int`, por defecto 1) : Tamaño de parche temporal aplicado antes del transformer.

embed_dim (`int`, por defecto 1536) : Dimensión oculta del Transformer.

depth (`int`, por defecto 24) : Número de capas `StableAudio3DiTBlock`.

num_heads (`int`, por defecto 24) : Número de cabezas de atención.

cond_token_dim (`int`, por defecto 768) : Dimensión de los tokens de contexto de la atención cruzada.

global_cond_dim (`int`, por defecto 768) : Dimensión del embedding de duración global.

local_add_cond_dim (`int`, por defecto 257) : Canales del tensor local-aditivo (inpaint).

timestep_features_dim (`int`, por defecto 256) : Dimensión de salida de las características de paso temporal de Fourier.

ff_mult (`float`, por defecto 4.0) : Factor de expansión del feed-forward SwiGLU.

num_memory_tokens (`int`, por defecto 64) : Número de tokens de memoria aprendibles.

use_differential_attention (`bool`, por defecto `True`) : Habilita la atención diferencial self/cross.

El backbone Diffusion Transformer (DiT) de [Stable Audio 3](https://stability.ai/news/stable-audio-3).

El modelo toma un lote de latentes de audio con ruido, un paso temporal escalar, un contexto de atención cruzada (tokens de texto y duración proyectados) y una incrustación de duración global, y predice el campo de velocidad (objetivo de flujo rectificado).

Condicionamiento:
- El contexto de atención cruzada (`encoder_hidden_states`) se proyecta mediante `to_cond_embed`.
- El embedding de duración global (`global_hidden_states`) se proyecta mediante `to_global_embed`, se suma al embedding del paso de tiempo y luego se expande mediante `global_cond_embedder` en la modulación AdaLN por bloque.
- `local_add_cond` (inpainting) se proyecta por bloque mediante `to_local_embed`.

Se añaden `num_memory_tokens` tokens aprendibles al inicio de la secuencia de audio dentro del transformer y se eliminan antes de la proyección de salida.

#### 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)
```

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

**Parámetros:**

hidden_states (`torch.Tensor`) : Audio latente con ruido `(batch, io_channels, T)`.

timestep (`torch.Tensor`) : Paso de difusión `(batch,)` en `[0, 1]`.

encoder_hidden_states (`torch.Tensor`) : Contexto de atención cruzada `(batch, T_ctx, cond_token_dim)`.

global_hidden_states (`torch.Tensor`) : Incrustación de duración global `(batch, global_cond_dim)`.

encoder_attention_mask (`torch.Tensor`, *opcional*) : Máscara booleana `(batch, T_ctx)`, `True` = válido.

local_add_cond (`torch.Tensor`, *opcional*) : Condicionamiento aditivo local (inpaint) `(batch, local_add_cond_dim, T)`.

return_dict (`bool`, por defecto `True`) : Si se debe devolver una `StableAudio3DiTModelOutput`.

**Devuelve:** `StableAudio3DiTModelOutput` o `tuple`

el campo de velocidad predicho, con la misma forma que `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)
```

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

Bloque de transformador DiT SA3 individual.

Orden de operaciones:
1. Autoatención modulada por AdaLN (RoPE parcial, normalización RMS QK)
2. Atención cruzada al contexto de texto/duración (pre-norm RMS simple)
3. Red neuronal feed-forward SwiGLU modulada por AdaLN

La modulación AdaLN es `to_scale_shift_gate + global_modulation`, dividida en seis fragmentos `(scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff)`. Cada rama con compuerta se escala mediante `sigmoid(1 - gate)`. La atención cruzada *no* está modulada por AdaLN, lo que coincide con la referencia (`cross_attend_norm` es una normalización RMS simple).

Cuando se proporciona `local_seq` (inpainting), se proyecta por bloque mediante `to_local_embed` y se suma a las posiciones de audio del flujo residual después de la atención cruzada (y antes de la red feed-forward), coincidiendo con la referencia.

## 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)
```

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

**Parámetros:**

sample (`torch.Tensor`) : El campo de velocidad predicho, con la misma forma que la entrada `hidden_states`.

La salida de [StableAudio3DiTModel](/docs/diffusers/v0.43.0/es/api/models/stable_audio_3_transformer#diffusers.StableAudio3DiTModel).

