# Kandinsky 6 VAEs

يستخدم Kandinsky 6 نموذج K-VAE ثلاثي الأبعاد سببي (causal) لرفع دقة الفيديو، إلى جانب نموذج VAE الخاص بمطياف الميّل (mel-spectrogram) من MMAudio، مقترنًا بمُرمِّز صوتي منفصل هو BigVGAN [MMAudioVocoder](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVocoder)، من أجل توليد صوت متزامن.

## Kandinsky6SRVAE[[diffusers.Kandinsky6SRVAE]]

نموذج K-VAE السببي ثلاثي الأبعاد الذي يستخدمه [Kandinsky6SRPipeline](/docs/diffusers/main/ar/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline). يعالج مقاطع فيديو بطول غير محدود في مقاطع ذاكرة محدودة مع إعادة إنتاج المخرج الدقيق لمرور واحد غير مقسّم.

```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)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L516)

**المعاملات:**

in_channels (`int`، القيمة الافتراضية `3`) : عدد قنوات البكسل.

out_channels (`int`، القيمة الافتراضية `3`) : عدد قنوات البكسلات المُعاد بناؤها.

latent_channels (`int`، القيمة الافتراضية `64`) : عدد قنوات الكمون.

encoder_block_out_channels (`tuple[int, ...]`، القيمة الافتراضية هي `(16, 128, 256, 512, 1024)`) : عرض المخرجات للكتل المتبقية (residual blocks) عند كل مستوى من مستويات المُشفِّر (encoder)؛ حيث يُنصِّف كل مستوى باستثناء الأخير الحجم المكاني ويُضاعف العرض في الطريق إلى المستوى التالي.

decoder_block_out_channels (`tuple[int, ...]`، القيمة الافتراضية هي `(16, 256, 512, 1024, 2048)`) : عرض المخرجات للكتل المتبقية (residual blocks) عند كل مستوى من مستويات فك الترميز (decoder).

layers_per_block (`int`، القيمة الافتراضية `2`) : عدد كتل البقايا لكل مستوى في المُشفِّر؛ يستخدم المُفكِّك كتلةً إضافيةً واحدةً لكل مستوى.

temporal_compression_ratio (`int`، القيمة الافتراضية `4`) : معامل الضغط الزمني؛ `log2` للمستويات المتتالية له تضغط الزمن أيضاً.

temporal_compression_start_level (`int`، القيمة الافتراضية `1`) : المستوى الأول الذي يضغط الزمن.

scaling_factor (`float`، القيمة الافتراضية `0.910344`) : المقياس المطبَّق على الكمونيات قبل دخولها إلى محوّل الانتشار.

نموذج Causal 3D K-VAE الذي يستخدمه [Kandinsky6SRPipeline](/docs/diffusers/main/ar/api/pipelines/kandinsky6#diffusers.Kandinsky6SRPipeline) لتشفير الفيديو وفك تشفيره.

تُعالَج مقاطع الفيديو في مقاطع زمنية تتكون من 16 إطارًا بكسليًا (إضافةً إلى الإطار الافتتاحي). تحافظ الالتفافات السببية على حالة الحشو الخاصة بها بين المقاطع، لذا فإن التقطيع يحدد ذروة الذاكرة فقط دون أن يغيّر النتيجة.

#### ترميز[[diffusers.Kandinsky6SRVAE.encode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L585)

**المعاملات:**

x (`torch.Tensor` من الشكل `(batch_size, channels, num_frames, height, width)`) : فيديو بكسل في `[-1, 1]`. يجب أن يكون `num_frames` مساوياً لـ `1 + k * temporal_compression_ratio`.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [AutoencoderKLOutput](/docs/diffusers/main/ar/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) بدلاً من tuple عادي.

ترميز فيديو إلى توزيعه الكامن.

#### فك الترميز[[diffusers.Kandinsky6SRVAE.decode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L611)

**المعاملات:**

z (`torch.Tensor` من الشكل `(batch_size, latent_channels, num_latent_frames, height, width)`) : الكمونيات، مقسومة مسبقًا على `scaling_factor`.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.DecoderOutput` بدلاً من tuple عادي.

