Diffusers documentation

AutoencoderSAME

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderSAME

Autoencoder SAME (Semantically-Aligned Music Encoder) digunakan oleh Stable Audio 3 untuk mengompres waveform audio stereo menjadi sekuens laten yang ringkas dan merekonstruksinya.

Encoder menumpuk modul SAMETransformerResamplingBlock, di mana masing-masing modul mengelompokkan sejumlah tetap frame patch audio dan menghasilkan satu token output yang dapat dipelajari melalui transformer diferensial. Dekoder membalik proses ini, memperluas setiap token laten kembali menjadi patch frame audio.

Bottleneck soft-norm (SoftNormBottleneck) menormalisasi latens sebelum dan sesudah model difusi, menyediakan dinamika pelatihan yang stabil.

AutoencoderSAME

kelas 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 )

Parameter

  • audio_channels — Jumlah kanal audio (2 untuk stereo).
  • patch_size — Ukuran patch non-overlapping yang diterapkan sebelum encoder TRB (dan dibalik setelah decoder TRB). Berkontribusi patch_size × terhadap rasio downsampling total. Nilai produksi: 256.
  • encoder_channels — Jumlah channel dasar untuk TRB. 128 untuk SAME-S, 256 untuk SAME-L.
  • encoder_c_mults — Pengali channel untuk setiap level TRB (satu entri per TRB). Baik SAME-S maupun SAME-L menggunakan (6,) — satu TRB yang dimensi tersembunyinya adalah encoder_channels × 6.
  • encoder_strides — Stride down-/up-sampling untuk setiap level TRB. Baik SAME-S maupun SAME-L menggunakan (16,) — satu TRB dengan stride 16.
  • encoder_transformer_depths — Lapisan Transformer per level TRB. 6 untuk SAME-S, 12 untuk SAME-L.
  • latent_dim — Dimensi ruang laten. 256 untuk kedua varian.
  • use_differential_attention — Jika True, gunakan differential attention di dalam setiap blok transformer TRB (default aktif untuk SAME-S/L).
  • dim_heads — Dimensi head attention. 64 untuk SAME-S/L produksi.
  • ff_mult — Faktor ekspansi feed-forward SwiGLU.
  • sliding_window — Setengah lebar jendela geser (dalam latents) untuk perhatian band-mask. SAME-S/L produksi menggunakan 1.
  • encoder_sinusoidal_blocks — Jumlah per-TRB lapisan transformer akhir yang menggunakan gating FFN sin di encoder (SAME-L: (0,)).
  • decoder_sinusoidal_blocks — Jumlah per-TRB lapisan transformer akhir yang menggunakan gating FFN sin di decoder (SAME-L: (8,)).
  • sampling_rate — Laju sampel audio dalam Hz (mis. 44100).

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

Model ini terdiri dari:

  • Embedding patch — membentuk ulang audio stereo menjadi patch yang tidak tumpang tindih, menukar waktu dengan saluran (patch_size × downsample, tanpa parameter yang dipelajari).
  • Stack encoder TRB — blok SAMETransformerResamplingBlock yang melakukan downsampling lebih lanjut dengan faktor ∏(encoder_strides).
  • Bottleneck soft-norm — normalisasi afine yang dapat dipelajari dengan standar deviasi berjalan.
  • Stack TRB decoder — mencerminkan encoder secara terbalik.
  • Unpatch — membentuk ulang channel ke dimensi waktu.

Rasio downsampling total: patch_size × ∏(encoder_strides).

Hyperparameter bawaan cocok dengan checkpoint SAME-S (stabilityai/SAME-S). Untuk memuat SAME-L (stabilityai/SAME-L, yang digunakan oleh SA3 Medium), berikan 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 )

Parameter

  • sample — tensor waveform (B, audio_channels, T).
  • return_dict — Jika True, kembalikan AutoencoderSAMEOutput.

Enkode audio stereo ke latents.

decode

< >

( latents: Tensorreturn_dict: bool = True )

Parameter

  • latents — tensor laten (B, latent_dim, T_latent).
  • return_dict — Jika True, kembalikan AutoencoderSAMEDecoderOutput.

Decode latents kembali ke audio stereo.

forward

< >

( sample: Tensorreturn_dict: bool = True )

Parameter

  • sample — tensor waveform (B, audio_channels, T).
  • return_dict — Jika True, kembalikan AutoencoderSAMEDecoderOutput.

Enkode dan segera dekode sample (rekonstruksi).

SAMETransformerResamplingBlock

kelas 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 )

Parameter

  • in_channels — Jumlah saluran input.
  • out_channels — Jumlah kanal output.
  • stride — Faktor down-/up-sampling.
  • mode — "encoder" atau "decoder".
  • transformer_depth — Jumlah lapisan TransformerBlock.
  • dim_heads — Dimensi head attention.
  • use_differential — Apakah akan menggunakan differential attention.
  • ff_mult — Faktor ekspansi feed-forward.
  • sliding_window — Setengah lebar jendela geser dalam latents (setengah lebar pita adalah sliding_window * (stride + 1)).
  • sinusoidal_blocks — Jumlah lapisan transformer akhir yang menggunakan gating FFN sin alih-alih SiLU.

Blok bangunan inti dari SAME.

Mode encoder (stride S): Mengelompokkan S frame input berurutan menjadi satu segmen, menambahkan satu embedding output yang dapat dipelajari, lalu menjalankan D lapisan transformer pada urutan segmen datar penuh dan hanya mempertahankan embedding output → downsample sebesar S.

Mode decoder (stride S): Mengelompokkan 1 frame input dengan S embedding output yang dapat dipelajari, menjalankan D lapisan transformer pada urutan datar penuh, lalu mempertahankan S embedding output → upsample sebesar S.

Attention menggunakan mask pita sliding-window yang tumpang tindih di atas urutan segmen yang diratakan: setiap token memperhatikan sliding_window * (stride + 1) tetangga di setiap sisi. RoPE dihitung di atas panjang urutan penuh. Hal ini persis sesuai dengan implementasi referensi (satu chunk non-tumpang tindih hanya akan cocok untuk satu segmen).

AutoencoderSAMEOutput

kelas diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput

< >

( latents: Tensor )

Output dari AutoencoderSAME.encode().

AutoencoderSAMEDecoderOutput

kelas diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

Output dari AutoencoderSAME.decode().

Update on GitHub