Buckets:

mishig's picture
|
download
raw
8.33 kB

Berlisensi di bawah Apache License, Versi 2.0 ("Lisensi");

Anda mungkin tidak dapat menggunakan file ini kecuali sesuai dengan Lisensi.

Anda dapat memperoleh salinan Lisensi di

http://www.apache.org/licenses/LICENSE-2.0

Kecuali diwajibkan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak

distribusikan di bawah Lisensi berdasarkan basis "SEBAGAIMANA ADANYA",

TANPA JAMINAN ATAU SYARAT DALAM BENTUK APAPUN, baik yang dinyatakan maupun yang tersirat.

Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan

batasan di bawah Lisensi. -->

Echo

Echo adalah model generasi video panjang. Model ini mendukung frame pertama yang bersih secara opsional, slot memori gambar/audio yang terurut, dan sampler Distribution Matching Distillation (DMD) beberapa langkah yang stokastik. Pipeline ini menghasilkan video dan audio yang tersinkronisasi.

Echo diimplementasikan sebagai ModularPipeline sehingga blok pengkodean teks, kondisioning memori, denoising DMD stokastik, dan dekodingnya dapat dijalankan sebagai alur kerja lengkap atau dikomposisi secara independen.

Inferensi

Muat checkpoint resmi jdopensource/JoyAI-Echo secara langsung. Checkpoint ini menggunakan text encoder dan tokenizer dari google/gemma-3-12b-it. Repositori Gemma bersifat gated, jadi terima lisensinya dan autentikasi dengan Hugging Face sebelum memuat pipeline.

Model yang dirilis menggunakan 241 frame dalam contoh video panjangnya. Koordinat RoPE video tetap pada laju pelatihan 24 fps, terlepas dari laju kontainer keluaran.

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

Jadwal sigma DMD bawaan adalah jadwal delapan langkah yang dirilis. Jadwal ini memprediksi x0 pada setiap langkah dan melakukan re-noising dengan noise Gaussian baru pada sigma berikutnya, sehingga torch.Generator yang diberi seed mengontrol baik noise awal maupun semua re-noising antara.

Enkoding audio-raw ke memori memerlukan torchaudio. Untuk kesetaraan referensi, pertahankan audio_vae dalam FP32 seperti yang ditunjukkan di atas. Alur kerja modular dapat meng-cache tensor ternormalisasi dan terurai dari encoder VAE. Laten video memiliki bentuk (batch, channels, frames, height, width) dan laten audio memiliki bentuk (batch, channels, time, mel_bins). Blok inti denoise mengemas tensor tersebut, memperluas kondisioning untuk num_videos_per_prompt, dan mengurai kembali output yang telah didenoise ke bentuk VAE yang sama. Lewatkan latents awal dan audio_latents juga dalam bentuk terurai tersebut. Dekoder menerima tensor VAE ternormalisasi dan mendenormalisasi segera sebelum dekoding. output=["latents", "audio_latents"] mengembalikan tensor VAE ternormalisasi. Dengan output_type="latent" dan output=["videos", "audio"], Anda mendapatkan tensor VAE yang telah didenormalisasi tanpa dekoding.

EchoModularPipeline[[diffusers.EchoModularPipeline]]

diffusers.EchoModularPipeline[[diffusers.EchoModularPipeline]]

diffusers.EchoModularPipeline(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)

Sumber

ModularPipeline untuk checkpoint DMD video panjang Echo.

EchoBlocks[[diffusers.EchoBlocks]]

diffusers.EchoBlocks[[diffusers.EchoBlocks]]

diffusers.EchoBlocks()

Sumber

Generasi referensi-ke-video Echo dengan kondisioning bingkai pertama yang bersih, slot memori gambar/audio yang terurut, dan denoising DMD stokastik.

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

Inputs: prompt (str): The prompt or prompts to guide image generation. max_sequence_length (int, optional, defaults to 1024): Maximum sequence length for prompt encoding. image (Image | Tensor, optional): Optional single first frame used as a clean reference condition. memory_images (list, optional): Ordered reference images, one per Echo memory slot. memory_audio_waveforms (list, optional): Ordered memory waveforms as (channels, samples) tensors. Inputs longer than 9.62 seconds are cropped to their highest-response window. Use None for a silent slot. memory_audio_sample_rates (int | list, optional): Sampling rate shared by all memory waveforms, or one rate per slot. height (int, optional, defaults to 512): The height in pixels of the generated image. width (int, optional, defaults to 704): The width in pixels of the generated image. model_frame_rate (float, optional, defaults to 24.0): Training-time frame rate used for Echo video RoPE coordinates. memory_position_offset (float, optional, defaults to 500.0): Temporal center assigned to the first memory slot. memory_position_slot_stride (float, optional, defaults to 50.0): Temporal distance between consecutive memory-slot centers. num_videos_per_prompt (int, optional, defaults to 1): Number of videos per prompt. num_frames (int, optional, defaults to 241): Number of generated pixel frames; must be 1 + k * vae_temporal_compression_ratio. frame_rate (float, optional, defaults to 25.0): Frame rate of the generated video. latents (Tensor, optional): Optional initial video noise in VAE form (B, C, F, H, W). audio_latents (Tensor, optional): Optional initial audio noise in VAE form (B, C, L, M). generator (Generator, optional): Torch generator for deterministic generation. sigmas (list | tuple): DMD sigma schedule, including the terminal zero. attention_kwargs (dict, optional): Additional kwargs for attention processors. output_type (str, optional, defaults to pil): Output format: 'pil', 'np', 'pt'. decode_timestep (None, optional, defaults to 0.0): Timestep used to decode the final latents. decode_noise_scale (None, optional): Noise interpolation factor applied at the decode timestep.

Output: video (list): Video yang dihasilkan. audio (Tensor): Gelombang audio yang dihasilkan.

Xet Storage Details

Size:
8.33 kB
·
Xet hash:
9622f715e1c2ec59833d07dddd2eb2286767f779b3ea3978cb7fe01a034e58f7

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.