Diffusers documentation
AutoencoderSAME
AutoencoderSAME
Autoencoder SAME (Semantically-Aligned Music Encoder) được Stable Audio 3 sử dụng để nén các dạng sóng âm thanh stereo thành một chuỗi latent gọn gàng và tái tạo chúng.
Bộ mã hóa xếp chồng các module SAMETransformerResamplingBlock, mỗi module nhóm một số lượng cố định các khung patch âm thanh và tạo ra một token đầu ra có thể học được thông qua một transformer sai phân. Bộ giải mã đảo ngược quá trình này, mở rộng mỗi token ẩn trở lại thành một patch các khung âm thanh.
Một nút thắt cổ chai soft-norm (SoftNormBottleneck) chuẩn hóa các biến ẩn trước và sau mô hình khuếch tán,
cung cấp động lực huấn luyện ổn định.
AutoencoderSAME
lớp 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 )
Tham số
- audio_channels — Số kênh âm thanh (2 cho âm thanh stereo).
- patch_size — Kích thước patch không chồng chéo được áp dụng trước bộ mã hóa TRB
(và đảo ngược sau bộ giải mã TRB). Đóng góp
patch_size ×vào tỷ lệ hạ mẫu tổng. Giá trị sản xuất: 256. - encoder_channels — Số kênh cơ bản cho TRB. 128 cho SAME-S, 256 cho SAME-L.
- encoder_c_mults — Hệ số nhân kênh cho mỗi cấp TRB (một mục cho mỗi TRB). Cả SAME-S và SAME-L đều sử dụng
(6,)— một TRB duy nhất có chiều ẩn làencoder_channels × 6. - encoder_strides — Bước nhảy (stride) hạ mẫu/tăng mẫu cho mỗi cấp TRB. Cả
SAME-S và SAME-L đều dùng
(16,)— một TRB với bước nhảy 16. - encoder_transformer_depths — Số lớp Transformer cho mỗi cấp TRB. 6 cho SAME-S, 12 cho SAME-L.
- latent_dim — Chiều của không gian ẩn. 256 cho cả hai biến thể.
- use_differential_attention — Nếu
True, sử dụng differential attention bên trong mỗi khối transformer TRB (mặc định bật cho SAME-S/L). - dim_heads — Kích thước chiều của đầu chú ý (attention head). 64 cho SAME-S/L trong môi trường sản xuất.
- ff_mult — Hệ số mở rộng feed-forward của SwiGLU.
- sliding_window — Nửa chiều rộng cửa sổ trượt (theo latent) cho chú ý mặt nạ dải. SAME-S/L trong môi trường sản xuất sử dụng 1.
- encoder_sinusoidal_blocks — Số lượng lớp transformer cuối cùng trong mỗi TRB
sử dụng cổng FFN
sintrong encoder (SAME-L:(0,)). - decoder_sinusoidal_blocks — Số lượng lớp transformer cuối cùng trong mỗi TRB
sử dụng gating FFN
sintrong bộ giải mã (SAME-L:(8,)). - sampling_rate — Tần số lấy mẫu âm thanh tính bằng Hz (ví dụ: 44100).
Autoencoder Semantically-Aligned Music Encoder (SAME) từ Stable Audio 3 (arXiv 2605.17991).
Mô hình bao gồm:
- Nhúng patch — định hình lại âm thanh stereo thành các patch không chồng lấn, đánh đổi thời gian lấy kênh (
patch_size ×hạ mẫu, không có tham số học được). - Stack TRB của Encoder — các khối
SAMETransformerResamplingBlocktiếp tục giảm mẫu với hệ số∏(encoder_strides). - Soft-norm bottleneck — chuẩn hóa affine có thể học với std chạy.
- Stack TRB của bộ giải mã — phản chiếu bộ mã hóa theo chiều ngược lại.
- Unpatch — định hình lại các kênh về chiều thời gian.
Tỷ lệ giảm mẫu tổng: patch_size × ∏(encoder_strides).
Các siêu tham số mặc định khớp với checkpoint SAME-S (stabilityai/SAME-S). Để nạp SAME-L (stabilityai/SAME-L, được sử dụng bởi SA3 Medium), hãy truyền 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 )
Mã hóa âm thanh stereo thành các biến ẩn.
decode
< source >( latents: Tensorreturn_dict: bool = True )
Giải mã các biến ẩn (latents) trở lại âm thanh stereo.
forward
< source >( sample: Tensorreturn_dict: bool = True )
Mã hóa và giải mã ngay lập tức sample (tái tạo).
SAMETransformerResamplingBlock
lớp 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 )
Tham số
- in_channels — Số lượng kênh đầu vào.
- out_channels — Số lượng kênh đầu ra.
- stride — Hệ số lấy mẫu xuống/lên.
- mode —
"encoder"hoặc"decoder". - transformer_depth — Số lượng lớp
TransformerBlock. - dim_heads — Kích thước đầu chú ý.
- use_differential — Xác định có sử dụng differential attention hay không.
- ff_mult — Hệ số mở rộng mạng feed-forward.
- sliding_window — Nửa chiều rộng cửa sổ trượt trong latents (nửa chiều rộng dải là
sliding_window * (stride + 1)). - sinusoidal_blocks — Số lượng lớp transformer cuối cùng sử dụng gating FFN
sinthay vì SiLU.
Khối xây dựng cốt lõi của SAME.
Chế độ Encoder (bước S): Nhóm S khung đầu vào liên tiếp thành một phân đoạn, thêm một embedding đầu vào có thể học được duy nhất, sau đó chạy D tầng transformer trên toàn bộ chuỗi phân đoạn đã được làm phẳng và chỉ giữ lại embedding đầu ra → giảm mẫu xuống S lần.
Chế độ giải mã (bước S): Nhóm 1 khung đầu vào với S embedding đầu vào có thể học được, chạy D lớp transformer trên toàn bộ chuỗi đã được làm phẳng, sau đó giữ lại S embedding đầu ra → tăng mẫu lên S lần.
Attention sử dụng mặt nạ dải cửa sổ trượt chồng lấn trên chuỗi phân đoạn đã được làm phẳng: mỗi token chú ý đến sliding_window * (stride + 1) hàng xóm ở mỗi phía. RoPE được tính trên toàn bộ độ dài chuỗi. Điều này
khớp chính xác với bản triển khai tham chiếu (một khối không chồng lấn duy nhất chỉ khớp với một phân đoạn).
AutoencoderSAMEOutput
lớp diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput
< source >( latents: Tensor )
Đầu ra của AutoencoderSAME.encode().
AutoencoderSAMEDecoderOutput
class diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput
< source >( sample: Tensor )
Đầu ra của AutoencoderSAME.decode().