# Kandinsky 6 VAE

Kandinsky 6 sử dụng K-VAE 3D nhân quả cho siêu phân giải video và VAE mel-spectrogram của MMAudio, kết hợp với [MMAudioVocoder](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) BigVGAN riêng biệt, để tạo âm thanh đồng bộ.

## Kandinsky6SRVAE[[diffusers.Kandinsky6SRVAE]]

3D K-VAE nhân quả được sử dụng bởi [Kandinsky6SRPipeline](/docs/diffusers/main/vi/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline). Nó xử lý các video có độ dài tùy ý trong các phân đoạn có bộ nhớ giới hạn, đồng thời tái tạo chính xác kết quả đầu ra của một lần chạy duy nhất, không phân đoạn.

```python
import torch
from diffusers import Kandinsky6SRVAE

vae = Kandinsky6SRVAE.from_pretrained(
    "kandinskylab/Kandinsky-6.0-VSR-5s-Diffusers", subfolder="vae", torch_dtype=torch.bfloat16
)
```

#### diffusers.Kandinsky6SRVAE[[diffusers.Kandinsky6SRVAE]]

```python
diffusers.Kandinsky6SRVAE(in_channels: int = 3, out_channels: int = 3, latent_channels: int = 64, encoder_block_out_channels: tuple[int, ...] = (16, 128, 256, 512, 1024), decoder_block_out_channels: tuple[int, ...] = (16, 256, 512, 1024, 2048), layers_per_block: int = 2, temporal_compression_ratio: int = 4, temporal_compression_start_level: int = 1, scaling_factor: float = 0.910344004631042)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L516)

**Tham số:**

in_channels (`int`, mặc định là `3`) : Số kênh pixel.

out_channels (`int`, mặc định là `3`) : Số lượng kênh pixel được tái tạo.

latent_channels (`int`, mặc định là `64`) : Số lượng kênh tiềm ẩn.

encoder_block_out_channels (`tuple[int, ...]`, mặc định là `(16, 128, 256, 512, 1024)`) : Độ rộng đầu ra của các khối residual ở mỗi cấp encoder; mọi cấp trừ cấp cuối cùng sẽ giảm một nửa kích thước không gian và tăng gấp đôi độ rộng khi chuyển sang cấp tiếp theo.

decoder_block_out_channels (`tuple[int, ...]`, mặc định là `(16, 256, 512, 1024, 2048)`) : Độ rộng đầu ra của các khối dư (residual blocks) ở mỗi cấp độ của bộ giải mã.

layers_per_block (`int`, mặc định là `2`) : Số lượng khối residual ở mỗi cấp độ của encoder; decoder sử dụng thêm một khối ở mỗi cấp độ.

temporal_compression_ratio (`int`, mặc định là `4`) : Hệ số nén thời gian; `log2` của số cấp liên tiếp cũng nén thời gian.

temporal_compression_start_level (`int`, mặc định là `1`) : Cấp độ đầu tiên nén thời gian.

scaling_factor (`float`, mặc định là `0.910344`) : Hệ số tỷ lệ được áp dụng cho các biến tiềm năng trước khi chúng đi vào bộ biến đổi khuếch tán.

Causal 3D K-VAE được [Kandinsky6SRPipeline](/docs/diffusers/main/vi/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) sử dụng để mã hóa và giải mã video.

Video được xử lý theo các đoạn thời gian gồm 16 khung hình pixel (cộng thêm khung hình đầu tiên). Các phép tích chập nhân quả (causal convolutions) giữ trạng thái đệm (padding state) giữa các đoạn, do đó việc phân đoạn chỉ giới hạn bộ nhớ đỉnh (peak memory) và không làm thay đổi kết quả.

#### encode[[diffusers.Kandinsky6SRVAE.encode]]

```python
encode(x: torch.Tensor, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L585)

**Tham số:**

x (`torch.Tensor` có hình dạng `(batch_size, channels, num_frames, height, width)`) : Video pixel trong `[-1, 1]`. `num_frames` nên là `1 + k * temporal_compression_ratio`.

return_dict (`bool`, mặc định là `True`) : Xác định có trả về [AutoencoderKLOutput](/docs/diffusers/main/vi/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) thay vì một tuple thông thường hay không.

Mã hóa một video thành phân phối ẩn của nó.

#### decode[[diffusers.Kandinsky6SRVAE.decode]]

```python
decode(z: torch.Tensor, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L611)

**Tham số:**

z (`torch.Tensor` có hình dạng `(batch_size, latent_channels, num_latent_frames, height, width)`) : Các latent, đã được chia cho `scaling_factor`.

return_dict (`bool`, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.DecoderOutput` thay vì một tuple thông thường hay không.

Giải mã các biến ẩn thành một video.

#### forward[[diffusers.Kandinsky6SRVAE.forward]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L642)

