Buckets:
| # | |
| # 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](https://github.com/jd-opensource/JoyAI-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](/docs/diffusers/main/id/api/modular_diffusers/pipeline#diffusers.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](https://huggingface.co/jdopensource/JoyAI-Echo) secara langsung. Checkpoint ini menggunakan text encoder dan tokenizer dari [google/gemma-3-12b-it](https://huggingface.co/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. | |
| ```py | |
| 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]] | |
| ```python | |
| 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](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/echo/modular_pipeline.py#L27) | |
| ModularPipeline untuk checkpoint DMD video panjang Echo. | |
| ## EchoBlocks[[diffusers.EchoBlocks]] | |
| #### diffusers.EchoBlocks[[diffusers.EchoBlocks]] | |
| ```python | |
| diffusers.EchoBlocks() | |
| ``` | |
| [Sumber](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/echo/modular_blocks_echo.py#L220) | |
| 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.