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 est un modèle de génération de vidéos longues. Il prend en charge une première image propre facultative, des emplacements mémoire ordonnés pour les images et l’audio, ainsi qu’un échantillonneur stochastique à quelques étapes de distillation par appariement de distributions (DMD). Le pipeline génère une vidéo et un audio synchronisés.

Echo est implémenté sous forme de ModularPipeline, ce qui permet d’exécuter ses blocs d’encodage du texte, de conditionnement mémoire, de débruitage DMD stochastique et de décodage soit comme un flux de travail complet, soit de manière indépendante.

Inférence

Chargez directement le point de contrôle officiel jdopensource/JoyAI-Echo. Il utilise l'encodeur de texte et le tokenizer de google/gemma-3-12b-it. Le dépôt Gemma est soumis à une licence restreinte, il faut donc accepter sa licence et s'authentifier auprès de Hugging Face avant de charger le pipeline.

Le modèle publié utilise 241 images dans son exemple de vidéo longue. Les coordonnées RoPE de la vidéo restent au taux d'entraînement de 24 fps, indépendamment du taux du conteneur de sortie.

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",
)

L’ordonnancement de sigma DMD par défaut est l’ordonnancement à huit étapes publié. Il prédit x0 à chaque étape et réintroduit du bruit avec un bruit gaussien frais au sigma suivant, de sorte qu’un torch.Generator initialisé contrôle à la fois le bruit initial et tous les réintroductions de bruit intermédiaires.

L’encodage audio-mémoire brut nécessite torchaudio. Pour une parité de référence, conservez audio_vae en FP32 comme indiqué ci-dessus. Les flux de travail modulaires peuvent mettre en cache les tenseurs normalisés et dépaquetés de l’encodeur VAE. Les latents vidéo ont la forme (batch, channels, frames, height, width) et les latents audio ont la forme (batch, channels, time, mel_bins). Le bloc denoise principal paquet ces tenseurs, étend le conditionnement pour num_videos_per_prompt et dépaquete les sorties débruitées pour les ramener à la même forme VAE. Passez également les latents et audio_latents initiaux dans cette forme dépaquetée. Les décodeurs prennent les tenseurs VAE normalisés et les dénormalisent immédiatement avant le décodage. output=["latents", "audio_latents"] renvoie les tenseurs VAE normalisés. Avec output_type="latent" et output=["videos", "audio"], vous obtenez les tenseurs VAE dénormalisés sans décodage.

EchoModularPipeline

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

Un ModularPipeline pour le point de contrôle DMD de la vidéo longue Echo.

EchoBlocks

classe diffusers.EchoBlocks

< >

( )

Génération de référence à vidéo Echo avec un conditionnement propre de la première image, des emplacements de mémoire image/audio ordonnés et un débruitage DMD stochastique.

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

Entrées : prompt (str) : Le prompt ou les prompts pour guider la génération d'image. max_sequence_length (int, facultatif, par défaut 1024) : Longueur de séquence maximale pour l'encodage du prompt. image (Image | Tensor, facultatif) : Première image unique facultative utilisée comme condition de référence propre. memory_images (list, facultatif) : Images de référence ordonnées, une par emplacement de mémoire Echo. memory_audio_waveforms (list, facultatif) : Formes d'onde de mémoire ordonnées sous forme de tenseurs (channels, samples). Les entrées supérieures à 9,62 secondes sont rognées à leur fenêtre de réponse la plus élevée. Utilisez None pour un emplacement silencieux. memory_audio_sample_rates (int | list, facultatif) : Taux d'échantillonnage partagé par toutes les formes d'onde de mémoire, ou un taux par emplacement. height (int, facultatif, par défaut 512) : La hauteur en pixels de l'image générée. width (int, facultatif, par défaut 704) : La largeur en pixels de l'image générée. model_frame_rate (float, facultatif, par défaut 24.0) : Taux d'images par seconde utilisé lors de l'entraînement pour les coordonnées RoPE vidéo d'Echo. memory_position_offset (float, facultatif, par défaut 500.0) : Centre temporel attribué au premier emplacement de mémoire. memory_position_slot_stride (float, facultatif, par défaut 50.0) : Distance temporelle entre les centres des emplacements de mémoire consécutifs. num_videos_per_prompt (int, facultatif, par défaut 1) : Nombre de vidéos par prompt. num_frames (int, facultatif, par défaut 241) : Nombre d'images pixel générées ; doit être 1 + k * vae_temporal_compression_ratio. frame_rate (float, facultatif, par défaut 25.0) : Taux d'images par seconde de la vidéo générée. latents (Tensor, facultatif) : Bruit vidéo initial facultatif sous forme VAE (B, C, F, H, W). audio_latents (Tensor, facultatif) : Bruit audio initial facultatif sous forme VAE (B, C, L, M). generator (Generator, facultatif) : Générateur Torch pour une génération déterministe. sigmas (list | tuple) : Planification des sigmas DMD, y compris le zéro terminal. attention_kwargs (dict, facultatif) : Arguments supplémentaires pour les processeurs d'attention. output_type (str, facultatif, par défaut pil) : Format de sortie : ‘pil’, ‘np’, ‘pt’. decode_timestep (None, facultatif, par défaut 0.0) : Pas de temps utilisé pour décoder les latents finaux. decode_noise_scale (None, facultatif) : Facteur d'interpolation du bruit appliqué au pas de temps de décodage.

Sorties : vidéos (list) : Les vidéos générées. audio (Tensor) : La forme d'onde audio générée.

Update on GitHub