Diffusers documentation
AutoencoderKLMiniMaxH3Audio
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
< source >( 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
< source >( 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
< source >( 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
< source >( 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].
Кодируйте, а затем декодируйте звуковую волну.