Diffusers documentation

Echo

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

Echo

Echo uzun video üretimi modelidir. İsteğe bağlı temiz ilk kare, sıralı görüntü/ses bellek yuvaları ve stokastik az adımlı Dağılım Eşleştirme Damıtma (DMD) örnekleyiciyi destekler. Hattın (pipeline) ürettiği video ve ses senkronize edilir.

Echo, ModularPipeline olarak uygulandığından metin kodlama, bellek koşullandırma, stokastik DMD gürültü azaltma ve çözümleme blokları tam bir iş akışı olarak çalıştırılabilir veya bağımsız olarak birleştirilebilir.

Çıkarım

Resmi jdopensource/JoyAI-Echo kontrol noktasını doğrudan yükleyin. google/gemma-3-12b-it'den metin kodlayıcıyı ve belirteçleyiciyi kullanır. Gemma deposu kapalı olduğundan, pipeline'ı yüklemesinden önce lisansını kabul edin ve Hugging Face ile kimlik doğrulaması yapın.

Yayınlanan model, uzun video örneğinde 241 kare kullanır. Video RoPE koordinatları, çıktı kapsayıcısının hızından bağımsız olarak 24 fps eğitim hızında kalır.

import torch
import torchaudio
from PIL import Image

from diffusers import ComponentsManager, ModularPipeline
from diffusers.utils import encode_video

manager = ComponentsManager()
pipe = ModularPipeline.from_pretrained("jdopensource/JoyAI-Echo", components_manager=manager)
pipe.load_components(dtype={"default": torch.bfloat16, "audio_vae": torch.float32})
manager.enable_auto_cpu_offload(device="cuda")
pipe.vae.enable_tiling()

first_frame = Image.open("first_frame.png").convert("RGB")
memory_images = [Image.open(path).convert("RGB") for path in ["memory_0.png", "memory_1.png"]]
memory_audio_with_rates = [torchaudio.load(path) for path in ["memory_0.wav", "memory_1.wav"]]
memory_audio = [waveform for waveform, _ in memory_audio_with_rates]
memory_audio_rates = [sample_rate for _, sample_rate in memory_audio_with_rates]

output = pipe(
    prompt="A cinematic dialogue scene in a quiet cafe.",
    image=first_frame,
    memory_images=memory_images,
    memory_audio_waveforms=memory_audio,
    memory_audio_sample_rates=memory_audio_rates,
    width=1280,
    height=736,
    num_frames=241,
    frame_rate=25.0,
    model_frame_rate=24.0,
    generator=torch.Generator(device="cuda").manual_seed(42),
    output_type="np",
    output=["videos", "audio"],
)

encode_video(
    output["videos"][0],
    fps=25,
    audio=output["audio"][0].float().cpu(),
    audio_sample_rate=pipe.vocoder.config.output_sampling_rate,
    output_path="echo.mp4",
)

Varsayılan DMD sigma zamanlaması, yayınlanan sekiz adımlı zamanlamadır. Her adımda x0 tahmin eder ve bir sonraki sigmada taze Gauss gürültüsüyle yeniden gürültüler; bu nedenle tohumlanmış bir torch.Generator, hem başlangıç gürültüsünü hem de tüm ara yeniden gürültüleme işlemlerini kontrol eder.

Ham ses-bellek kodlaması torchaudio gerektirir. Referans uyumu için, yukarıda gösterildiği gibi audio_vae bileşenini FP32 olarak tutun. Modüler iş akışları, VAE kodlayıcısının normalize edilmiş, paketlenmemiş tensörlerini önbelleğe alabilir. Video latentleri (batch, channels, frames, height, width) biçiminde, ses latentleri ise (batch, channels, time, mel_bins) biçimindedir. Çekirdek denoise bloğu bu tensörleri paketler, num_videos_per_prompt için koşullandırmayı genişletir ve gürültüden arındırılmış çıktıları aynı VAE biçimine geri paketler. Başlangıç latents ve audio_latents değerlerini de bu paketlenmemiş biçimde iletin. Çözücüler, normalize edilmiş VAE tensörlerini alır ve çözümleme işleminden hemen önce bunları normalleştirme dışı (denormalize) hale getirir. output=["latents", "audio_latents"] parametresi normalize edilmiş VAE tensörlerini döndürür. output_type="latent" ve output=["videos", "audio"] parametreleriyle, çözümleme yapılmadan normalleştirme dışı VAE tensörlerini alırsınız.

