Buckets:
自编码器SAME
SAME(Semantically-Aligned Music Encoder,语义对齐音乐编码器)自编码器被 Stable Audio 3 用于将立体声音频波形压缩为紧凑的潜在序列并进行重建。
编码器堆叠了 SAMETransformerResamplingBlock 模块,每个模块将固定数量的音频 patch 帧分组,并通过差分 Transformer 生成一个可学习的输出 token。解码器则反转此过程,将每个潜在 token 扩展回一组音频帧 patch。
软归一化瓶颈(SoftNormBottleneck)在扩散模型之前和之后对潜在变量进行归一化,从而提供稳定的训练动态。
自编码器SAME[[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)
参数:
audio_channels : 音频通道数(立体声为 2)。
patch_size : 在 TRB 编码器之前应用的互不重叠的 patch 大小(并在 TRB 解码器之后进行反转)。对总下采样率的贡献为 patch_size ×。生产环境中的取值:256。
encoder_channels : TRB 的基础通道数。SAME-S 为 128,SAME-L 为 256。
encoder_c_mults : 每个 TRB 层级的通道乘数(每个 TRB 一个条目)。SAME-S 和 SAME-L 均使用 (6,) —— 单个 TRB,其隐藏维度为 encoder_channels × 6。
encoder_strides : 每个 TRB 层级的下采样/上采样步长。SAME-S 和 SAME-L 均使用 (16,) — 一个步长为 16 的 TRB。
encoder_transformer_depths : 每个 TRB 层级的 Transformer 层数。SAME-S 为 6,SAME-L 为 12。
latent_dim : 潜在空间的维度。两种变体均为 256。
use_differential_attention : 如果 True,则在每个 TRB transformer 块内部使用 differential attention(SAME-S/L 默认开启)。
dim_heads : 注意力头维度。生产环境 SAME-S/L 为 64。
ff_mult : SwiGLU 前馈扩展因子。
sliding_window : 用于带状掩码注意力的滑动窗口半宽(以潜在变量计)。生产环境中的 SAME-S/L 使用 1。
encoder_sinusoidal_blocks : 编码器中使用 sin FFN 门控的尾部 Transformer 层数(SAME-L: (0,))。
decoder_sinusoidal_blocks : 解码器中使用 sin FFN 门控的尾部 Transformer 层数(SAME-L: (8,))。
sampling_rate : 音频采样率,单位为 Hz(例如 44100)。
来自 Stable Audio 3(arXiv 2605.17991)的语义对齐音乐编码器(SAME)自编码器。
该模型由以下部分组成:
- 补丁嵌入 — 将立体声音频重塑为不重叠的补丁,以时间换取通道数(
patch_size ×下采样,无可学习参数)。 - 编码器 TRB 堆栈 — 由
SAMETransformerResamplingBlock块组成,进一步以∏(encoder_strides)为因子进行下采样。 - Soft-norm 瓶颈 — 带有运行标准差的可学习仿射归一化。
- 解码器 TRB 堆栈 — 与编码器呈镜像反转结构。
- Unpatch — 将通道维度重新整形回时间维度。
总下采样比率:patch_size × ∏(encoder_strides)。
默认超参数与 SAME-S 检查点(stabilityai/SAME-S)相匹配。若要加载 SAME-L(stabilityai/SAME-L,由 SA3 Medium 使用),请传入 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)
参数:
sample : (B, audio_channels, T) 波形张量。
return_dict : 如果 True,则返回一个 AutoencoderSAMEOutput。
返回值:
形状为 (B, latent_dim, T // downsampling_ratio) 的潜在张量(当 return_dict 为 True 时,包裹在 AutoencoderSAMEOutput 中)。
将立体声音频编码为潜在表示。
decode[[diffusers.AutoencoderSAME.decode]]
decode(latents: Tensor, return_dict: bool = True)
参数:
latents : (B, latent_dim, T_latent) 潜在张量。
return_dict : 如果 True,则返回一个 AutoencoderSAMEDecoderOutput。
返回值:
形状为 (B, audio_channels, T_latent × downsampling_ratio) 的波形张量(当 return_dict 为 True 时,包裹在 AutoencoderSAMEDecoderOutput 中)。
将潜在变量解码回立体声音频。
forward[[diffusers.AutoencoderSAME.forward]]
forward(sample: Tensor, return_dict: bool = True)
参数:
sample : (B, audio_channels, T) 波形张量。
return_dict : 如果 True,则返回一个 AutoencoderSAMEDecoderOutput。
返回值:
重构后的波形(形状与 sample 相同,可能因填充而更长),当 return_dict 为 True 时,会包裹在 AutoencoderSAMEDecoderOutput 中。
对 sample 进行编码并立即解码(重建)。
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)
参数:
in_channels : 输入通道数。
out_channels : 输出通道数。
stride : 下采样/上采样因子。
mode : "encoder" 或 "decoder"。
transformer_depth : TransformerBlock 层的数量。
dim_heads : 注意力头维度。
use_differential : 是否使用差分注意力。
ff_mult : 前馈扩展因子。
sliding_window : 潜在表示中的滑动窗口半宽(频带半宽为 sliding_window * (stride + 1))。
sinusoidal_blocks : 使用 sin FFN 门控而非 SiLU 的末尾 Transformer 层数。
SAME 的核心构建模块。
编码器模式(步长 S):将 S 个连续输入帧分组为一个片段,追加一个可学习的输出嵌入,然后在展平后的完整片段序列上运行 D 层 Transformer,仅保留输出嵌入 → 实现 S 倍下采样。
解码器模式(步幅 S):将 1 个输入帧与 S 个可学习输出嵌入分组,在展平后的完整序列上运行 D 层 Transformer,然后保留 S 个输出嵌入 → 实现 S 倍上采样。
Attention 在展平的分段序列上使用重叠的 滑动窗口 带状掩码:每个 token 关注其左右两侧各 sliding_window * (stride + 1) 个邻居。RoPE 基于完整序列长度计算。这与参考实现完全一致(单个不重叠的块仅在一个分段上匹配)。
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)
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)
Xet Storage Details
- Size:
- 9.36 kB
- Xet hash:
- 99f7780d064e5647c58cdd9e73aef014c992daa2e4029fa26941217628a63b4c
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.