# Kandinsky S2V 1.0

Kandinsky S2V 1.0, bir referans kare ve bir ses kaydından avatar videosu üretir. Karedeki kişi, konuşmayla eşleşecek şekilde canlandırılır; yalnızca baş değil, tüm vücut hareket eder. Ses bir koşuldur, bir çıktı değildir: model ses üretmez ve sonucun ses bandı, girdi olarak verdiğiniz kayıttır.

Her iki koşul da [Qwen2.5-Omni-7B](https://huggingface.co/Qwen/Qwen2.5-Omni-7B) üzerinden geçer: gizli durumları (hidden states) istemi (prompt) kodlarken, ses kulesi (audio tower) konuşmayı kodlar ve bu, kare kare hizalanmış çapraz dikkat (cross-attention) adaptörleri aracılığıyla dönüştürücüye (transformer) girer; böylece her gizli kare (latent frame), yalnızca kapsadığı konuşmaya dikkat eder. Bir klip, 5 sn'lik (25 fps'de 125 kare) parçalar halinde üretilir ve her parça, önceki parçaların FramePack belleğini taşır; bu sayede daha uzun parçalar, parça sınırları boyunca tutarlı kalır.

Kandinsky S2V 1.0 yalnızca [modüler bir pipeline](../../modular_diffusers/overview) olarak entegre edilmiştir; bunun için standart bir `DiffusionPipeline` sınıfı yoktur.

## Kontrol Noktaları

| Kontrol Noktası | Transformer | Bloklar | Zamanlayıcı | Adımlar | Yönlendirme |
|---|---|---|---|---|---|
| [Lite][lite] | 2B | [KandinskyS2VAutoBlocks](/docs/diffusers/main/tr/api/pipelines/kandinsky_s2v#diffusers.KandinskyS2VAutoBlocks) | [FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler) | 50 | 3.0 |
| [Pro][pro] | 21B | [KandinskyS2VAutoBlocks](/docs/diffusers/main/tr/api/pipelines/kandinsky_s2v#diffusers.KandinskyS2VAutoBlocks) | [FlowMatchEulerDiscreteScheduler](/docs/diffusers/main/tr/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler) | 50 | 3.0 |
| [Lite damıtılmış][lite-distill] | 2B | [KandinskyS2VDistilledAutoBlocks](/docs/diffusers/main/tr/api/pipelines/kandinsky_s2v#diffusers.KandinskyS2VDistilledAutoBlocks) | [PiflowScheduler](/docs/diffusers/main/tr/api/schedulers/piflow#diffusers.PiflowScheduler) | 16 | kapalı |
| [Pro damıtılmış][pro-distill] | 21B | [KandinskyS2VDistilledAutoBlocks](/docs/diffusers/main/tr/api/pipelines/kandinsky_s2v#diffusers.KandinskyS2VDistilledAutoBlocks) | [PiflowScheduler](/docs/diffusers/main/tr/api/schedulers/piflow#diffusers.PiflowScheduler) | 16 | kapalı |

Distilled checkpoint'lar, `PiflowScheduler`'ı varsayılan değerleri yerine `shift=10.0` ve `n_grid=5` ile yapılandırır.

[lite]: https://huggingface.co/kandinskylab/Kandinsky-S2V-1.0-Lite-Diffusers [pro]: https://huggingface.co/kandinskylab/Kandinsky-S2V-1.0-Pro-Diffusers [lite-distill]: https://huggingface.co/kandinskylab/Kandinsky-S2V-1.0-Lite-distill-Diffusers [pro-distill]: https://huggingface.co/kandinskylab/Kandinsky-S2V-1.0-Pro-distill-Diffusers

`ModularPipeline.from_pretrained`, blokları checkpoint'ten seçer. Adımlar, yukarıdaki değerlere varsayılan olarak ayarlanır. Classifier-free guidance, bir çağrı argümanı değil, `guider` bileşenidir: temel checkpoint'ler bunu 3.0 değerinde içerir. Distilled olanlarda ise guider da `negative_prompt` da yoktur, çünkü guidance zaten öğrencinin bir parçasıdır.

## Kullanım

```py
import librosa
import torch
from diffusers import ModularPipeline
from diffusers.utils import encode_video, load_image

pipe = ModularPipeline.from_pretrained("kandinskylab/Kandinsky-S2V-1.0-Lite-distill-Diffusers")
pipe.load_components(dtype=torch.bfloat16)
pipe.to("cuda")

image = load_image("reference.png")
audio, _ = librosa.load("speech.wav", sr=16000)  # a mono waveform at 16 kHz, for the model
speech, sample_rate = librosa.load("speech.wav", sr=None)  # the original track, added to the output video

video = pipe(image=image, audio=audio, output="videos")[0]
encode_video(
    video,
    fps=25,
    output_path="avatar.mp4",
    audio=torch.from_numpy(speech)[None],
    audio_sample_rate=sample_rate,
)
```

Pro kontrol noktaları, her bileşen cihazda olduğunda 7B ses ve metin kodlayıcısının yanında 80 GB'lık bir GPU'ya sığmaz. Bunları bir `ComponentsManager` üzerinden dışa aktarın:

```py
import librosa
import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.utils import encode_video, load_image

manager = ComponentsManager()
pipe = ModularPipeline.from_pretrained("kandinskylab/Kandinsky-S2V-1.0-Pro-Diffusers", components_manager=manager)
pipe.load_components(dtype=torch.bfloat16)
manager.enable_auto_cpu_offload(device="cuda", memory_reserve_margin="40GiB")

image = load_image("reference.png")
audio, _ = librosa.load("speech.wav", sr=16000)
speech, sample_rate = librosa.load("speech.wav", sr=None)

video = pipe(image=image, audio=audio, output="videos")[0]
encode_video(
    video,
    fps=25,
    output_path="avatar.mp4",
    audio=torch.from_numpy(speech)[None],
    audio_sample_rate=sample_rate,
)
```

Margin, bir model GPU'ya taşındığında ağırlıkların ötesinde boş bırakılan bellektir. Bir parçanın VAE çözmesini barındırmak zorundadır; 512x768'de bu yaklaşık 33 GiB'dir: varsayılan 3 GB ile transformer, çözme işlemi sırasında GPU'da kalır ve ardından bellek dolar. 40 GiB ile 80 GB'lık bir GPU'da tepe noktası yaklaşık 50 GiB'dir. Her bileşene uygulanması için offload'u `load_components` sonrasında etkinleştirin.

## Notlar

- `image` bir PIL görüntüsüdür ve `audio`, 16 kHz'de [-1, 1] aralığında, `(samples,)` biçiminde bir tensör veya dizi olarak mono float bir dalga formudur; pipeline dosya okumaz.
- Üst düzey bloklar (`text_encoder`, `vae_encoder`, `denoise`, `decode`) ayrıca kendi başlarına da çalışır; bunları ayrı ayrı çalıştırdığınızda her birine aynı `num_latent_frames` ve `fps` değerlerini iletin.
- `num_chunks` geçirilmediği sürece parça sayısı ses kaydının uzunluğunu takip eder. Video her durumda kayda kırpılır, bu nedenle sonundan sonraki parçalar hesaplanır ve bir uyarıyla atılır.
- Yönlendirme ile, koşulsuz geçiş negatif istemi *ve* konuşmayı sessize alır, böylece yönlendirme metin ve konuşma üzerinde birleşik olarak uygulanır.

## KandinskyS2VModularPipeline[[diffusers.KandinskyS2VModularPipeline]]

#### diffusers.KandinskyS2VModularPipeline[[diffusers.KandinskyS2VModularPipeline]]

```python
diffusers.KandinskyS2VModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/kandinsky_s2v/modular_pipeline.py#L91)

Kandinsky S2V 1.0 sesten video üretimi için bir ModularPipeline.

## KandinskyS2VAutoBlocks[[diffusers.KandinskyS2VAutoBlocks]]

#### diffusers.KandinskyS2VAutoBlocks[[diffusers.KandinskyS2VAutoBlocks]]

```python
diffusers.KandinskyS2VAutoBlocks()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/kandinsky_s2v/modular_blocks_kandinsky_s2v.py#L108)

Kandinsky S2V 1.0 ile ses-ten-video üretimine yönelik modüler bir pipeline: referans kare ve ses kaydından, parça parça üretilen bir avatar videosu.

Bileşenler: text_encoder (`Qwen2_5OmniThinkerForConditionalGeneration`) tokenizer (`Qwen2_5OmniProcessor`) text_encoder_2 (`CLIPTextModel`) tokenizer_2 (`CLIPTokenizer`) vae (`AutoencoderKLHunyuanVideo`) video_processor (`VideoProcessor`) transformer (`KandinskyS2VTransformer3DModel`) scheduler (`FlowMatchEulerDiscreteScheduler`) guider (`ClassifierFreeGuidance`)

Girdiler: prompt (`str`, *isteğe bağlı*, varsayılan: The video presents a stable medium close-up of a subject facing the camera directly. The subject exhibits natural, lifelike body dynamics: the head and shoulders move fluidly with the rhythm of speech. The lighting is even, maintaining a balanced natural exposure to clearly define facial features without washout. Throughout the sequence, the subject engages in continuous speech marked by precise, high-fidelity articulation. The lips move in a rhythmic, natural pattern: alternating between brief firm closures and relaxed openings. During these openings, the tips of the upper teeth are momentarily and realistically visible, exhibiting natural enamel texture. The upper lip lifts subtly over the teeth during enunciation, while the jaw performs minimal vertical oscillations synchronized with the speech cadence. Facial micro-expressions are active yet restrained; eyebrows rise and lower slightly with minute asymmetry. The eyes maintain a steady, engaged gaze forward, punctuated by smooth, deliberate blinks. ): Üretimi yönlendirmek için istem. negative_prompt (`str`, *isteğe bağlı*): Yönlendirmenin koşulsuz geçişi için istem. Yönlendirme bir tane gerektirdiğinde varsayılan olarak `DEFAULT_NEGATIVE_PROMPT` kullanılır. audio (`Tensor | ndarray`): Üretimi sürdüren ses parçası: [-1, 1] aralığında, 16000 Hz'de, (samples,) biçiminde tek kanallı bir kayan dalga. num_latent_frames (`int`, *isteğe bağlı*, varsayılan: 32): Parça başına gizli kare sayısı; 32, 125 kare verir (25 fps'de 5 sn). fps (`int`, *isteğe bağlı*, varsayılan: 25): Parça uzunluğunun hesaplandığı kare hızı. num_chunks (`int`, *isteğe bağlı*): Üretilecek parça sayısı. Varsayılan olarak ses parçasını kapsayan kadar parça üretilir; video her halükarda parçaya kırpılır. image (`Image`): Hareketlendirilecek referans kare. height (`int`, *isteğe bağlı*): Üretilen videonun piksel cinsinden yüksekliği. Varsayılan olarak referans kareye en yakın 512 sepeti kullanılır. width (`int`, *isteğe bağlı*): `height` ile birlikte seçilen, üretilen videonun piksel cinsinden genişliği. generator (`Generator`, *isteğe bağlı*): Belirlenebilir üretim için Torch üreteci. num_inference_steps (`int`, *isteğe bağlı*, varsayılan: 50): Gürültü azaltma adım sayısı. scale_factor (`tuple`, *isteğe bağlı*, varsayılan: (1.0, 2.0, 2.0)): Çözünürlük sepeti için eksen başına RoPE ölçeği. output_type (`str`, *isteğe bağlı*, varsayılan: pil): Çıktı biçimi: 'pil', 'np', 'pt'.

Çıktılar: videolar (`list`): Oluşturulan videolar.

## KandinskyS2VDistilledModularPipeline[[diffusers.KandinskyS2VDistilledModularPipeline]]

#### diffusers.KandinskyS2VDistilledModularPipeline[[diffusers.KandinskyS2VDistilledModularPipeline]]

```python
diffusers.KandinskyS2VDistilledModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs)
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/kandinsky_s2v/modular_pipeline.py#L109)

pi-Flow damıtılmış Kandinsky S2V 1.0 kontrol noktaları için bir ModularPipeline.

Guidance, öğrenciye damıtılır; bu nedenle bloklarında ne bir guider ne de negatif bir prompt bulunur ve her segment için tek bir ileri geçiş çalıştırılır.

## KandinskyS2VDistilledAutoBlocks[[diffusers.KandinskyS2VDistilledAutoBlocks]]

#### diffusers.KandinskyS2VDistilledAutoBlocks[[diffusers.KandinskyS2VDistilledAutoBlocks]]

```python
diffusers.KandinskyS2VDistilledAutoBlocks()
```

[Kaynak](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/kandinsky_s2v/modular_blocks_kandinsky_s2v_distilled.py#L103)

pi-Flow damıtılmış Kandinsky S2V 1.0 kontrol noktaları ile ses-ten-video üretimine yönelik modüler pipeline: parça başına 16 segment ve rehberlik yok, bu da öğrenciye damıtılır.

Bileşenler: text_encoder (`Qwen2_5OmniThinkerForConditionalGeneration`) tokenizer (`Qwen2_5OmniProcessor`) text_encoder_2 (`CLIPTextModel`) tokenizer_2 (`CLIPTokenizer`) vae (`AutoencoderKLHunyuanVideo`) video_processor (`VideoProcessor`) transformer (`KandinskyS2VTransformer3DModel`) scheduler (`PiflowScheduler`)

Girdiler: prompt (`str`, *isteğe bağlı*, varsayılan: The video presents a stable medium close-up of a subject facing the camera directly. The subject exhibits natural, lifelike body dynamics: the head and shoulders move fluidly with the rhythm of speech. The lighting is even, maintaining a balanced natural exposure to clearly define facial features without washout. Throughout the sequence, the subject engages in continuous speech marked by precise, high-fidelity articulation. The lips move in a rhythmic, natural pattern: alternating between brief firm closures and relaxed openings. During these openings, the tips of the upper teeth are momentarily and realistically visible, exhibiting natural enamel texture. The upper lip lifts subtly over the teeth during enunciation, while the jaw performs minimal vertical oscillations synchronized with the speech cadence. Facial micro-expressions are active yet restrained; eyebrows rise and lower slightly with minute asymmetry. The eyes maintain a steady, engaged gaze forward, punctuated by smooth, deliberate blinks. ): Üretimi yönlendirmek için istem. audio (`Tensor | ndarray`): Üretimi sürdüren ses parçası: [-1, 1] aralığında, 16000 Hz'de, (samples,) biçiminde tek kanallı (mono) float dalga formu. num_latent_frames (`int`, *isteğe bağlı*, varsayılan: 32): Parça başına gizli (latent) kare sayısı; 32, 125 kareye (25 fps'de 5 sn) karşılık gelir. fps (`int`, *isteğe bağlı*, varsayılan: 25): Parça uzunluğunun hesaplandığı kare hızı. num_chunks (`int`, *isteğe bağlı*): Üretilecek parça sayısı. Varsayılan olarak ses parçasını kapsayan kadar parça üretilir; video her halükarda ses parçasına göre kırpılır. image (`Image`): Hareketlendirilecek referans kare. height (`int`, *isteğe bağlı*): Üretilen videonun piksel cinsinden yüksekliği. Varsayılan olarak referans kareye en yakın 512'lik kova (bucket) kullanılır. width (`int`, *isteğe bağlı*): `height` ile birlikte seçilen, üretilen videonun piksel cinsinden genişliği. generator (`Generator`, *isteğe bağlı*): Belirlenebilir (deterministic) üretim için Torch üreteci. num_inference_steps (`int`, *isteğe bağlı*, varsayılan: 16): Gürültü azaltma (denoising) adım sayısı. scale_factor (`tuple`, *isteğe bağlı*, varsayılan: (1.0, 2.0, 2.0)): Çözünürlük kovası için eksen başına RoPE ölçeği. output_type (`str`, *isteğe bağlı*, varsayılan: pil): Çıktı biçimi: 'pil', 'np', 'pt'.

Çıktılar: videolar (`list`): Oluşturulan videolar.

