Buckets:
AutoencoderSAME
Автоэнкодер SAME (Semantically-Aligned Music Encoder) используется в Stable Audio 3 для сжатия стереоаудио-волновых форм в компактную латентную последовательность и их последующей реконструкции.
Кодировщик складывает модули SAMETransformerResamplingBlock, каждый из которых группирует фиксированное количество кадров аудиопатчей и формирует один обучаемый выходной токен с помощью дифференциального трансформера. Декодировщик обращает этот процесс, расширяя каждый латентный токен обратно в патч аудиоканов.
Мягкое нормализующее узкое место (SoftNormBottleneck) нормализует латенты до и после диффузионной модели, обеспечивая стабильную динамику обучения.
AutoencoderSAME[[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-кодером (и обратный после TRB-декодера). Вносит вклад patch_size × в общее соотношение даунсемплинга. Значение для продакшена: 256.
encoder_channels : Базовое количество каналов для TRB. 128 для SAME-S, 256 для SAME-L.
encoder_c_mults : Множитель каналов для каждого уровня TRB (одна запись на TRB). Оба SAME-S и SAME-L используют (6,) — один TRB, размерность скрытого слоя которого равна encoder_channels × 6.
encoder_strides : Шаг даун-/ап-сэмплинга для каждого уровня TRB. Оба SAME-S и SAME-L используют (16,) — один TRB с шагом 16.
encoder_transformer_depths : Количество слоёв Transformer на уровень TRB. 6 для SAME-S, 12 для SAME-L.
latent_dim : Размерность латентного пространства. 256 для обоих вариантов.
use_differential_attention : Если True, использовать дифференциальное внимание внутри каждого блока трансформера TRB (по умолчанию включено для SAME-S/L).
dim_heads : Размер измерения головы внимания. 64 для SAME-S/L в продакшене.
ff_mult : коэффициент расширения SwiGLU для полносвязного слоя.
sliding_window : Полуполоса (в латентах) для внимания с полосным маскированием. В производственных системах SAME-S/L используется значение 1.
encoder_sinusoidal_blocks : Количество последовательных трансформерных слоёв в кодере, использующих sin FFN-гейтинг на каждый TRB (SAME-L: (0,)).
decoder_sinusoidal_blocks : Количество последовательных трансформерных слоёв в декодере, использующих sin FFN-гейтинг, для каждого TRB (SAME-L: (8,)).
sampling_rate : Частота дискретизации аудио в Гц (например, 44100).
Автоэнкодер Semantically-Aligned Music Encoder (SAME) из Stable Audio 3 (arXiv 2605.17991).
Модель состоит из:
- Встраивание патчей — преобразует стереоаудио в неперекрывающиеся патчи, жертвуя временным разрешением ради каналов (
patch_size ×даунсемплинг, без обучаемых параметров). - Стек TRB энкодера — блоки
SAMETransformerResamplingBlock, которые дополнительно уменьшают размерность в∏(encoder_strides)раз. - Soft-norm bottleneck — обучаемая аффинная нормализация с текущим стандартным отклонением.
- Стек декодера 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) (обёрнут в AutoencoderSAMEOutput, если return_dict равно True).
Кодирование стереозвука в латенты.
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) (обёрнут в AutoencoderSAMEDecoderOutput, если return_dict равно True).
Декодировать латенты обратно в стереоаудио.
forward[[diffusers.AutoencoderSAME.forward]]
forward(sample: Tensor, return_dict: bool = True)
Параметры:
sample : тензор волновой формы (B, audio_channels, T).
return_dict : Если True, возвращает AutoencoderSAMEDecoderOutput.
Возвращает:
Восстановленная волна (та же форма, что и у sample, возможно, длиннее из-за дополнения), обернутая в AutoencoderSAMEDecoderOutput, если return_dict равно True.
Кодируйте и сразу декодируйте 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 : Коэффициент расширения feed-forward.
sliding_window : Полуполоса скользящего окна в латентах (полуполоса полосы составляет sliding_window * (stride + 1)).
sinusoidal_blocks : Количество конечных трансформерных слоёв, использующих sin FFN-гейтинг вместо SiLU.
Базовый строительный блок SAME.
Режим кодировщика (шаг S): группирует S последовательных входных кадров в один сегмент, добавляет единственное обучаемое выходное вложение, затем прогоняет D трансформерных слоёв по всей развёрнутой последовательности сегмента и сохраняет только выходное вложение → уменьшение размера в S раз.
Режим декодера (шаг S): объединяет 1 входной кадр с S обучаемыми выходными эмбеддингами, прогоняет D слои трансформера по всей развёрнутой последовательности, затем сохраняет S выходных эмбеддингов → апсемплинг с коэффициентом S.
Attention использует перекрывающуюся скользящую оконную маску по сглаженной последовательности сегментов: каждый токен обращается к 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)
Результат работы AutoencoderSAME.encode().
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)
Результат работы AutoencoderSAME.decode().
Xet Storage Details
- Size:
- 13.3 kB
- Xet hash:
- 952ae707052349364d58508a07e13ad027414c43310522256d97ca59bac7d3d6
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.