Buckets:
Được cấp phép theo Giấy phép Apache, Phiên bản 2.0 (gọi là "Giấy phép");
bạn có thể không sử dụng tệp này ngoại trừ tuân thủ theo Giấy phép.
Bạn có thể nhận được một bản sao của Giấy phép tại
http://www.apache.org/licenses/LICENSE-2.0
Trừ khi được yêu cầu bởi luật pháp có hiệu lực hoặc được thỏa thuận bằng văn bản, phần mềm
được phân phối theo Giấy phép được phân phối trên cơ sở
KHÔNG CÓ BẢO HÀNH HOẶC ĐIỀU KIỆN DƯỚI BẤT KỲ HÌNH THỨC NÀO, dù được nêu rõ hay ngụ ý.
Xem Giấy phép để biết ngôn ngữ cụ thể điều chỉnh các quyền và
giới hạn theo Giấy phép. -->
Echo
Echo là một mô hình tạo video dài. Nó hỗ trợ khung hình đầu tiên sạch tùy chọn, các khe bộ nhớ hình ảnh/âm thanh có thứ tự và trình lấy mẫu Distribution Matching Distillation (DMD) ngẫu nhiên với vài bước. Pipeline tạo ra video và âm thanh đồng bộ.
Echo được triển khai dưới dạng ModularPipeline nên các khối mã hóa văn bản, điều kiện hóa bộ nhớ, khử nhiễu DMD ngẫu nhiên và giải mã của nó có thể được chạy như một quy trình hoàn chỉnh hoặc được kết hợp độc lập.
Suy luận
Tải trực tiếp checkpoint chính thức jdopensource/JoyAI-Echo. Nó sử dụng text encoder và tokenizer từ google/gemma-3-12b-it. Kho Gemma được bảo vệ, vì vậy hãy chấp nhận giấy phép của nó và xác thực với Hugging Face trước khi tải pipeline.
Mô hình đã phát hành sử dụng 241 khung hình trong ví dụ video dài. Tọa độ RoPE của video vẫn giữ ở tốc độ 24 fps như khi huấn luyện, độc lập với tốc độ của container đầu ra.
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ịch sigma DMD mặc định là lịch tám bước đã được phát hành. Nó dự đoán x0 ở mỗi bước và thêm nhiễu lại bằng nhiễu Gaussian mới ở sigma tiếp theo, do đó một torch.Generator có seed sẽ kiểm soát cả nhiễu ban đầu lẫn tất cả các lần thêm nhiễu trung gian.
Việc mã hóa âm thanh-thuật toán từ bộ nhớ thô yêu cầu torchaudio. Để đảm bảo tính tương thích tham chiếu, hãy giữ audio_vae ở FP32 như đã minh họa ở trên. Các luồng công việc dạng module có thể lưu cache các tensor đã chuẩn hóa, đã giải nén của bộ mã hóa VAE. Video latents có hình dạng (batch, channels, frames, height, width) và audio latents có hình dạng (batch, channels, time, mel_bins). Khối denoise cốt lõi sẽ đóng gói các tensor đó, mở rộng điều kiện cho num_videos_per_prompt, và giải nén các đầu ra đã khử nhiễu trở lại cùng dạng VAE. Hãy truyền các latents và audio_latents ban đầu ở dạng đã giải nén đó. Các bộ giải mã nhận các tensor VAE đã chuẩn hóa và khử chuẩn hóa ngay trước khi giải mã. output=["latents", "audio_latents"] trả về các tensor VAE đã chuẩn hóa. Với output_type="latent" và output=["videos", "audio"], bạn sẽ nhận được các tensor VAE đã khử chuẩn hóa mà không cần giải mã.
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)
ModularPipeline cho checkpoint DMD video dài của Echo.
EchoBlocks[[diffusers.EchoBlocks]]
diffusers.EchoBlocks[[diffusers.EchoBlocks]]
diffusers.EchoBlocks()
Sinh video từ tham chiếu với điều kiện khung hình đầu tiên sạch, các khe bộ nhớ hình ảnh/âm thanh có thứ tự và khử nhiễu DMD ngẫu nhiên.
Các thành phần: text_encoder (PreTrainedModel) tokenizer (PreTrainedTokenizerBase) connectors (LTX2TextConnectors) vae (AutoencoderKLLTX2Video) audio_vae (AutoencoderKLLTX2Audio) transformer (LTX2VideoTransformer3DModel) video_processor (VideoProcessor) vocoder (LTX2Vocoder)
Inputs: prompt (str): Prompt hoặc các prompt để định hướng việc tạo ảnh. max_sequence_length (int, tuỳ chọn, mặc định là 1024): Độ dài chuỗi tối đa cho việc mã hoá prompt. image (Image | Tensor, tuỳ chọn): Khung đầu tiên tuỳ chọn được dùng làm điều kiện tham chiếu sạch. memory_images (list, tuỳ chọn): Các ảnh tham chiếu có thứ tự, mỗi ảnh tương ứng với một ô bộ nhớ Echo. memory_audio_waveforms (list, tuỳ chọn): Các dạng sóng bộ nhớ có thứ tự dưới dạng tensor (channels, samples). Các đầu vào dài hơn 9,62 giây sẽ được cắt xuống cửa sổ có phản hồi cao nhất. Dùng None cho một ô im lặng. memory_audio_sample_rates (int | list, tuỳ chọn): Tỷ lệ lấy mẫu dùng chung cho tất cả các dạng sóng bộ nhớ, hoặc một tỷ lệ cho mỗi ô. height (int, tuỳ chọn, mặc định là 512): Chiều cao tính bằng pixel của ảnh được tạo. width (int, tuỳ chọn, mặc định là 704): Chiều rộng tính bằng pixel của ảnh được tạo. model_frame_rate (float, tuỳ chọn, mặc định là 24.0): Tỷ lệ khung hình tại thời điểm huấn luyện được dùng cho các toạ độ RoPE video của Echo. memory_position_offset (float, tuỳ chọn, mặc định là 500.0): Trung tâm thời gian được gán cho ô bộ nhớ đầu tiên. memory_position_slot_stride (float, tuỳ chọn, mặc định là 50.0): Khoảng cách thời gian giữa các trung tâm ô bộ nhớ liên tiếp. num_videos_per_prompt (int, tuỳ chọn, mặc định là 1): Số video cho mỗi prompt. num_frames (int, tuỳ chọn, mặc định là 241): Số khung hình pixel được tạo; phải là 1 + k * vae_temporal_compression_ratio. frame_rate (float, tuỳ chọn, mặc định là 25.0): Tỷ lệ khung hình của video được tạo. latents (Tensor, tuỳ chọn): Nhiễu video ban đầu tuỳ chọn ở dạng VAE (B, C, F, H, W). audio_latents (Tensor, tuỳ chọn): Nhiễu âm thanh ban đầu tuỳ chọn ở dạng VAE (B, C, L, M). generator (Generator, tuỳ chọn): Bộ tạo Torch cho việc tạo ra có tính xác định. sigmas (list | tuple): Lịch sigma DMD, bao gồm số không cuối cùng. attention_kwargs (dict, tuỳ chọn): Các kwargs bổ sung cho các bộ xử lý attention. output_type (str, tuỳ chọn, mặc định là pil): Định dạng đầu ra: 'pil', 'np', 'pt'. decode_timestep (None, tuỳ chọn, mặc định là 0.0): Timestep được dùng để giải mã các latents cuối cùng. decode_noise_scale (None, tuỳ chọn): Hệ số nội suy nhiễu được áp dụng tại timestep giải mã.
Outputs: videos (list): Các video được tạo. audio (Tensor): Dạng sóng âm thanh được tạo.
Xet Storage Details
- Size:
- 9.61 kB
- Xet hash:
- 2034ded8619ebac6298f78ae8f2e87ca218ee7217a9cd0f832e43c8b4f97fa89
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.