فكّ تشفير الكمونيات إلى فيديو.

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

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_kandinsky6_sr.py#L642)

**المعاملات:**

sample (`torch.Tensor` من الشكل `(batch_size, channels, num_frames, height, width)`) : فيديو بكسل في `[-1, 1]`. يجب أن يكون `num_frames` مساوياً لـ `1 + k * temporal_compression_ratio`.

sample_posterior (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم أخذ عينة من التوزيع الخلفي الكامن بدلاً من استخدام وضعه.

return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.DecoderOutput` بدلاً من tuple عادي.

generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل عملية أخذ العينات حتمية.

**يعيد:** `~models.autoencoder_kl.DecoderOutput` أو `tuple`

إذا كان `return_dict` صحيحًا، يُعاد `~models.autoencoder_kl.DecoderOutput`، وإلا يُعاد `tuple` عادي. حيث أن `sample` هو الفيديو المُعاد بناؤه.

## MMAudioVAE[[diffusers.MMAudioVAE]]

نموذج VAE لطيف الميغاسبيكتروغرام الذي يستخدمه [Kandinsky6TI2VAPipeline](/docs/diffusers/main/ar/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline) عند `sample_audio=True`. مخرجات `decode` الخاصة به هي ميغاسبيكتروغرام؛ مرّرها عبر [MMAudioVocoder](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) للحصول على موجة.

يمكن العثور على التنفيذ المرجعي في [hkchengrex/MMAudio](https://github.com/hkchengrex/MMAudio) (رخصة 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)
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L350)

**المعاملات:**

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`) : حجم FFT للواجهة الأمامية للميل.

hop_length (`int`، القيمة الافتراضية `512`) : طول الخطوة في الواجهة الأمامية للميل. يجب أن يتطابق مع عامل التوسيع الكلي الخاص بـ [MMAudioVocoder](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) الذي يُقرن به هذا VAE.

scaling_factor (`float`، القيمة الافتراضية `0.417`) : المقياس المطبَّق على الكمونيات قبل دخولها إلى محوّل الانتشار.

