Diffusers documentation

自编码器SAME

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

自编码器SAME

SAME(Semantically-Aligned Music Encoder,语义对齐音乐编码器)自编码器被 Stable Audio 3 用于将立体声音频波形压缩为紧凑的潜在序列并进行重建。

编码器堆叠了 SAMETransformerResamplingBlock 模块,每个模块将固定数量的音频 patch 帧分组,并通过差分 Transformer 生成一个可学习的输出 token。解码器则反转此过程,将每个潜在 token 扩展回一组音频帧 patch。

软归一化瓶颈(SoftNormBottleneck)在扩散模型之前和之后对潜在变量进行归一化,从而提供稳定的训练动态。

AutoencoderSAME

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

参数

  • audio_channels — 音频通道数(立体声为 2)。
  • patch_size — 在 TRB 编码器之前应用(并在 TRB 解码器之后反转)的非重叠 patch 大小。对总下采样率的贡献为 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 — 编码器中每个 TRB 末尾使用 sin FFN 门控的 Transformer 层数(SAME-L: (0,))。
  • decoder_sinusoidal_blocks — 解码器中每个 TRB 末尾使用 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

< >

( sample: Tensorreturn_dict: bool = True )

参数

  • sample — (B, audio_channels, T) 波形张量。
  • return_dict — 如果为 True,则返回 AutoencoderSAMEOutput。

将立体声音频编码为潜在表示。

decode

< >

( latents: Tensorreturn_dict: bool = True )

参数

  • latents — (B, latent_dim, T_latent) 潜在张量。
  • return_dict — 如果为 True,则返回 AutoencoderSAMEDecoderOutput。

将潜在变量解码回立体声音频。

forward

< >

( sample: Tensorreturn_dict: bool = True )

参数

  • sample — (B, audio_channels, T) 波形张量。
  • return_dict — 如果为 True,则返回 AutoencoderSAMEDecoderOutput。

对 sample 进行编码并立即解码(重建)。

SAMETransformerResamplingBlock

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

参数

  • 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) 个相邻 token。RoPE 基于完整序列长度计算。这与参考实现完全一致(单个不重叠的块仅在一个片段上匹配)。

AutoencoderSAMEOutput

class diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEOutput

< >

( latents: Tensor )

AutoencoderSAME.encode() 的输出。

AutoencoderSAMEDecoderOutput

class diffusers.models.autoencoders.autoencoder_same.AutoencoderSAMEDecoderOutput

< >

( sample: Tensor )

AutoencoderSAME.decode() 的输出。

Update on GitHub