EchoModularPipeline

sınıf diffusers.EchoModularPipeline

< >

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

Echo uzun video DMD kontrol noktası için bir ModularPipeline.

EchoBlocks

sınıf diffusers.EchoBlocks

< >

( )

Echo, temiz ilk kare koşullandırması, sıralı görsel/ses bellek yuvaları ve stokastik DMD gürültü azaltma ile referanstan video üretimi.

Bileşenler: text_encoder (PreTrainedModel) tokenizer (PreTrainedTokenizerBase) connectors (LTX2TextConnectors) vae (AutoencoderKLLTX2Video) audio_vae (AutoencoderKLLTX2Audio) transformer (LTX2VideoTransformer3DModel) video_processor (VideoProcessor) vocoder (LTX2Vocoder)

Girdiler: prompt (str): Görsel üretimini yönlendirmek için istem veya istemler. max_sequence_length (int, isteğe bağlı, varsayılan 1024): İstem kodlaması için maksimum dizi uzunluğu. image (Image | Tensor, isteğe bağlı): Temiz bir referans koşulu olarak kullanılan isteğe bağlı tek bir ilk kare. memory_images (list, isteğe bağlı): Sıralı referans görselleri, her Echo bellek yuvası için bir adet. memory_audio_waveforms (list, isteğe bağlı): (channels, samples) tensörleri olarak sıralı bellek dalga formları. 9,62 saniyeden uzun girdiler, en yüksek tepki penceresine kırpılır. Sessiz bir yuva için None kullanın. memory_audio_sample_rates (int | list, isteğe bağlı): Tüm bellek dalga formları tarafından paylaşılan örneklem hızı veya yuva başına bir hız. height (int, isteğe bağlı, varsayılan 512): Üretilen görselin piksel cinsinden yüksekliği. width (int, isteğe bağlı, varsayılan 704): Üretilen görselin piksel cinsinden genişliği. model_frame_rate (float, isteğe bağlı, varsayılan 24.0): Echo video RoPE koordinatları için kullanılan eğitim zamanı kare hızı. memory_position_offset (float, isteğe bağlı, varsayılan 500.0): İlk bellek yuvasına atanan zaman merkezi. memory_position_slot_stride (float, isteğe bağlı, varsayılan 50.0): Ardışık bellek yuvası merkezleri arasındaki zaman mesafesi. num_videos_per_prompt (int, isteğe bağlı, varsayılan 1): İstem başına video sayısı. num_frames (int, isteğe bağlı, varsayılan 241): Üretilen piksel kare sayısı; 1 + k * vae_temporal_compression_ratio olmalıdır. frame_rate (float, isteğe bağlı, varsayılan 25.0): Üretilen videonun kare hızı. latents (Tensor, isteğe bağlı): VAE formundaki isteğe bağlı başlangıç video gürültüsü (B, C, F, H, W). audio_latents (Tensor, isteğe bağlı): VAE formundaki isteğe bağlı başlangıç ses gürültüsü (B, C, L, M). generator (Generator, isteğe bağlı): Belirlenebilir üretim için Torch üreteci. sigmas (list | tuple): Son sıfırı da içeren DMD sigma zaman çizelgesi. attention_kwargs (dict, isteğe bağlı): Dikkat işleyicileri için ek kwargs. output_type (str, isteğe bağlı, varsayılan pil): Çıktı biçimi: ‘pil’, ‘np’, ‘pt’. decode_timestep (None, isteğe bağlı, varsayılan 0.0): Son gizli değişkenleri çözmek için kullanılan zaman adımı. decode_noise_scale (None, isteğe bağlı): Çözme zaman adımında uygulanan gürültü içsel faktörü.

Çıktılar: videos (list): Oluşturulan videolar. audio (Tensor): Oluşturulan ses dalgası.

Update on GitHub