# AutoencoderKLMiniMaxH3Audio

Аудио-автоэнкодер, используемый в [MiniMax-H3](https://huggingface.co/MiniMaxAI) от 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()`), а не выборку.

```python
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]]

#### diffusers.AutoencoderKLMiniMaxH3Audio[[diffusers.AutoencoderKLMiniMaxH3Audio]]

```python
diffusers.AutoencoderKLMiniMaxH3Audio(encoder_dim: int = 64, encoder_rates: tuple[int, ...] = (2, 4, 4, 5, 5), latent_dim: int = 2048, latent_channels: int = 32, num_attention_heads: int = 8, decoder_dim: int = 1024, decoder_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 = 32000, latents_mean: list[float] | None = None, latents_std: list[float] | None = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_audio.py#L489)

**Параметры:**

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](https://huggingface.co/MiniMaxAI): свёрточный энкодер линейки DAC и декодер BigVGAN, работающие непосредственно с монофоническими волновыми формами частотой 32 кГц.

Эта модель наследуется от [ModelMixin](/docs/diffusers/main/ru/api/models/overview#diffusers.ModelMixin). См. документацию родительского класса для общих методов, которые библиотека реализует для всех моделей (например, загрузка или сохранение).

#### encode[[diffusers.AutoencoderKLMiniMaxH3Audio.encode]]

```python
encode(sample: Tensor, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_audio.py#L583)

**Параметры:**

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[[diffusers.AutoencoderKLMiniMaxH3Audio.decode]]

```python
decode(latents: Tensor, return_dict: bool = True)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_audio.py#L623)

**Параметры:**

latents (`torch.Tensor`) : Нормализованные латенты формы `[batch_size, latent_channels, num_frames]`. MiniMax-H3 передает два стереоканала как `batch_size = 2`.

return_dict (`bool`, по умолчанию `True`) : Возвращать ли [DecoderOutput](/docs/diffusers/main/ru/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) вместо обычного кортежа.

**Возвращает:** [DecoderOutput](/docs/diffusers/main/ru/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) или `tuple`

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

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

#### forward[[diffusers.AutoencoderKLMiniMaxH3Audio.forward]]

```python
forward(sample: Tensor, sample_posterior: bool = False, return_dict: bool = True, generator: typing.Optional[torch.Generator] = None)
```

[Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kl_minimax_h3_audio.py#L653)

**Параметры:**

sample (`torch.Tensor`) : Моно-волна формы `[batch_size, 1, samples]`.

sample_posterior (`bool`, по умолчанию `False`) : Флаг, определяющий, следует ли выполнять выборку из апостериорного распределения вместо использования его моды. MiniMax-H3 использует моду.

return_dict (`bool`, по умолчанию `True`) : Возвращать ли [DecoderOutput](/docs/diffusers/main/ru/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) вместо обычного кортежа.

generator (`torch.Generator`, *необязательный*) : генератор, используемый при `sample_posterior=True`.

**Возвращает:** [DecoderOutput](/docs/diffusers/main/ru/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) или `tuple`

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

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

