Diffusers documentation

صدى

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 هو نموذج لتوليد مقاطع فيديو طويلة. يدعم إطارًا أوليًا نظيفًا اختياريًا، وفتحات ذاكرة مرتبة للصور/الصوت، ومُعيّن عشوائي بعدد خطوات قليلة لتقطير مطابقة التوزيع (DMD). يولّد خط الأنابيب فيديو وصوتًا متزامنين.

يُنفَّذ Echo على شكل ModularPipeline بحيث يمكن تشغيل كتل ترميز النص، وتكييف الذاكرة، وإزالة الضوضاء العشوائية عبر DMD، وفك الترميز كعملية متكاملة أو تركيبها بشكل مستقل.

الاستدلال

حمّل نقطة التفتيش الرسمية jdopensource/JoyAI-Echo مباشرة. يستخدم مُشفّر النص ومُقسّم الرموز من google/gemma-3-12b-it. مستودع Gemma محمي، لذا قبل تحميل خط الأنابيب، وافق على ترخيصه ووثّق نفسك مع Hugging Face.

يستخدم النموذج المُطلَق 241 إطارًا في مثال الفيديو الطويل الخاص به. وتبقى إحداثيات RoPE للفيديو عند معدل التدريب البالغ 24 إطارًا في الثانية، بغض النظر عن معدل الحاوية الإخراجية.

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

جدول دلتا (sigma) الافتراضي لخوارزمية DMD هو الجدول المكوّن من ثمانية خطوات الذي تم إصداره. يتنبأ هذا الجدول بـx0 في كل خطوة ويعيد إضافة الضوضاء باستخدام ضوضاء غاوسية جديدة عند قيمة دلتا التالية، وبالتالي يتحكم مولّد torch.Generator المُهيّأ (seeded) في الضوضاء الأولية وفي جميع عمليات إعادة إضافة الضوضاء الوسيطة.

يتطلب الترميز الخام للصوت والذاكرة torchaudio. ولضمان التكافؤ المرجعي، يُحافظ على audio_vae في FP32 كما هو موضح أعلاه. يمكن لسلاسل العمل المعيارية تخزين تينسورات مشفّر VAE المُعايَرة والمفكوكة. تكون أبعاد كامنات الفيديو (batch, channels, frames, height, width) وأبعاد كامنات الصوت (batch, channels, time, mel_bins). يقوم الكتلة الأساسية denoise بتغليف تلك التينسورات، وتوسيع الشروط لـ num_videos_per_prompt، وفك تغليف المخرجات المُزالة الضوضاء وإعادتها إلى نفس شكل VAE. مرّر latents وaudio_latents الأولية أيضاً في ذلك الشكل المفكوك. تستقبل المُفكّكات تينسورات VAE المُعايَرة وتُزيل المعايرة فوراً قبل فك الترميز. يُعيد output=["latents", "audio_latents"] تينسورات VAE المُعايَرة. مع output_type="latent" وoutput=["videos", "audio"]، تحصل على تينسورات VAE غير المُعايَرة دون فك الترميز.

EchoModularPipeline

فئة 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 )

ModularPipeline لنقطة التفتيش DMD الخاصة بمقطع الفيديو الطويل Echo.

EchoBlocks

فئة diffusers.EchoBlocks

< >

( )

توليد فيديو من مرجع مع تكييف نظيف للإطار الأول، وفتحات ذاكرة مرتبة للصور والصوت، وإزالة ضوضاء عشوائية باستخدام DMD.

المكوّنات: text_encoder (PreTrainedModel) tokenizer (PreTrainedTokenizerBase) connectors (LTX2TextConnectors) vae (AutoencoderKLLTX2Video) audio_vae (AutoencoderKLLTX2Audio) transformer (LTX2VideoTransformer3DModel) video_processor (VideoProcessor) vocoder (LTX2Vocoder)

المدخلات: prompt (str): الموجّه أو الموجّهات التي تُوجّه توليد الصورة. max_sequence_length (int, اختياري, القيمة الافتراضية 1024): أقصى طول للتسلسل لتشفير الموجّه. image (Image | Tensor, اختياري): إطار أولي واحد اختياري يُستخدم كشرط مرجعي نظيف. memory_images (list, اختياري): صور مرجعية مرتبة، صورة واحدة لكل خانة ذاكرة Echo. memory_audio_waveforms (list, اختياري): موجات ذاكرة مرتبة على شكل متجهات (channels, samples). تُقتطع المدخلات الأطول من 9.62 ثانية إلى نافذة الاستجابة الأعلى فيها. استخدم None لخانة صامتة. memory_audio_sample_rates (int | list, اختياري): معدل أخذ العينات المشترك لجميع موجات الذاكرة، أو معدل واحد لكل خانة. height (int, اختياري, القيمة الافتراضية 512): ارتفاع الصورة المولدة بالبكسل. width (int, اختياري, القيمة الافتراضية 704): عرض الصورة المولدة بالبكسل. model_frame_rate (float, اختياري, القيمة الافتراضية 24.0): معدل الإطارات في وقت التدريب المستخدم لإحداثيات RoPE لفيديو Echo. memory_position_offset (float, اختياري, القيمة الافتراضية 500.0): المركز الزمني المُسند إلى خانة الذاكرة الأولى. memory_position_slot_stride (float, اختياري, القيمة الافتراضية 50.0): المسافة الزمنية بين مراكز خانات الذاكرة المتتالية. num_videos_per_prompt (int, اختياري, القيمة الافتراضية 1): عدد الفيديوهات لكل موجّه. num_frames (int, اختياري, القيمة الافتراضية 241): عدد إطارات البكسل المولدة؛ يجب أن تكون 1 + k * vae_temporal_compression_ratio. frame_rate (float, اختياري, القيمة الافتراضية 25.0): معدل إطارات الفيديو المولّد. latents (Tensor, اختياري): ضجيج فيديو أولي اختياري بصيغة VAE (B, C, F, H, W). audio_latents (Tensor, اختياري): ضجيج صوت أولي اختياري بصيغة VAE (B, C, L, M). generator (Generator, اختياري): مولّد Torch للتوليد الحتمي. sigmas (list | tuple): جدول sigma الخاص بـ DMD، بما في ذلك الصفر النهائي. attention_kwargs (dict, اختياري): معاملات إضافية لمعالجات الانتباه. output_type (str, اختياري, القيمة الافتراضية pil): صيغة الإخراج: ‘pil’، ‘np’، ‘pt’. decode_timestep (None, اختياري, القيمة الافتراضية 0.0): خطوة الزمن المستخدمة لفك تشفير المتجهات الكامنة النهائية. decode_noise_scale (None, اختياري): معامل الاستيفاء للضجيج المطبّق عند خطوة زمن فك التشفير.

المخرجات: فيديوهات (list): الفيديوهات المولّدة. صوت (Tensor): موجة الصوت المولّدة.

Update on GitHub