# AutoencoderKLMiniMaxH3Audio

MiniMax による [MiniMax-H3](https://huggingface.co/MiniMaxAI) で使用されるオーディオオートエンコーダーです。波形を入力し波形を出力する構成で、mel フロントエンドも独立したボコーダもありません。DAC 系譜のストライド畳み込みエンコーダー、拡散潜在変数の幅への因果注意投影、そして BigVGAN デコーダーで構成されています。

エンコーダーは 32 kHz で 800 サンプルずつスキップするため、1 秒あたり 40 個の潜在変数（latents）になります。したがって、`800 * n` サンプルの波形は `n` 個の潜在変数にエンコードされます。ホップの整数倍でない波形は、右側をパディングします。

causal-attention の projection は attention dispatcher を通るため、`set_attention_backend` が適用されます。そのマスクは `is_causal=True` であり、`_native_npu` を除くすべてのバックエンドがこれを尊重します。`_native_npu` のカーネルは causal フラグを受け取りません。

オートエンコーダーは**モノラル**であり、スカラーの`scaling_factor`ではなく、`latents_mean` / `latents_std` によってチャネルごとに潜在変数を正規化します。MiniMax-H3 はステレオを 2 つの*バッチ*項目として保持し、常に後方分布の平均(`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`) : エンコーダーの最初の畳み込みのチャネル幅。ダウンサンプリングの各段階で2倍になります。

encoder_rates (`tuple[int]`、デフォルトは `(2, 4, 4, 5, 5)`) : エンコーダのストライドです。その積 (`800`) がホップ長となり、32 kHz では 40 latents/s に相当します。

latent_dim (`int`、デフォルトは `2048`) : 潜在変数投影の前/後における、エンコーダのトランクおよびデコーダの入力の幅。

latent_channels (`int`、デフォルトは`32`) : 拡散潜在変数の幅、つまり`mean_proj` / `logs_proj`の出力チャネル数。

num_attention_heads (`int`、デフォルトは`8`) : causal-attention projection `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 ブロックごとの dilation。

sampling_rate (`int`、デフォルトは`32000`) : 波形のサンプリングレート。

latents_mean (`list[float]`、*optional*) : パイプラインが潜在変数の正規化 / 非正規化に使用する、チャネルごとの潜在平均値。

latents_std (`list[float]`、*任意*) : パイプラインが潜在変数の正規化 / 非正規化に使用する、チャネルごとの潜在変数の標準偏差。

[MiniMax-H3](https://huggingface.co/MiniMaxAI)で使用されるオーディオオートエンコーダー: DAC系譜の畳み込みエンコーダーとBigVGANデコーダーで構成され、モノラル32 kHzの波形を直接処理します。

このモデルは[ModelMixin](/docs/diffusers/main/ja/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 は、参照クリップのステレオ 2 チャンネルを `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 は、2 つのステレオチャンネルを `batch_size = 2` として渡します。

return_dict (`bool`、デフォルトは`True`) : プレーンなタプルではなく[DecoderOutput](/docs/diffusers/main/ja/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput)を返すかどうか。

**戻り値:** [DecoderOutput](/docs/diffusers/main/ja/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) または `tuple`

`[batch_size, 1, num_frames * 800]` の形状の波形で、`[-1, 1]` にクランプされています。

オーディオの潜在変数（latents）を波形にデコードします。

#### 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/ja/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput)を返すかどうか。

generator (`torch.Generator`, *任意*) : `sample_posterior=True` の場合に使用される Generator。

**戻り値:** [DecoderOutput](/docs/diffusers/main/ja/api/models/autoencoderkl_qwenimage#diffusers.models.autoencoders.vae.DecoderOutput) または `tuple`

`[batch_size, 1, num_frames * 800]` の形状を持つ、`[-1, 1]` にクランプされた往復波形です。

波形をエンコードしてからデコードします。

