# StableAudio3DiTModel

Um Diffusion Transformer (DiT) de previsão de velocidade de fluxo retificado para geração de áudio, usado no [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` executa:

1. **Autoatenção** — atenção multi-cabeça diferencial com incorporações de posição rotativas (RoPE).
2. **Atenção cruzada** — presta atenção à sequência de tokens do codificador de texto T5Gemma.
3. **Feed-forward** — projeção SwiGLU.

O modelo é condicionado em um **timestep** (recursos de Fourier exponenciais → projeção linear) e em um **vetor de condicionamento global** (embedding de duração do [StableAudio3DurationEmbedder](/docs/diffusers/main/pt/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)
```

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

**Parâmetros:**

io_channels (`int`, padrão 256) : Número de canais latentes.

patch_size (`int`, padrão 1) : Tamanho do patch temporal aplicado antes do transformer.

embed_dim (`int`, padrão 1536) : Dimensão oculta do Transformer.

depth (`int`, padrão 24) : Número de camadas `StableAudio3DiTBlock`.

num_heads (`int`, padrão 24) : Número de cabeças de atenção.

cond_token_dim (`int`, padrão 768) : Dimensão dos tokens de contexto da atenção cruzada.

global_cond_dim (`int`, padrão 768) : Dimensão do embedding de duração global.

local_add_cond_dim (`int`, padrão 257) : Canais do tensor local-aditivo (inpaint).

timestep_features_dim (`int`, padrão 256) : Dimensão de saída dos recursos de passo temporal de Fourier.

ff_mult (`float`, padrão 4.0) : Fator de expansão do feed-forward SwiGLU.

num_memory_tokens (`int`, padrão 64) : Número de tokens de memória aprendíveis.

use_differential_attention (`bool`, padrão `True`) : Ativa a atenção diferencial self/cross.

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

O modelo recebe um lote de latentes de áudio com ruído, um timestep escalar, um contexto de cross-attention (tokens de texto e duração projetados) e um embedding global de duração, e prevê o campo de velocidade (objetivo de fluxo retificado).

Condição:
- O contexto de atenção cruzada (`encoder_hidden_states`) é projetado por `to_cond_embed`.
- O embedding de duração global (`global_hidden_states`) é projetado por `to_global_embed`, somado ao embedding de timestep e, em seguida, expandido por `global_cond_embedder` para a modulação AdaLN por bloco.
- `local_add_cond` (inpainting) é projetado por bloco por `to_local_embed`.

`num_memory_tokens` tokens aprendíveis são adicionados ao início da sequência de áudio dentro do transformer e removidos antes da projeção de saída.

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

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

**Parâmetros:**

hidden_states (`torch.Tensor`) : Áudio latente com ruído `(batch, io_channels, T)`.

timestep (`torch.Tensor`) : Passo de difusão `(batch,)` em `[0, 1]`.

encoder_hidden_states (`torch.Tensor`) : Contexto de atenção cruzada `(batch, T_ctx, cond_token_dim)`.

global_hidden_states (`torch.Tensor`) : Embedding de duração global `(batch, global_cond_dim)`.

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

local_add_cond (`torch.Tensor`, *opcional*) : Condição aditiva local (inpaint) `(batch, local_add_cond_dim, T)`.

return_dict (`bool`, padrão `True`) : Se deve retornar um `StableAudio3DiTModelOutput`.

**Retorna:** `StableAudio3DiTModelOutput` ou `tuple`

o campo de velocidade previsto, com a mesma forma de `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)
```

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

Bloco único de transformador DiT SA3.

Ordem de operações:
1. Autoatenção modulada por AdaLN (RoPE parcial, normalização RMS QK)
2. Atenção cruzada para o contexto de texto/duração (pré-norm RMS simples)
3. Feed-forward SwiGLU modulado por AdaLN

A modulação AdaLN é `to_scale_shift_gate + global_modulation`, dividida em seis blocos `(scale_attn, shift_attn, gate_attn, scale_ff, shift_ff, gate_ff)`. Cada ramo com gate é escalado por `sigmoid(1 - gate)`. A atenção cruzada *não* é modulada por AdaLN, em conformidade com a referência (`cross_attend_norm` é uma normalização RMS simples).

Quando `local_seq` é fornecido (inpainting), ele é projetado por bloco por `to_local_embed` e adicionado às posições de áudio do fluxo residual após a atenção cruzada (e antes do feed-forward), em conformidade com a referência.

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

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

**Parâmetros:**

sample (`torch.Tensor`) : O campo de velocidade previsto, com a mesma forma que a entrada `hidden_states`.

A saída de [StableAudio3DiTModel](/docs/diffusers/main/pt/api/models/stable_audio_3_transformer#diffusers.StableAudio3DiTModel).

