Diffusers documentation

Kandinsky S2V 1.0

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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. Ses, bir çıktı değil bir koşuldur: model ses üretmez ve sonucun ses bandı, girdi olarak verdiğiniz kayıttır.

Her iki koşul da 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 olarak entegre edilmiştir; bunun için standart bir DiffusionPipeline sınıfı yoktur.

Kontrol Noktaları

Kontrol NoktasıTransformerBloklarZamanlayıcıAdımlarYönlendirme
Lite2BKandinskyS2VAutoBlocksFlowMatchEulerDiscreteScheduler503.0
Pro21BKandinskyS2VAutoBlocksFlowMatchEulerDiscreteScheduler503.0
Hafif damıtılmış2BKandinskyS2VDistilledAutoBlocksPiflowScheduler16kapalı
Pro damıtılmış21BKandinskyS2VDistilledAutoBlocksPiflowScheduler16kapalı

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

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 ve negative_prompt yoktur, çünkü guidance zaten öğrencinin bir parçasıdır.

Kullanım

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ı, 7B ses ve metin kodlayıcısının yanına 80 GB'lık bir GPU'ya sığmaz; tüm bileşenler cihazda olduğunda. Bunları bir ComponentsManager üzerinden dışa aktarın:

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 tutmak için yeterlidir, 512x768'de yaklaşık 33 GiB'dir: varsayılan 3 GB ile transformer, çözme 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. load_components sonrasında offload'i etkinleştirin, böylece her bileşene uygulanır.

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ğuna göre belirlenir. Video her durumda kayda göre kırpılır; bu nedenle kaydın sonundan sonraki parçalar hesaplanır ve bir uyarıyla birlikte 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

sınıf diffusers.KandinskyS2VModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

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

KandinskyS2VAutoBlocks

sınıf diffusers.KandinskyS2VAutoBlocks

< >

( )

Kandinsky S2V 1.0 ile ses-ten-video üretimine yönelik modüler bir pipeline: bir referans kare ve bir 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ı: 16000 Hz'de [-1, 1] aralığında, (samples,) biçiminde tek kanallı (mono) kayan sayı (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 saniyeye) 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 parçaya kırpılır. image (Image): Canlandırılacak 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 (bucket) kullanılır. width (int, isteğe bağlı): Üretilen videonun piksel cinsinden genişliği, height ile birlikte seçilir. generator (Generator, isteğe bağlı): Belirlenebilir (deterministik) üretim için Torch üreteci. num_inference_steps (int, isteğe bağlı, varsayılan: 50): 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 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: videos (list): Oluşturulan videolar.

KandinskyS2VDistilledModularPipeline

sınıf diffusers.KandinskyS2VDistilledModularPipeline

< >

( blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = Nonepretrained_model_name_or_path: str | os.PathLike | None = Nonecomponents_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = Nonecollection: str | None = Noneworkflow: str | None = Nonemodular_config_dict: dict[str, typing.Any] | None = Noneconfig_dict: dict[str, typing.Any] | None = None**kwargs )

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

sınıf diffusers.KandinskyS2VDistilledAutoBlocks

< >

( )

pi-Flow damıtılmış Kandinsky S2V 1.0 kontrol noktaları ile konuşmadan videoya üretim için modüler pipeline: 16 parça başına segment ve rehberlik yok, bu da öğrenciye damıtılıyor.

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) kayan sayı (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 saniyeye) 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): Canlandırılacak 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ı): Üretilen videonun piksel cinsinden genişliği, height ile birlikte seçilir. generator (Generator, isteğe bağlı): Belirlenebilir (deterministik) ü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: videos (list): Oluşturulan videolar.

Update on GitHub