Diffusers documentation

AutoencoderSAME

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderSAME

O autoencoder SAME (Semantically-Aligned Music Encoder) é usado pelo Stable Audio 3 para comprimir formas de onda de áudio estéreo em uma sequência latente compacta e reconstruí-las.

O codificador empilha módulos SAMETransformerResamplingBlock, cada um dos quais agrupa um número fixo de quadros de patch de áudio e produz um token de saída aprendível por meio de um transformador diferencial. O decodificador inverte esse processo, expandindo cada token latente de volta para um patch de quadros de áudio.

Um gargalo de normalização suave (SoftNormBottleneck) normaliza os latentes antes e depois do modelo de difusão, proporcionando dinâmicas de treinamento estáveis.

AutoencoderSAME

classe diffusers.AutoencoderSAME

< >

( audio_channels: int = 2patch_size: int = 256encoder_channels: int = 128encoder_c_mults: typing.List[int] = (6,)encoder_strides: typing.List[int] = (16,)encoder_transformer_depths: typing.List[int] = (6,)latent_dim: int = 256use_differential_attention: bool = Truedim_heads: int = 64ff_mult: int = 3sliding_window: int = 1encoder_sinusoidal_blocks: typing.List[int] = (0,)decoder_sinusoidal_blocks: typing.List[int] = (0,)sampling_rate: int = 44100 )

Parâmetros

  • audio_channels — Número de canais de áudio (2 para estéreo).
  • patch_size — Tamanho do patch sem sobreposição aplicado antes do codificador TRB (e revertido depois do decodificador TRB). Contribui com patch_size × para a razão total de downsampling. Valor de produção: 256.
  • encoder_channels — Número base de canais para o TRB. 128 para SAME-S, 256 para SAME-L.
  • encoder_c_mults — Multiplicador de canais para cada nível de TRB (uma entrada por TRB). Tanto SAME-S quanto SAME-L usam (6,) — um único TRB cuja dimensão oculta é encoder_channels × 6.
  • encoder_strides — Passo de down-/up-sampling para cada nível de TRB. Tanto SAME-S quanto SAME-L usam (16,) — um TRB com passo 16.
  • encoder_transformer_depths — Camadas de Transformer por nível de TRB. 6 para SAME-S, 12 para SAME-L.
  • latent_dim — Dimensionalidade do espaço latente. 256 para ambas as variantes.
  • use_differential_attention — Se True, usa differential attention dentro de cada bloco transformer TRB (padrão ativado para SAME-S/L).
  • dim_heads — Dimensão da cabeça de atenção. 64 para produção SAME-S/L.
  • ff_mult — Fator de expansão do feed-forward SwiGLU.
  • sliding_window — Meia-largura da janela deslizante (em latentes) para a atenção com máscara de banda. O uso em produção SAME-S/L é 1.
  • encoder_sinusoidal_blocks — Contagem por TRB das camadas finais de transformador que usam o gating de FFN sin no encoder (SAME-L: (0,)).
  • decoder_sinusoidal_blocks — Contagem por TRB das camadas finais de transformador que usam o gating de FFN sin no decodificador (SAME-L: (8,)).
  • sampling_rate — Taxa de amostragem do áudio em Hz (ex.: 44100).

Autoencoder Semantically-Aligned Music Encoder (SAME) do Stable Audio 3 (arXiv 2605.17991).

O modelo consiste em:

  • Embedding de patch — reorganiza o áudio estéreo em patches não sobrepostos, trocando tempo por canais (patch_size × de redução de amostragem, sem parâmetros aprendidos).
  • Stack de codificador TRB — blocos SAMETransformerResamplingBlock que realizam mais uma etapa de redução de amostragem por um fator de ∏(encoder_strides).
  • Gargalo de normalização suave — normalização afim aprendível com desvio padrão em execução.
  • Pilha TRB do decodificador — espelha o codificador em ordem inversa.
  • Unpatch — reorganiza os canais de volta para a dimensão de tempo.

Razão total de subamostragem: patch_size × ∏(encoder_strides).

Os hiperparâmetros padrão correspondem ao checkpoint SAME-S (stabilityai/SAME-S). Para carregar o SAME-L (stabilityai/SAME-L, usado pelo SA3 Medium), passe encoder_channels=256, encoder_transformer_depths=(12,).

# SAME-S (108 M params, used by SA3 small models) model = AutoencoderSAME() # default values

# SAME-L (852 M params, used by SA3 Medium) model = AutoencoderSAME(encoder_channels=256,
encoder_transformer_depths=(12,))

encode

< >

( sample: Tensorreturn_dict: bool = True )

Parâmetros

  • sample — tensor de forma de onda (B, audio_channels, T).
  • return_dict — Se True, retorna um AutoencoderSAMEOutput.

Codifique áudio estéreo em latentes.

decode

< >

( latents: Tensorreturn_dict: bool = True )

Parâmetros

  • latents — tensor latente (B, latent_dim, T_latent).
  • return_dict — Se True, retorna um AutoencoderSAMEDecoderOutput.

Decodifique os latentes de volta para áudio estéreo.

forward

< >

( sample: Tensorreturn_dict: bool = True )

Parâmetros

  • sample — tensor de forma de onda (B, audio_channels, T).
  • return_dict — Se True, retorna um AutoencoderSAMEDecoderOutput.

Codifique e decodifique imediatamente sample (reconstrução).

SAMETransformerResamplingBlock

classe diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock

< >

( in_channels: intout_channels: intstride: intmode: str = 'encoder'transformer_depth: int = 3dim_heads: int = 128use_differential: bool = Trueff_mult: int = 3sliding_window: int = 1sinusoidal_blocks: int = 0 )

Parâmetros

  • in_channels — Número de canais de entrada.
  • out_channels — Número de canais de saída.
  • stride — Fator de sub/amostragem.
  • mode — "encoder" ou "decoder".
  • transformer_depth — Número de camadas de TransformerBlock.
  • dim_heads — Dimensão da cabeça de atenção.
  • use_differential — Se deve usar atenção diferencial.
  • ff_mult — Fator de expansão do feed-forward.
  • sliding_window — Meia-largura da janela deslizante em latentes (a meia-largura da faixa é sliding_window * (stride + 1)).
  • sinusoidal_blocks — Número de camadas finais de transformer que usam o gating de FFN sin em vez de SiLU.

Bloco de construção principal do SAME.

Modo codificador (passo S): Agrupa S quadros de entrada consecutivos em um único segmento, adiciona uma única incorporação de saída aprendível e, em seguida, executa D camadas de transformador sobre a sequência de segmento achatada completa, mantendo apenas a incorporação de saída → redução de amostragem por S.

Modo decodificador (passo S): Agrupa 1 quadro de entrada com S embeddings de saída aprendíveis, executa D camadas de transformer sobre a sequência achatada completa e, em seguida, mantém os S embeddings de saída → aumenta a amostragem por S.

A atenção usa uma máscara de banda janela deslizante sobreposta sobre a sequência de segmentos achatada: cada token presta atenção a sliding_window * (stride + 1) vizinhos em cada lado. O RoPE é calculado sobre o comprimento total da sequência. Isso corresponde exatamente à implementação de referência (um único bloco não sobreposto corresponderia apenas para um segmento).

AutoencoderSAMEOutput

classe diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput

< >

( latents: Tensor )

Saída de AutoencoderSAME.encode().

AutoencoderSAMEDecoderOutput

classe diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

Saída de AutoencoderSAME.decode().

Update on GitHub