# StableAudio3DiTModel

Un Diffusion Transformer (DiT) de prédiction de vitesse à flux rectifié pour la génération audio, utilisé dans [Stable Audio 3](https://stability.ai/news-updates/meet-stable-audio-3-the-model-family-built-for-artistic-experimentation-with-open-weight-models).

Chaque `StableAudio3DiTBlock` effectue :

1. **Auto-attention** — attention multi-têtes différentielle avec des embeddings de position rotatifs (RoPE).
2. **Attention croisée** — porte son attention sur la séquence de jetons issue de l'encodeur de texte T5Gemma.
3. **Feed-forward** — projection SwiGLU.

Le modèle est conditionné sur un **timestep** (fonctions de Fourier exponentielles → projection linéaire) et un **vecteur de conditionnement global** (embedding de durée issu de [StableAudio3DurationEmbedder](/docs/diffusers/v0.43.0/fr/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)
```

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

**Paramètres :**

io_channels (`int`, par défaut 256) : Nombre de canaux latents.

patch_size (`int`, par défaut 1) : Taille du patch temporel appliquée avant le transformer.

embed_dim (`int`, par défaut 1536) : Dimension cachée du Transformer.

depth (`int`, par défaut 24) : Nombre de couches `StableAudio3DiTBlock`.

num_heads (`int`, par défaut 24) : Nombre de têtes d'attention.

cond_token_dim (`int`, par défaut 768) : Dimension des jetons de contexte de l'attention croisée.

global_cond_dim (`int`, par défaut 768) : Dimension de l'embedding de durée globale.

local_add_cond_dim (`int`, par défaut 257) : Canaux du tenseur local-additif (inpaint).

timestep_features_dim (`int`, par défaut 256) : Dimension de sortie des caractéristiques de pas de temps de Fourier.

ff_mult (`float`, par défaut 4.0) : facteur d'expansion du réseau de propagation avant SwiGLU.

num_memory_tokens (`int`, par défaut 64) : Nombre de jetons de mémoire apprenables.

use_differential_attention (`bool`, par défaut `True`) : Active l'attention auto/croisée différentielle.

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

Le modèle prend en entrée un lot de latents audio bruités, un pas de temps scalaire, un contexte d'attention croisée (jetons de texte et de durée projetés) et un plongement de durée global, et prédit le champ de vitesse (objectif de flux rectifié).

Conditionnement :
- Le contexte d'attention croisée (`encoder_hidden_states`) est projeté par `to_cond_embed`.
- L'embedding de durée globale (`global_hidden_states`) est projeté par `to_global_embed`, additionné à l'embedding de pas de temps, puis étendu par `global_cond_embedder` en modulation AdaLN par bloc.
- `local_add_cond` (inpainting) est projeté par bloc par `to_local_embed`.

`num_memory_tokens` jetons apprenables sont ajoutés au début de la séquence audio à l'intérieur du transformateur et supprimés avant la projection de sortie.

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

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

**Paramètres :**

hidden_states (`torch.Tensor`) : Audio latent bruité `(batch, io_channels, T)`.

timestep (`torch.Tensor`) : Pas de diffusion `(batch,)` dans `[0, 1]`.

encoder_hidden_states (`torch.Tensor`) : Contexte d'attention croisée `(batch, T_ctx, cond_token_dim)`.

global_hidden_states (`torch.Tensor`) : Embedding de durée globale `(batch, global_cond_dim)`.

encoder_attention_mask (`torch.Tensor`, *facultatif*) : Masque booléen `(batch, T_ctx)`, `True` = valide.

local_add_cond (`torch.Tensor`, *facultatif*) : Conditionnement additif local (inpaint) `(batch, local_add_cond_dim, T)`.

return_dict (`bool`, par défaut `True`) : Indique s'il faut retourner un `StableAudio3DiTModelOutput`.

**Retourne :** `StableAudio3DiTModelOutput` ou `tuple`

le champ de vitesse prédit, de même forme 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)
```

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

Bloc de transformateur SA3 DiT unique.

Ordre des opérations :
1. Auto-attention auto-régressive modulée par AdaLN (RoPE partiel, normalisation RMS QK)
2. Attention croisée vers le contexte texte/durée (pré-norm RMS simple)
3. Réseau de neurones à avant (feed-forward) SwiGLU modulé par AdaLN

La modulation AdaLN est `to_scale_shift_gate + global_modulation`, divisée en six blocs `(scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff)`. Chaque branche à porte est mise à l'échelle par `sigmoid(1 - gate)`. L'attention croisée n'est *pas* modulée par AdaLN, conformément à la référence (`cross_attend_norm` est une simple norme RMS).

Lorsque `local_seq` est fourni (inpainting), il est projeté par bloc par `to_local_embed` et ajouté aux positions audio du flux résiduel après l'attention croisée (et avant le réseau de neurones feed-forward), conformément à la référence.

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

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

**Paramètres :**

sample (`torch.Tensor`) : Le champ de vitesse prédit, de la même forme que l'entrée `hidden_states`.

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