**Tham số:**

sample (`torch.Tensor` có hình dạng `(batch_size, channels, num_frames, height, width)`) : Video pixel trong `[-1, 1]`. `num_frames` nên là `1 + k * temporal_compression_ratio`.

sample_posterior (`bool`, *tùy chọn*, mặc định là `False`) : Có lấy mẫu từ hậu nghiệm tiềm ẩn thay vì sử dụng mode của nó hay không.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.DecoderOutput` thay vì một tuple thông thường hay không.

generator (`torch.Generator`, *tùy chọn*) : Một [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) để làm cho việc lấy mẫu trở nên tất định.

**Trả về:** `~models.autoencoder_kl.DecoderOutput` hoặc `tuple`

Nếu `return_dict` là True, một `~models.autoencoder_kl.DecoderOutput` sẽ được trả về, ngược lại một `tuple` thông thường sẽ được trả về. `sample` của nó là video đã được tái tạo.

## MMAudioVAE[[diffusers.MMAudioVAE]]

VAE mel-spectrogram được sử dụng bởi [Kandinsky6TI2VAPipeline](/docs/diffusers/main/vi/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline) khi `sample_audio=True`. Đầu ra của `decode` là một mel spectrogram; hãy truyền nó qua [MMAudioVocoder](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) để nhận được waveform.

Bản tham chiếu có thể được tìm thấy tại [hkchengrex/MMAudio](https://github.com/hkchengrex/MMAudio) (giấy phép MIT).

```python
import torch
from diffusers import MMAudioVAE

audio_vae = MMAudioVAE.from_pretrained(
    "kandinskylab/Kandinsky-6.0-Pro-distill-5s-Diffusers", subfolder="audio_vae", torch_dtype=torch.bfloat16
)
```

#### diffusers.MMAudioVAE[[diffusers.MMAudioVAE]]

```python
diffusers.MMAudioVAE(mel_bins: int = 128, latent_channels: int = 40, hidden_channels: int = 512, channel_multipliers: tuple[int, ...] = (1, 2, 4), layers_per_block: int = 2, sample_rate: int = 44100, n_fft: int = 2048, hop_length: int = 512, scaling_factor: float = 0.417)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L350)

**Tham số:**

mel_bins (`int`, mặc định là `128`) : Số lượng mel bins.

latent_channels (`int`, mặc định là `40`) : Số lượng kênh tiềm ẩn.

hidden_channels (`int`, mặc định là `512`) : Độ rộng cơ bản của autoencoder.

channel_multipliers (`tuple[int, ...]`, mặc định là `(1, 2, 4)`) : Hệ số nhân chiều rộng của các cấp autoencoder.

layers_per_block (`int`, mặc định là `2`) : Số khối residual ở mỗi cấp encoder; decoder sử dụng thêm một khối ở mỗi cấp.

sample_rate (`int`, mặc định là `44100`) : Tần số lấy mẫu của dạng sóng.

n_fft (`int`, mặc định là `2048`) : Kích thước FFT của phần đầu mel.

hop_length (`int`, mặc định là `512`) : Độ dài bước của bộ tiền xử lý mel. Phải khớp với hệ số tăng mẫu tổng của [MMAudioVocoder](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) mà VAE này được ghép cặp.

scaling_factor (`float`, mặc định là `0.417`) : Hệ số tỷ lệ được áp dụng cho các latents trước khi chúng đi vào diffusion transformer.

