Diffusers documentation

AutoencoderKLMiniMaxH3Audio

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

AutoencoderKLMiniMaxH3Audio

Аудио-автоэнкодер, используемый в MiniMax-H3 от MiniMax. Он принимает на вход и выдает на выходе волновые формы, без mel-предобработки и отдельного вокодера: стридовый свёрточный энкодер линейки DAC, проекция с причинным вниманием на ширину латентного пространства диффузии и декодер BigVGAN.

Кодер пропускает 800 сэмплов при частоте 32 кГц, то есть 40 латентов в секунду, поэтому волновая форма из 800 * n сэмплов кодируется в n латентов. Волновые формы, длина которых не кратна размеру пропуска, дополняются нулями справа.

Проекция с каузальным вниманием проходит через диспетчер внимания, поэтому set_attention_backend на неё распространяется; её маска — is_causal=True, которую учитывают все бэкенды, кроме _native_npu, чьё ядро не принимает флаг каузальности.

Автоэнкодер моно, и он нормализует латенты по каналам с помощью latents_mean / latents_std, а не скалярного scaling_factor. MiniMax-H3 передаёт стерео как два элемента batch и всегда использует среднее значение апостериорного распределения (latent_dist.mode()), а не выборку.

import torch
from diffusers import AutoencoderKLMiniMaxH3Audio

audio_vae = AutoencoderKLMiniMaxH3Audio.from_pretrained(
    "MiniMaxAI/MiniMax-H3", subfolder="audio_vae", dtype=torch.float32
).to("cuda")  # or "mps", "xpu", "cpu"

AutoencoderKLMiniMaxH3Audio

класс diffusers.AutoencoderKLMiniMaxH3Audio

< >

( encoder_dim: int = 64encoder_rates: tuple[int, ...] = (2, 4, 4, 5, 5)latent_dim: int = 2048latent_channels: int = 32num_attention_heads: int = 8decoder_dim: int = 1024decoder_rates: tuple[int, ...] = (5, 5, 2, 2, 2, 2, 2)decoder_kernel_sizes: tuple[int, ...] = (9, 9, 4, 4, 4, 4, 4)resblock_kernel_sizes: tuple[int, ...] = (3, 7, 11)resblock_dilation_sizes: tuple[tuple[int, ...], ...] = ((1, 3, 5), (1, 3, 5), (1, 3, 5))sampling_rate: int = 32000latents_mean: list[float] | None = Nonelatents_std: list[float] | None = None )

Параметры

  • encoder_dim (int, по умолчанию 64) — Ширина каналов первого свёрточного слоя энкодера; удваивается на каждом этапе понижения разрешения.
  • encoder_rates (tuple[int], по умолчанию (2, 4, 4, 5, 5)) — Шаги кодировщика. Их произведение (800) — это длина шага, то есть 40 латентов/с при 32 кГц.
  • latent_dim (int, по умолчанию 2048) — Ширина стержня энкодера и входа декодера, до/после латентных проекций.
  • latent_channels (int, по умолчанию 32) — Ширина латентного пространства диффузии, то есть количество выходных каналов mean_proj / logs_proj.
  • num_attention_heads (int, по умолчанию 8) — Количество головок в проекции причинно-следственного внимания pre_block.
  • decoder_dim (int, по умолчанию 1024) — Начальное количество каналов BigVGAN; уменьшается вдвое на каждом этапе апсемплинга.
  • decoder_rates (tuple[int], по умолчанию (5, 5, 2, 2, 2, 2, 2)) — Коэффициенты апсемплинга BigVGAN. Их произведение должно быть равно prod(encoder_rates).
  • decoder_kernel_sizes (tuple[int], по умолчанию (9, 9, 4, 4, 4, 4, 4)) — Размер ядра транспонированной свёртки для каждого этапа апсемплинга.
  • resblock_kernel_sizes (tuple[int], по умолчанию (3, 7, 11)) — Размеры ядер параллельных AMP-остаточных блоков на каждом этапе апсемплинга.
  • resblock_dilation_sizes (tuple[tuple[int]], по умолчанию ((1, 3, 5), (1, 3, 5), (1, 3, 5))) — Размеры дилейшена для каждого блока AMP.
  • sampling_rate (int, по умолчанию 32000) — Частота дискретизации звукового сигнала.
  • latents_mean (list[float], необязательный) — Среднее значение по каналам для латентов, которое пайплайн использует для нормализации и денормализации латентов.
  • latents_std (list[float], необязательный) — Стандартное отклонение латентов по каналам, которое пайплайн использует для нормализации и денормализации латентов.

Аудио-автоэнкодер, используемый в MiniMax-H3: свёрточный энкодер линейки DAC и декодер BigVGAN, работающие непосредственно с монофоническими волновыми формами частотой 32 кГц.

Эта модель наследуется от ModelMixin. См. документацию родительского класса для общих методов, которые библиотека реализует для всех моделей (например, загрузка или сохранение).

encode

< >

( sample: Tensorreturn_dict: bool = True ) → MiniMaxH3AudioEncoderOutput or tuple

Параметры

  • sample (torch.Tensor) — Моно-волна формы [batch_size, 1, samples]. MiniMax-H3 передаёт два стереоканала референсного клипа как batch_size = 2.
  • return_dict (bool, по умолчанию True) — Определяет, следует ли возвращать MiniMaxH3AudioEncoderOutput вместо обычного кортежа.

Возвращает

MiniMaxH3AudioEncoderOutput или tuple

Скрытое апостериорное распределение для [batch_size, latent_channels, samples / 800].

Кодируйте звуковую волну в латентное апостериорное распределение аудио.

Сначала волна дополняется нулями справа до кратного hop_length (800 выборок). MiniMax-H3 всегда использует апостериорное среднее (latent_dist.mode()) — головка logs_proj никогда не вычисляется в эталонном конвейере.

decode

< >

( latents: Tensorreturn_dict: bool = True ) → DecoderOutput or tuple

Параметры

  • latents (torch.Tensor) — Стендартизованные латенты формы [batch_size, latent_channels, num_frames]. MiniMax-H3 передает два стереоканала как batch_size = 2.
  • return_dict (bool, по умолчанию True) — Определяет, следует ли возвращать DecoderOutput вместо обычного кортежа.

Возвращает

DecoderOutput или tuple

Волновая форма формы [batch_size, 1, num_frames * 800], ограниченная диапазоном [-1, 1].

Декодирование аудиолатентов в звуковой сигнал.

forward

< >

( sample: Tensorsample_posterior: bool = Falsereturn_dict: bool = Truegenerator: typing.Optional[torch.Generator] = None ) → DecoderOutput or tuple

Параметры

  • sample (torch.Tensor) — Монофоническая волна формы [batch_size, 1, samples].
  • sample_posterior (bool, по умолчанию False) — Определяет, следует ли выбирать значения из апостериорного распределения, а не использовать его моду. MiniMax-H3 использует моду.
  • return_dict (bool, по умолчанию True) — Определяет, следует ли возвращать DecoderOutput вместо обычного кортежа.
  • generator (torch.Generator, необязательный) — Генератор, используемый при sample_posterior=True.

Возвращает

DecoderOutput или tuple

Волновая форма, прошедшая цикл преобразований, с формой [batch_size, 1, num_frames * 800], ограниченной диапазоном [-1, 1].

Кодируйте, а затем декодируйте звуковую волну.

Update on GitHub