VAE الصوتي الخاص بـ [Kandinsky6TI2VAPipeline](/docs/diffusers/main/ar/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline): مُشفِّر ذاتي يحافظ على السعة فوق مطيافات log-mel (MMAudio، https://arxiv.org/abs/2412.15322).

`encode` يحوّل الموجة الصوتية إلى توزيع كامن؛ `decode` يحوّل القيم الكامنة مرة أخرى إلى طيف مل، ثم يحوّله [MMAudioVocoder](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVocoder) إلى موجة صوتية. تغطي كل إطار كامن `hop_length * 2` عينة.

#### ترميز[[diffusers.MMAudioVAE.encode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L403)

**المعاملات:**

audio (`torch.Tensor` من الشكل `(batch_size, num_samples)`) : موجة أحادية (Mono) في `[-1, 1]` عند `sample_rate`.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع [AutoencoderKLOutput](/docs/diffusers/main/ar/api/models/autoencoderkl_qwenimage#diffusers.models.modeling_outputs.AutoencoderKLOutput) بدلاً من tuple عادي.

ترميز موجة صوتية إلى توزيعها الكامن.

#### فك الترميز[[diffusers.MMAudioVAE.decode]]

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L420)

**المعاملات:**

z (`torch.Tensor` من الشكل `(batch_size, latent_channels, num_latent_frames)`) : الكمونيات، مقسومة مسبقًا على `scaling_factor`.

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.DecoderOutput` بدلاً من tuple عادي.

**يعيد:**

مطياف ميل (mel spectrogram) ذو الشكل `(batch_size, mel_bins, num_mel_frames)`، وجاهز لـ [MMAudioVocoder](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVocoder).

فكّ تشفير الكمونيات إلى طيف ملّ.

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

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/autoencoder_mmaudio.py#L439)

**المعاملات:**

sample (`torch.Tensor` من الشكل `(batch_size, num_samples)`) : موجة أحادية (Mono waveform) في `[-1, 1]` بمعدل `sample_rate` لتشفيرها وإعادة بنائها كطيف ميل (mel spectrogram).

sample_posterior (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان سيتم أخذ عينة من التوزيع الخلفي الكامن بدلاً من استخدام وضعه.

return_dict (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.DecoderOutput` بدلاً من tuple عادي.

generator (`torch.Generator`، *اختياري*) : [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html) لجعل عملية أخذ العينات حتمية.

**يعيد:** `~models.autoencoder_kl.DecoderOutput` أو `tuple`

إذا كان `return_dict` صحيحًا، يُعاد `~models.autoencoder_kl.DecoderOutput`، وإلا يُعاد `tuple` عادي. حيث أن `sample` هو مطياف الميلا المُعاد بناؤه ذو الشكل `(batch_size, mel_bins, num_mel_frames)`.

## MMAudioVocoder[[diffusers.MMAudioVocoder]]

مُعدَّل من حزم مُصنِّع الصوت MMAudio الخاص بـ BigVGAN-v2، وهو بدوره مُشتق من [NVIDIA/BigVGAN](https://github.com/NVIDIA/BigVGAN) (ترخيص MIT)، مع تفعيلات Snake المُنعَّمة ضد التداخل من [alias-free-torch](https://github.com/junjun3518/alias-free-torch) (ترخيص 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)))
```

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/mmaudio_vocoder.py#L154)

**المعاملات:**

num_mels (`int`، القيمة الافتراضية `128`) : عدد حاويات mel في مطياف الإدخال. يجب أن يتطابق مع `mel_bins` الخاص بـ [MMAudioVAE](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVAE) المقترن.

upsample_initial_channel (`int`، القيمة الافتراضية `1536`) : عرض الطبقة الأولى.

upsample_rates (`tuple[int, ...]`، القيمة الافتراضية هي `(8, 4, 2, 2, 2, 2)`) : عوامل رفع العينة لمراحل مُنشئ الصوت. حاصل ضربها هو عامل رفع العينة الكلي ويجب أن يطابق `hop_length` الخاص بـ [MMAudioVAE](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVAE) المقترن.

upsample_kernel_sizes (`tuple[int, ...]`، القيمة الافتراضية هي `(16, 8, 4, 4, 4, 4)`) : أحجام نواة الالتفاف المعكوس (Transposed-convolution) لمراحل مُولّد الصوت (vocoder).

resblock_kernel_sizes (`tuple[int, ...]`، القيمة الافتراضية هي `(3, 7, 11)`) : أحجام النواة (Kernel) للكتل المتبقية (Residual blocks).

resblock_dilation_sizes (`tuple[tuple[int, ...], ...]`، القيمة الافتراضية `((1, 3, 5), (1, 3, 5), (1, 3, 5))`) : قيم التمدد (Dilations) للكتل المتبقية (residual blocks).

مُصوِّت BigVGAN-v2 (https://github.com/NVIDIA/BigVGAN، ترخيص MIT) مع تفعيلات Snake المُنعِمة للحواف من https://github.com/junjun3518/alias-free-torch (Apache 2.0)، لتحويل مطيافات الميل التي يفكّ تشفيرها [MMAudioVAE](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVAE) إلى موجات صوتية لـ [Kandinsky6TI2VAPipeline](/docs/diffusers/main/ar/api/pipelines/kandinsky6#diffusers.Kandinsky6TI2VAPipeline).

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

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

[المصدر](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/autoencoders/mmaudio_vocoder.py#L213)

**المعاملات:**

mel (`torch.Tensor` من الشكل `(batch_size, num_mels, num_mel_frames)`) : طيف ميل، كما تم فك ترميزه بواسطة [MMAudioVAE](/docs/diffusers/main/ar/api/models/kandinsky6_vae#diffusers.MMAudioVAE).

return_dict (`bool`، القيمة الافتراضية `True`) : ما إذا كان يجب إرجاع `~models.autoencoder_kl.DecoderOutput` بدلاً من tuple عادي.

**يعيد:**

الموجة الصوتية ذات الشكل `(batch_size, 1, num_samples)` ضمن المجال `[-1, 1]`.