Audio VAE của [Kandinsky6TI2VAPipeline](/docs/diffusers/main/vi/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline): một autoencoder bảo toàn độ lớn trên phổ log-mel (MMAudio, https://arxiv.org/abs/2412.15322).

`encode` chuyển đổi waveform thành phân phối latent; `decode` chuyển đổi latent trở lại thành mel spectrogram, sau đó [MMAudioVocoder](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) chuyển đổi thành waveform. Một khung latent bao phủ `hop_length * 2` mẫu.

#### encode[[diffusers.MMAudioVAE.encode]]

```python
encode(audio: torch.Tensor, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L403)

**Tham số:**

audio (`torch.Tensor` có hình dạng `(batch_size, num_samples)`) : Dạng sóng đơn trong `[-1, 1]` ở `sample_rate`.

return_dict (`bool`, mặc định là `True`) : Xác định có trả về [AutoencoderKLOutput](/docs/diffusers/main/vi/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) thay vì một tuple thông thường hay không.

Mã hóa một dạng sóng thành phân phối ẩn của nó.

#### decode[[diffusers.MMAudioVAE.decode]]

```python
decode(z: torch.Tensor, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L420)

**Tham số:**

z (`torch.Tensor` có hình dạng `(batch_size, latent_channels, num_latent_frames)`) : Các latent, đã được chia cho `scaling_factor`.

return_dict (`bool`, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.DecoderOutput` thay vì một tuple thông thường hay không.

**Trả về:**

Biểu đồ phổ mel có hình dạng `(batch_size, mel_bins, num_mel_frames)`, sẵn sàng cho [MMAudioVocoder](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVocoder).

Giải mã các biến ẩn thành phổ mel.

#### forward[[diffusers.MMAudioVAE.forward]]

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

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L439)

**Tham số:**

sample (`torch.Tensor` có hình dạng `(batch_size, num_samples)`) : Dạng sóng đơn trong `[-1, 1]` ở `sample_rate` để mã hóa và tái tạo thành phổ mel.

sample_posterior (`bool`, *tùy chọn*, mặc định là `False`) : Có lấy mẫu từ hậu nghiệm tiềm ẩn thay vì sử dụng mode của nó hay không.

return_dict (`bool`, *tùy chọn*, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.DecoderOutput` thay vì một tuple thông thường hay không.

generator (`torch.Generator`, *tùy chọn*) : Một [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) để làm cho việc lấy mẫu trở nên tất định.

**Trả về:** `~models.autoencoder_kl.DecoderOutput` hoặc `tuple`

Nếu `return_dict` là True, một `~models.autoencoder_kl.DecoderOutput` sẽ được trả về, ngược lại một `tuple` thông thường sẽ được trả về. `sample` của nó là phổ mel được tái tạo với hình dạng `(batch_size, mel_bins, num_mel_frames)`.

## MMAudioVocoder[[diffusers.MMAudioVocoder]]

Được điều chỉnh từ các gói vocoder MMAudio của BigVGAN-v2, vốn được lấy từ [NVIDIA/BigVGAN](https://github.com/NVIDIA/BigVGAN) (giấy phép MIT), cùng với các hàm kích hoạt Snake chống aliasing của [alias-free-torch](https://github.com/junjun3518/alias-free-torch) (Giấy phép Apache 2.0).

#### diffusers.MMAudioVocoder[[diffusers.MMAudioVocoder]]

```python
diffusers.MMAudioVocoder(num_mels: int = 128, upsample_initial_channel: int = 1536, upsample_rates: tuple[int, ...] = (8, 4, 2, 2, 2, 2), upsample_kernel_sizes: tuple[int, ...] = (16, 8, 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)))
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/mmaudio_vocoder.py#L154)

**Tham số:**

num_mels (`int`, mặc định là `128`) : Số lượng mel bins của spectrogram đầu vào. Phải khớp với `mel_bins` của [MMAudioVAE](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVAE) tương ứng.

upsample_initial_channel (`int`, mặc định là `1536`) : Độ rộng của lớp đầu tiên.

upsample_rates (`tuple[int, ...]`, mặc định là `(8, 4, 2, 2, 2, 2)`) : Các hệ số mở rộng mẫu của các giai đoạn vocoder. Tích của chúng là hệ số mở rộng mẫu tổng thể và phải khớp với `hop_length` của [MMAudioVAE](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVAE) tương ứng.

upsample_kernel_sizes (`tuple[int, ...]`, mặc định là `(16, 8, 4, 4, 4, 4)`) : Kích thước kernel của các lớp transposed-convolution trong các giai đoạn của vocoder.

resblock_kernel_sizes (`tuple[int, ...]`, mặc định là `(3, 7, 11)`) : Kích thước kernel của các khối residual.

resblock_dilation_sizes (`tuple[tuple[int, ...], ...]`, mặc định là `((1, 3, 5), (1, 3, 5), (1, 3, 5))`) : Dilations của các khối residual.

Vocoder BigVGAN-v2 (https://github.com/NVIDIA/BigVGAN, giấy phép MIT) với các hàm kích hoạt Snake chống aliasing từ https://github.com/junjun3518/alias-free-torch (Apache 2.0), chuyển đổi các mel spectrogram mà [MMAudioVAE](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVAE) giải mã thành dạng sóng cho [Kandinsky6TI2VAPipeline](/docs/diffusers/main/vi/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline).

#### forward[[diffusers.MMAudioVocoder.forward]]

```python
forward(mel: torch.Tensor, return_dict: bool = True)
```

[Nguồn](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/mmaudio_vocoder.py#L213)

**Tham số:**

mel (`torch.Tensor` có hình dạng `(batch_size, num_mels, num_mel_frames)`) : Phổ Mel, được giải mã bởi [MMAudioVAE](/docs/diffusers/main/vi/api/models/kandinsky6_vae#diffusers.MMAudioVAE).

return_dict (`bool`, mặc định là `True`) : Có nên trả về một `~models.autoencoder_kl.DecoderOutput` thay vì một tuple thông thường hay không.

**Trả về:**

Dạng sóng có hình dạng `(batch_size, 1, num_samples)` trong khoảng `[-1, 1]`.

