Diffusers documentation
AutoencoderSAME
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
< source >( 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 adalahencoder_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
sindi encoder (SAME-L:(0,)). - decoder_sinusoidal_blocks — Jumlah per-TRB lapisan transformer akhir
yang menggunakan gating FFN
sindi 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
SAMETransformerResamplingBlockyang 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
< source >( sample: Tensorreturn_dict: bool = True )
Enkode audio stereo ke latents.
decode
< source >( latents: Tensorreturn_dict: bool = True )
Decode latents kembali ke audio stereo.
forward
< source >( sample: Tensorreturn_dict: bool = True )
Enkode dan segera dekode sample (rekonstruksi).
SAMETransformerResamplingBlock
kelas diffusers.models.autoencoders.autoencoder_same.SAMETransformerResamplingBlock
< source >( 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
sinalih-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
< source >( latents: Tensor )
Output dari AutoencoderSAME.encode().
AutoencoderSAMEDecoderOutput
kelas diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput
< source >( sample: Tensor )
Output dari AutoencoderSAME.decode().