Buckets:

hf-doc-build/doc / diffusers /main /pt /api /models /autoencoder_same.md
mishig's picture
|
download
raw
9.96 kB

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[[diffusers.AutoencoderSAME]]

diffusers.AutoencoderSAME[[diffusers.AutoencoderSAME]]

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

Fonte

Parâmetros:

audio_channels : Número de canais de áudio (2 para estéreo).

patch_size : Tamanho de patch não sobreposto aplicado antes do codificador TRB (e revertido após o decodificador TRB). Contribui com patch_size × para a razão total de downsampling. Valor de produção: 256.

encoder_channels : Número de canais base para o TRB. 128 para SAME-S, 256 para SAME-L.

encoder_c_mults : Multiplicador de canal 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 : Dimensão do espaço latente. 256 para ambas as variantes.

use_differential_attention : Se True, use atenção diferencial dentro de cada bloco do transformador 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 de SAME-S/L em produção é 1.

encoder_sinusoidal_blocks : Contagem por TRB das camadas finais de transformador que usam o gating de FFN sin no codificador (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 de á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[[diffusers.AutoencoderSAME.encode]]

encode(sample: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

sample : tensor de forma de onda (B, audio_channels, T).

return_dict : Se True, retorna um AutoencoderSAMEOutput.

Retorna:

Tensor latente de forma (B, latent_dim, T // downsampling_ratio) (envolvido em AutoencoderSAMEOutput quando return_dict é True).

Codifique áudio estéreo em latentes.

decode[[diffusers.AutoencoderSAME.decode]]

decode(latents: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

latents : tensor latente (B, latent_dim, T_latent).

return_dict : Se True, retorna um AutoencoderSAMEDecoderOutput.

Retorna:

Tensor de forma de onda com forma (B, audio_channels, T_latent × downsampling_ratio) (envolvido em AutoencoderSAMEDecoderOutput quando return_dict é True).

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

forward[[diffusers.AutoencoderSAME.forward]]

forward(sample: Tensor, return_dict: bool = True)

Fonte

Parâmetros:

sample : tensor de forma de onda (B, audio_channels, T).

return_dict : Se True, retorna um AutoencoderSAMEDecoderOutput.

Retorna:

Forma de onda reconstruída (mesma forma que sample, possivelmente mais longa devido ao padding), encapsulada em AutoencoderSAMEDecoderOutput quando return_dict é True.

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

SAMETransformerResamplingBlock[[diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock]]

diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock[[diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock]]

diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock(in_channels: int, out_channels: int, stride: int, mode: str = 'encoder', transformer_depth: int = 3, dim_heads: int = 128, use_differential: bool = True, ff_mult: int = 3, sliding_window: int = 1, sinusoidal_blocks: int = 0)

Fonte

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 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 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 → reduz a 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[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput(latents: Tensor)

Fonte

Saída de AutoencoderSAME.encode().

AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput[[diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput]]

diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput(sample: Tensor)

Fonte

Saída de AutoencoderSAME.decode().

Xet Storage Details

Size:
9.96 kB
·
Xet hash:
098e7c7f275be2ea627a5aea689bb015983b890d29719104c2a752f6e76fe2a5

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.