Diffusers documentation

AutoencodeurSAME

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencodeurSAME

L'autoencodeur SAME (Semantically-Aligned Music Encoder) est utilisé par Stable Audio 3 pour compresser les formes d'onde audio stéréo en une séquence latente compacte et les reconstruire.

L'encodeur empile des modules SAMETransformerResamplingBlock, chacun regroupant un nombre fixe de trames de patch audio et produisant un jeton de sortie apprenable via un transformeur différentiel. Le décodeur inverse ce processus, en étendant chaque jeton latent en un patch de trames audio.

Un goulot d'étranglement soft-norm (SoftNormBottleneck) normalise les latents avant et après le modèle de diffusion, assurant des dynamiques d'entraînement stables.

AutoencodeurSAME

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 )

Paramètres

  • audio_channels — Nombre de canaux audio (2 pour le stéréo).
  • patch_size — Taille de patch non chevauchante appliquée avant l'encodeur TRB (et inversée après le décodeur TRB). Contribue à patch_size × au ratio total de sous-échantillonnage. Valeur de production : 256.
  • encoder_channels — Nombre de canaux de base pour le TRB. 128 pour SAME-S, 256 pour SAME-L.
  • encoder_c_mults — Multiplicateur de canaux pour chaque niveau TRB (une entrée par TRB). SAME-S et SAME-L utilisent tous deux (6,) — un seul TRB dont la dimension cachée est encoder_channels × 6.
  • encoder_strides — Pas de sous-/sur-échantillonnage pour chaque niveau TRB. SAME-S et SAME-L utilisent tous deux (16,) — un TRB avec un pas de 16.
  • encoder_transformer_depths — Couches Transformer par niveau TRB. 6 pour SAME-S, 12 pour SAME-L.
  • latent_dim — Dimensionnalité de l'espace latent. 256 pour les deux variantes.
  • use_differential_attention — Si True, utilise l'attention différentielle à l'intérieur de chaque bloc transformer TRB (activé par défaut pour SAME-S/L).
  • dim_heads — Dimension des têtes d'attention. 64 pour SAME-S/L en production.
  • ff_mult — Facteur d'expansion du réseau de propagation avant SwiGLU.
  • sliding_window — Demi-largeur de la fenêtre glissante (en latents) pour l'attention du masque de bande. La production SAME-S/L utilise 1.
  • encoder_sinusoidal_blocks — Nombre de blocs TRB de couches de transformeur de fin qui utilisent le gating FFN sin dans l’encodeur (SAME-L : (0,)).
  • decoder_sinusoidal_blocks — Nombre de blocs de transformeurs de fin par TRB qui utilisent le gating FFN sin dans le décodeur (SAME-L : (8,)).
  • sampling_rate — Fréquence d'échantillonnage audio en Hz (par ex. 44100).

Autoencodeur Semantically-Aligned Music Encoder (SAME) issu de Stable Audio 3 (arXiv 2605.17991).

Le modèle est composé de :

  • Embedding de patch — redimensionne l'audio stéréo en patches non superposés, échangeant le temps contre les canaux (patch_size × de sous-échantillonnage, aucun paramètre appris).
  • Pile TRB de l'encodeur — des blocs SAMETransformerResamplingBlock qui effectuent un sous-échantillonnage supplémentaire par un facteur de ∏(encoder_strides).
  • Bouteille à col de norme douce — normalisation affine apprenable avec écart-type courant.
  • Pile TRB du décodeur — miroir de l'encodeur en sens inverse.
  • Unpatch — redonne aux canaux leur dimension temporelle.

Taux de sous-échantillonnage total : patch_size × ∏(encoder_strides).

Les hyperparamètres par défaut correspondent au point de contrôle SAME-S (stabilityai/SAME-S). Pour charger SAME-L (stabilityai/SAME-L, utilisé par SA3 Medium), passez 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 )

Paramètres

  • sample — tenseur d'onde (B, audio_channels, T).
  • return_dict — Si True, renvoie un AutoencoderSAMEOutput.

Encoder l'audio stéréo en latents.

décoder

< >

( latents: Tensorreturn_dict: bool = True )

Paramètres

  • latents — tenseur latent de forme (B, latent_dim, T_latent).
  • return_dict — Si True, renvoie un AutoencoderSAMEDecoderOutput.

Décoder les latents en audio stéréo.

forward

< >

( sample: Tensorreturn_dict: bool = True )

Paramètres

  • sample — tenseur d'onde (B, audio_channels, T).
  • return_dict — Si True, renvoie un AutoencoderSAMEDecoderOutput.

Encoder puis décoder immédiatement sample (reconstruction).

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 )

Paramètres

  • in_channels — Nombre de canaux d'entrée.
  • out_channels — Nombre de canaux de sortie.
  • stride — Facteur de sous-/sur-échantillonnage.
  • mode — "encoder" ou "decoder".
  • transformer_depth — Nombre de couches TransformerBlock.
  • dim_heads — Dimension des têtes d'attention.
  • use_differential — Indique s'il faut utiliser l'attention différentielle.
  • ff_mult — Facteur d'expansion du réseau de neurones à propagation avant.
  • sliding_window — Demi-largeur de la fenêtre glissante en latents (la demi-largeur de la bande est sliding_window * (stride + 1)).
  • sinusoidal_blocks — Nombre de couches de transformer finales qui utilisent le gating FFN sin au lieu de SiLU.

Bloc de construction principal de SAME.

Mode encodeur (pas S) : Regroupe S trames d’entrée consécutives en un seul segment, ajoute un unique embedding de sortie apprenable, puis exécute D couches de transformateur sur la séquence de segment aplatie complète et ne conserve que l’embedding de sortie → sous-échantillonnage par S.

Mode décodeur (pas S) : Regroupe 1 trame d'entrée avec S embeddings de sortie apprenables, exécute D couches de transformateur sur la séquence aplatie complète, puis conserve les S embeddings de sortie → suréchantillonnage par S.

L'attention utilise un masque de bande à fenêtre glissante chevauchante sur la séquence de segments aplatie : chaque jeton porte son attention sur sliding_window * (stride + 1) voisins de chaque côté. Le RoPE est calculé sur la longueur totale de la séquence. Cela correspond exactement à l'implémentation de référence (un seul morceau non chevauchant ne correspondrait que pour un segment).

AutoencoderSAMEOutput

classe diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput

< >

( latents: Tensor )

Sortie de AutoencoderSAME.encode().

AutoencoderSAMEDecoderOutput

classe diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

Sortie de AutoencoderSAME.decode().

Update on GitHub