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は、長尺動画生成モデルです。任意のクリーンな先頭フレーム、順序付けられた画像/音声メモリスロット、および確率的な少数ステップのDistribution Matching Distillation (DMD)サンプラーをサポートしています。 このパイプラインは、同期された動画と音声を生成します。

Echo は ModularPipeline として実装されているため、テキストエンコーディング、メモリ条件付け、確率的 DMD によるデノイジング、およびデコーディングの各ブロックを、完全なワークフローとして実行したり、独立して組み合わせたりできます。

推論

公式の jdopensource/JoyAI-Echo チェックポイントを直接読み込みます。 これは google/gemma-3-12b-it のテキストエンコーダーとトークナイザーを使用しています。 Gemma リポジトリはゲート付き(アクセス制限あり)のため、パイプラインを読み込む前に、そのライセンスに同意し、Hugging Face で認証してください。

公開されているモデルは、長尺動画の例で241フレームを使用しています。動画のRoPE座標は、出力コンテナのレートに関係なく、トレーニング時のレートである24 fpsのまま維持されます。

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のデフォルトのsigmaスケジュールは、リリースされた8ステップのスケジュールです。各ステップでx0を予測し、次のsigmaで新しいガウスノイズを用いて再ノイズ化するため、シード付きの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

class 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 )

Echoの長時間動画DMDチェックポイント用のModularPipelineです。

EchoBlocks

class diffusers.EchoBlocks

< >

( )

Echoは、クリーンな初フレーム条件付け、順序付けられた画像/音声メモリスロット、および確率的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 のメモリスロットごとに1枚の、順序付けられた参照画像。 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): Echo の動画 RoPE 座標に使用される、学習時のフレームレート。 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, 省略可): アテンションプロセッサー用の追加の kwargs。 output_type (str, 省略可、デフォルト値は pil): 出力形式: ‘pil’、‘np’、‘pt’。 decode_timestep (None, 省略可、デフォルト値は 0.0): 最終的な潜在変数をデコードするために使用されるタイムステップ。 decode_noise_scale (None, 省略可): デコードのタイムステップで適用されるノイズ補間係数。

出力: videos (list): 生成された動画。 audio (Tensor): 生成された音声波形。

Update on GitHub