Diffusers documentation

AutoencoderSAME

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderSAME

SAME(Semantically-Aligned Music Encoder)オートエンコーダーは、Stable Audio 3によって使用され、ステレオ音声波形をコンパクトな潜在変数シーケンスに圧縮し、再構築するために用いられます。

エンコーダーはSAMETransformerResamplingBlockモジュールをスタックし、各モジュールは固定数のオーディオパッチフレームをグループ化し、差分トランスフォーマーを通じて1つの学習可能な出力トークンを生成します。デコーダーはこの過程を逆転させ、各潜在トークンをオーディオフレームのパッチに復元します。

ソフトノームボトルネック(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_size ×を寄与します。 本番環境での推奨値: 256。
  • encoder_channels — TRB のベースチャネル数。SAME-S では 128、SAME-L では 256 です。
  • encoder_c_mults — 各 TRB レベルのチャネル乗数(TRB ごとに 1 項目)。SAME-S と SAME-L の両方で (6,) が使用され、隠れ次元が encoder_channels × 6 である単一の TRB になります。
  • encoder_strides — 各 TRB レベルにおけるダウン/アップサンプリングのストライド。SAME-S と SAME-L の両方で (16,) が使用され、ストライド 16 の TRB が 1 つになります。
  • 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 — Attentionヘッドの次元。本番環境のSAME-S/Lでは64です。
  • ff_mult — SwiGLUフィードフォワードの拡張係数。
  • sliding_window — バンドマスク注意機構におけるスライディングウィンドウの半幅(潜在変数単位)。本番環境の SAME-S/L では 1 を使用します。
  • encoder_sinusoidal_blocks — エンコーダー内でsin FFNゲーティングを使用する末尾のTransformer層のTRBごとの数(SAME-L: (0,))。
  • decoder_sinusoidal_blocks — デコーダーにおいて、末尾の Transformer レイヤーのうち sin FFN ゲーティングを使用するものの TRB 単位の数(SAME-L: (8,))。
  • sampling_rate — Hz 単位のオーディオのサンプリングレート(例: 44100)。

Stable Audio 3のSemantically-Aligned Music Encoder (SAME)オートエンコーダー(arXiv 2605.17991)。

モデルは以下で構成されています:

  • パッチ埋め込み — ステレオオーディオを重複しないパッチにリシェイプし、時間軸をチャネル軸に置き換えます(patch_size × のダウンサンプリング、学習可能なパラメータなし)。
  • エンコーダーTRBスタック — ∏(encoder_strides)倍の係数でさらにダウンサンプリングを行うSAMETransformerResamplingBlockブロック。
  • Soft-norm bottleneck — 実行標準偏差を持つ学習可能なアフィン正規化。
  • Decoder 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 を返します。

潜在変数(latents)をステレオ音声にデコードします。

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 — Attentionヘッドの次元数。
  • use_differential — 差分アテンションを使用するかどうか。
  • ff_mult — フィードフォワードの拡張係数。
  • sliding_window — 潜在変数におけるスライディングウィンドウの半幅(バンドの半幅は sliding_window * (stride + 1) です)。
  • sinusoidal_blocks — SiLU の代わりに sin FFN ゲーティングを使用する末尾の Transformer レイヤーの数。

SAMEの基本的な構成要素です。

エンコーダーモード(ストライド S): S 個の連続する入力フレームを 1 つのセグメントにまとめ、学習可能な出力埋め込みを 1 つ付加します。その後、フラット化されたセグメントシーケンス全体に対して D 層の Transformer を実行し、出力埋め込みのみを保持します → S 倍ダウンサンプリング。

デコーダーモード(ストライド S): 1つの入力フレームをS個の学習可能な出力埋め込みとグループ化し、フラット化されたシーケンス全体に対してD層のTransformerレイヤーを実行した上で、S個の出力埋め込みを保持します → S倍のアップサンプリング。

Attention は、フラット化されたセグメントシーケンスに対して、重複するスライディングウィンドウのバンドマスクを使用します。各トークンは、両側にsliding_window * (stride + 1)個の近傍トークンにアテンションを向けます。RoPE はシーケンス全体の長さに対して計算されます。これにより、参照実装と完全に一致します(重複しない単一のチャンクでは、1つのセグメントでのみ一致します)。

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