Buckets:
Лицензия Apache License, Version 2.0 («Лицензия»);
вы можете использовать этот файл только в соответствии с Лицензией.
Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законодательством или не оговорено письменно, программное
распространяется по Лицензии на условиях «КАК ЕСТЬ»,
БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, прямо указанных или подразумеваемых.
См. Лицензию для получения конкретных условий, регулирующих разрешения и
ограничениями Лицензии. -->
Эхо
Echo — это модель генерации длинных видео. Она поддерживает необязательный чистый первый кадр, упорядоченные слоты памяти для изображений и аудио, а также стохастический сэмплер с малым числом шагов на основе дистилляции соответствия распределений (Distribution Matching Distillation, 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",
)
По умолчанию используется восьмиступенчатый график сигм DMD, опубликованный в релизе. На каждом шаге предсказывается x0, а затем выполняется повторное добавление шума с использованием нового гауссова шума на следующей сигме, поэтому инициализированный torch.Generator управляет как начальным шумом, так и всеми промежуточными операциями повторного добавления шума.
Сырое кодирование аудио в память требует 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]]
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 для контрольной точки DMD длинных видео Echo.
EchoBlocks[[diffusers.EchoBlocks]]
diffusers.EchoBlocks[[diffusers.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): Расписание сигм DMD, включая конечный ноль. attention_kwargs (dict, необязательный): Дополнительные аргументы для процессоров внимания. output_type (str, необязательный, по умолчанию pil): Формат вывода: 'pil', 'np', 'pt'. decode_timestep (None, необязательный, по умолчанию 0.0): Шаг времени, используемый для декодирования финальных латентов. decode_noise_scale (None, необязательный): Коэффициент интерполяции шума, применяемый на шаге декодирования.
Выводы: videos (list): сгенерированные видео. audio (Tensor): сгенерированная звуковая волна.
Xet Storage Details
- Size:
- 12.5 kB
- Xet hash:
- d3bd646e9d244c2e54bed724faa81756bf3c9fa0eab6924f45a1e409af3fe1d4
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.