Diffusers documentation
Kandinsky S2V 1.0
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ı | Transformer | Bloklar | Zamanlayıcı | Adımlar | Yönlendirme |
|---|---|---|---|---|---|
| Lite | 2B | KandinskyS2VAutoBlocks | FlowMatchEulerDiscreteScheduler | 50 | 3.0 |
| Pro | 21B | KandinskyS2VAutoBlocks | FlowMatchEulerDiscreteScheduler | 50 | 3.0 |
| Hafif damıtılmış | 2B | KandinskyS2VDistilledAutoBlocks | PiflowScheduler | 16 | kapalı |
| Pro damıtılmış | 21B | KandinskyS2VDistilledAutoBlocks | PiflowScheduler | 16 | kapalı |
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
imagebir PIL görüntüsüdür veaudio, 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_framesvefpsdeğerlerini iletin. num_chunksgeç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
< source >( 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
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
< source >( 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
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.