Diffusers documentation
Pika H3 Flex
Pika H3 Flex
Pika H3 Flex — это пост-обучение MiniMax-H3 в генератор видео и аудио за шесть шагов. Он сохраняет упакованную последовательность MiniMax-H3, его conditioner Qwen3-VL и два VAE, но меняет две вещи: сэмплер — фиксированный шестиступенчатый график, который на каждом шаге заново добавляет шум к чистому предсказанию вместо обновления по Эйлеру, и веса — пара LoRA-адаптеров ранга 128 для двух трансформерных разделов MiniMax-H3. Видео и его синхронизированный стереозвук получаются из одних и тех же шести прямых проходов.
Релиз представляет собой адаптеры: адаптер FL2VA (fl2va/adapter.safetensors) управляет разделом transformer/ для условий текста и конечных кадров, а адаптер Ref2VA (ref2va/adapter.safetensors) управляет transformer_ref/ для мультимодальных ссылок. Базовые компоненты принадлежат MiniMaxAI/MiniMax-H3 и не были изменены; в репозитории хранится их копия, чтобы он мог загружаться самостоятельно.
Pika H3 Flex интегрируется исключительно в виде блоков Modular Diffusers, как и MiniMax-H3: сами блоки и их PikaH3FlexModularPipeline составляют всю интеграцию, а половины DiffusionPipeline не существует.
Загрузка
Пайплайн собирается в два шага: компоненты загружаются через modular_model_index.json, который указывает базовые компоненты MiniMax-H3 и два конфигурации планировщика, после чего адаптер выбранного рабочего процесса загружается поверх с помощью load_lora_weights(). Адаптеры представляют собой обычные дампы PEFT с именами модулей diffusers и загружаются в том масштабе, в котором были обучены (alpha == rank, 1.0).
| Рабочий процесс | Входы | Разбиение Transformer | Адаптер |
|---|---|---|---|
t2va | prompt | transformer/ | fl2va/adapter.safetensors |
fl2va | prompt и image и/или last_image | transformer/ | fl2va/adapter.safetensors |
ref2va | prompt и references | transformer_ref/ | ref2va/adapter.safetensors |
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", workflow="fl2va")
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")Передача workflow обрезает блоки до нужной задачи, поэтому загружается только соответствующая ей часть трансформера, адаптер направляет запросы в единственную присутствующую часть, а конвейер принимает только запросы этой задачи — конвейер fl2va требует ключевой кадр, а t2va — нет. Конвейер, содержащий обе части (загруженный без workflow=), требует указания, куда разместить адаптер Ref2VA: pipe.load_lora_weights(..., weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True). Оба VAE выпускаются в float32 и декодируют в float32, как и в опубликованном пакете; всё остальное выполняется в bfloat16.
pipe.docвыводит, что принимает и возвращает текущий конвейер: каждый вход с его значением по умолчанию, ожидаемые компоненты и создаваемые выходные данные.
Повторное использование загруженной MiniMax-H3
Базовые компоненты принадлежат MiniMax-H3, поэтому уже загруженный конвейер MiniMax-H3 содержит всё, кроме двух планировщиков и адаптеров. В этом разделе из загруженных компонентов собирается конвейер Pika H3 Flex, при этом оба конвейера остаются готовыми к работе параллельно: один ComponentsManager хранит каждый компонент один раз и выгружает его для обоих, конвейер Pika H3 Flex добавляет только свои два планировщика, а адаптеры определяют, какую из двух моделей выполняют общие трансформеры.
import torch
from diffusers import ComponentsManager, ModularPipeline
dtype = {"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16}
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda")
# The MiniMax-H3 pipeline already in use, with every workflow loaded. `collection` registers its components in the
# manager under that name, so they can be fetched by it later.
minimax = ModularPipeline.from_pretrained("MiniMaxAI/MiniMax-H3", components_manager=manager, collection="minimax-h3")
minimax.load_components(dtype=dtype)
# The Pika H3 Flex pipeline, in its own collection. Only its own components are loaded: the two schedulers.
pika = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", components_manager=manager, collection="pika-h3-flex")
pika.load_components(names=["scheduler", "audio_scheduler"])
# The rest comes from the MiniMax-H3 collection, and `update_components` puts it in the Pika H3 Flex pipeline.
shared = ["text_encoder", "tokenizer", "processor", "vae", "audio_vae", "transformer", "transformer_ref"]
pika.update_components(**{name: manager.get_one(name=name, collection="minimax-h3") for name in shared})
# The adapters go into the shared transformers.
pika.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")
pika.load_lora_weights(
"Pika-Labs/Pika-H3-Flex", weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True
)print(manager) показывает результат: каждый общий компонент перечисляется один раз и принадлежит обеим коллекциям, коллекция Pika H3 Flex добавляет свои два планировщика, а два трансформера содержат адаптер.
Models:
Name_ID | Class | Size (GB) | Collection
transformer_1397... | MiniMaxH3Transformer3DModel | 63.02 | minimax-h3
| | | pika-h3-flex
transformer_ref_13... | MiniMaxH3Transformer3DModel | 63.02 | minimax-h3
| | | pika-h3-flex
text_encoder_1397... | Qwen3VLForConditionalGeneration | 62.13 | minimax-h3
| | | pika-h3-flex
vae_1397... | AutoencoderKLMiniMaxH3 | 9.70 | minimax-h3
| | | pika-h3-flex
audio_vae_1397... | AutoencoderKLMiniMaxH3Audio | 0.56 | minimax-h3
| | | pika-h3-flex
Other Components:
ID | Class | Collection
scheduler_1397... | MiniMaxH3Scheduler | minimax-h3
audio_scheduler_1397... | MiniMaxH3Scheduler | minimax-h3
scheduler_1397... | MiniMaxH3Scheduler | pika-h3-flex
audio_scheduler_1397... | MiniMaxH3Scheduler | pika-h3-flex
tokenizer_1397... | Qwen2Tokenizer | minimax-h3
| | pika-h3-flex
processor_1397... | Qwen3VLProcessor | minimax-h3
| | pika-h3-flex
Additional Component Info:
transformer_1397...:
Adapters: ['default_0']
transformer_ref_13...:
Adapters: ['default_0']Адаптеры определяют, какая модель используется общими компонентами transformers. Чтобы вернуться к MiniMax-H3, вызовите pika.disable_lora(), и это всё: следующий запрос minimax(...) будет выполняться базовой моделью. pika.enable_lora() снова включает Pika H3 Flex. Между этими действиями ничего не перезагружается; менеджер перемещает каждый компонент на ускоритель и с него по мере того, как каждая из конвейеров доходит до него.
Чем отличается от MiniMax-H3
- Шесть шагов, без
num_inference_steps. Оба экземпляра MiniMaxH3Scheduler (shift=12.0для видео,shift=3.0для аудио) работают сstochastic_samplingпо конфигурацииdenoising_step_listпайплайна, опубликованному расписанию[1000, 750, 500, 250, 100, 40, 0]: на каждом шаге предсказывается чистый образец, а все, кроме последнего, заново шумятся свежим шумом до следующего сигмы. Количество шагов является контрактом адаптера и не является входным параметром. - Свежий шум на каждом шаге. Запрос извлекает значения из своего
generatorв фиксированном порядке: одно извлечение для каждого ключевого кадра или визуального эталона для шума условий, затем шум видео, шум аудио, а затем извлечения для повторного добавления шума в видео и аудио на каждом из первых пяти шагов. Передачаlatentsилиaudio_latentsзаменяет два начальных извлечения, оставляя остальные без изменений. - Ключевые кадры обрезаются, а не растягиваются. Ключевой кадр
fl2vaцентрированно обрезается до соотношения сторон холста в собственном разрешении, а затем масштабируется под холст. - Ссылки следуют уровню разрешения холста. Pika H3 Flex генерирует по таблице бакетов — уровню 480p и уровню 768p, по одиннадцать соотношений сторон для каждого — и запрос
ref2vaзадаёт условия в соответствии с уровнем его холста: изображение-ссылка кодируется с короткой стороной 1024 пикселя ниже уровня 768 и 2048 пикселя на нём и выше, а видео-ссылка подчиняется собственному правилу холста для данного уровня. Каждое видео или отдельное аудио-ссылка длится от 2 до 15 секунд, при этом суммарная длительность всех видео и суммарная длительность всех отдельных аудио не превышают 15 секунд каждая.
Генерация
Опубликованные значения — это размеры, на которых была проверена Pika H3 Flex. Передайте одно из них в качестве height и width:
| 21:9 | 16:9 | 3:2 | 4:3 | 5:4 | 1:1 | 4:5 | 3:4 | 2:3 | 9:16 | 9:21 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 480p | 960x416 | 832x480 | 704x480 | 640x480 | 608x480 | 480x480 | 480x608 | 480x640 | 480x704 | 480x832 | 416x960 |
| 768p | 1536x672 | 1344x768 | 1152x768 | 1024x768 | 960x768 | 768x768 | 768x960 | 768x1024 | 768x1152 | 768x1344 | 672x1536 |
import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.utils import load_image
from diffusers.utils.export_utils import encode_video
# 61.7GB of transformer and 62.1GB of conditioner do not sit on one accelerator, so the components are
# registered in a manager that moves each one on and off as the blocks reach it.
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"
# Create one pipeline for all supported workflows, then load the `fl2va` workflow's components, which is
# enough to run both the fl2va and t2va requests below.
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", components_manager=manager)
pipe.load_components(
workflow="fl2va", dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16}
)
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")
prompt = (
"integrated_multimodal_description: A cinematic close shot of a red ceramic cup on a wooden table beside an "
"open window. A soft breeze moves a linen curtain. The camera slowly pushes toward the cup as warm morning "
"light crosses the table.\n"
"overall_soundscape: Gentle wind through the window and faint birdsong outside. No speech.\n"
"non_diegetic_music: None.\n"
)
outputs = ["videos", "audio", "sampling_rate"]
# Text to video + audio on the 480p 16:9 bucket, 5 seconds.
results = pipe(
prompt=prompt,
height=480,
width=832,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=outputs
)
# First frame (and optionally `last_image`) to video + audio. The keyframe is center-cropped onto the canvas and
# held as the first frame, so the prompt describes the keyframe and what happens from it.
image = load_image(
"https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/astronaut.jpg"
)
i2va_prompt = (
"For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.\n\n"
"integrated_multimodal_description: [Shot 1] Begin with the supplied image of a small toy astronaut figurine "
"standing on a grey rocky moon surface, holding a white egg-shaped object. Preserve the figurine, its orange "
"visor and the rocks. The astronaut slowly turns its helmet toward the camera and lifts the egg a little; fine "
"dust drifts up around its boots. The camera slowly pushes in in one continuous shot. By the end the astronaut "
"stands still, egg held up.\n\n"
"overall_soundscape: Soft low wind and faint crunch of dust under the boots. No speech.\n\n"
"non_diegetic_music: N/A\n"
)
results = pipe(
prompt=i2va_prompt,
image=image,
height=480,
width=832,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=outputs,
)
encode_video(
results["videos"][0],
fps=24,
output_path="pika_h3_flex_fl2va.mp4",
audio=results["audio"][0],
audio_sample_rate=results["sampling_rate"],
)Воркфлоу ref2va принимает упорядоченный список референсов — до 9 изображений, 3 видео и 3 аудиоклипов, 12 всего — по тому же принципу, что и MiniMax-H3, с одним классом референсов на каждый модальность. Это также запрос, требующий наибольшего объёма памяти: референсы добавляют собственные строки в последовательность, и при разрешении 768p один только трансформер занимает 80 ГБ видеопамяти. Поэтому в примере ниже блоки трансформера загружаются из оперативной памяти по одному, в то время как менеджер перемещает остальные компоненты на устройство и с него, как и прежде. Пример выполняет запрос с референсами в разрешении 768p на одной карте с 80 ГБ памяти; без стриминга ограничьтесь разрешением 480p.
import torch
from diffusers import ComponentsManager, ModularPipeline
from diffusers.modular_pipelines.pika_h3_flex import (
PikaH3FlexAudioReference,
PikaH3FlexImageReference,
PikaH3FlexVideoReference,
)
manager = ComponentsManager()
manager.enable_auto_cpu_offload(device="cuda") # or "mps", "xpu", "cpu"
pipe = ModularPipeline.from_pretrained(
"Pika-Labs/Pika-H3-Flex", workflow="ref2va", components_manager=manager
)
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="ref2va/adapter.safetensors")
# Keep the transformer in CPU memory and bring in one block at a time while it runs.
pipe.transformer_ref.enable_group_offload(
onload_device=torch.device("cuda"),
offload_device=torch.device("cpu"),
offload_type="block_level",
num_blocks_per_group=1,
use_stream=True,
)
results = pipe(
prompt="subject_definitions: <Subject 1> is the woman in <Picture 1>. summary: [reference generation] <Subject 1> waves at the camera.",
references=[
PikaH3FlexImageReference.from_file("subject.png"),
PikaH3FlexVideoReference.from_file("motion_ref.mp4"), # frames, their `fps` and the soundtrack
PikaH3FlexAudioReference.from_file("voice.wav"), # waveform and its `sample_rate`
],
height=768,
width=1344,
num_frames=124,
generator=torch.Generator("cuda").manual_seed(42),
output=["videos", "audio", "sampling_rate"],
)PikaH3FlexModularPipeline
класс diffusers.PikaH3FlexModularPipeline
< source >( 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 )
Модульный t2va для совместной генерации видео и аудио с Pika H3 Flex, постобученной шестиступенчатой MiniMax-H3: рабочие процессы fl2va (только текст) и transformer/ (первый и/или последний ключевой кадр) для чекпоинта раздела fl2va с адаптером, а также рабочий процесс ref2va (omni-reference) для transformer_ref/ с адаптером ref2va.
Базовые компоненты — это компоненты MiniMax-H3, а релиз Pika H3 Flex представляет собой пару LoRA-адаптеров ранга 128, наложенных на два раздела трансформера, поэтому конвейер собирается в два шага: компоненты загружаются через modular_model_index.json, в котором указаны базовые компоненты и два планировщика, а адаптер выбранного рабочего процесса загружается с помощью load_lora_weights().
import torch
from diffusers import ModularPipeline
pipe = ModularPipeline.from_pretrained("Pika-Labs/Pika-H3-Flex", workflow="fl2va")
pipe.load_components(dtype={"vae": torch.float32, "audio_vae": torch.float32, "default": torch.bfloat16})
pipe.load_lora_weights("Pika-Labs/Pika-H3-Flex", weight_name="fl2va/adapter.safetensors")Как и MiniMax-H3, Pika H3 Flex выполняет денойзинг одной упакованной последовательности, которая одновременно содержит текстовые условия, латенты условий по ключевому кадру или референсу, аудио-латенты и видео-латенты. Именно поэтому блоки передают между собой строковое расположение данных, а не тензоры по отдельным модальностям, и почему пайплайн использует два планировщика (shift = 12.0 для видео и shift = 3.0 для аудио), которые выполняются в рамках одного вызова трансформера. В отличие от MiniMax-H3, оба планировщика являются экземплярами MiniMaxH3Scheduler с stochastic_sampling по фиксированному списку из шести шагов denoising_step_list: параметра num_inference_steps нет, и на каждом шаге из генератора запроса извлекается новый шум.
Адаптеры дистиллированы по руководству, как и их базовые модели: здесь нет guider, нет negative_prompt и нет guidance_scale, а на каждом шаге выполняется ровно один прямой проход.
Этот модуль содержит сведения о модели, на которые опираются все блоки: геометрию, выводимую из конфигурации, в виде свойств, а также арифметику холста, уровня и количества кадров в виде функций. Контракты для условного формирования, кодирования и шума реализованы непосредственно в самих блоках.
PikaH3FlexBlocks
Блоки модульного конвейера Auto для совместной генерации видео и аудио с Pika H3 Flex: рабочие процессы t2va (только текст), fl2va (первый и/или последний ключевой кадр) и ref2va (omni-reference), выбор которых осуществляется на основе входных данных references и ключевых кадров. Рабочие процессы t2va и fl2va используют раздел transformer с адаптером fl2va, а ref2va — раздел transformer_ref с адаптером ref2va, поэтому загружайте адаптер того рабочего процесса, который соответствует запросу.
Без указания workflow= при загрузке компонентов будут загружены оба раздела трансформера размером 61,7 ГБ — передайте один из них, чтобы загрузить только то, что требуется для задачи.
Поддерживаемые рабочие процессы:
t2va: требуетсяpromptfl2va: требуетсяprompt,imageилиprompt,last_imageref2va: требуетсяprompt,references
Компоненты:
image_processor (VaeImageProcessor) text_encoder (Qwen3VLForConditionalGeneration) tokenizer
(Qwen2Tokenizer) processor (Qwen3VLProcessor) vae (AutoencoderKLMiniMaxH3) audio_vae
(AutoencoderKLMiniMaxH3Audio) scheduler (MiniMaxH3Scheduler) audio_scheduler (MiniMaxH3Scheduler)
transformer_ref (MiniMaxH3Transformer3DModel) transformer (MiniMaxH3Transformer3DModel) video_processor
(VideoProcessor)
Конфигурации: canvas_short_edge (по умолчанию: 768) canvas_max_pixels (по умолчанию: 1032192) denoising_step_list (по умолчанию: [1000, 750, 500, 250, 100, 40, 0])
Входные данные:
references (list, необязательный):
Ссылки, на которые опирается генерация, в том порядке, в котором модель должна их читать: порядок определяет их метки в
представлении промпта и расположение на общей вращательной шкале, поэтому другой порядок — это другой
запрос. По одному dataclass на модальность, все содержат медиа в памяти: PikaH3FlexImageReference (не
более 9), PikaH3FlexVideoReference со своей fps (не более 3, звуковой дорожкой audio также
управляется) или PikaH3FlexAudioReference со своей sample_rate (не более 3) — всего не более 12
ссылок, при этом ссылки на аудио не могут быть единственными. Каждая ссылка на видео или отдельное аудио
длится от 2 до 15 секунд, а суммарная длительность видео и отдельного аудио не превышает 15 секунд каждая.
Эти блоки никогда не открывают медиафайл: декодируйте с помощью classmethod from_file каждого класса,
который передает частоты.
height (int, необязательный):
Высота генерируемого видео в пикселях, кратная 32.
width (int, необязательный):
Ширина генерируемого видео в пикселях, кратная 32.
num_frames (int, необязательный):
Количество кадров для генерации при фиксированных 24 fps: от 120 до 360, то есть от 5 до 15 секунд,
округленное вверх до ближайшего 17 * n + 5, которое может декодировать видео VAE. Чтобы сгенерировать
видео такой же длины, как референсная звуковая дорожка, передайте round(samples / sample_rate * 24).
image (Image, необязательный):
Ключевой кадр, с которого начинается видео. Он обрезается по центру до соотношения сторон холста и
масштабируется на него; холст по умолчанию выводится из его собственного соотношения сторон.
last_image (Image, необязательный):
Ключевой кадр, на котором заканчивается видео. Можно передать отдельно, чтобы сгенерировать до кадра.
Он обрезается по центру до соотношения сторон холста и масштабируется на него, как image.
prompt (str):
Промпт для управления генерацией, одна строка.
normalized_references (list, необязательный):
Ссылки, нормализованные на этапе настройки, в упакованном порядке.
keyframes (list, необязательный):
Ключевые кадры, размещенные на целевом холсте, в упакованном порядке.
condition_latents (list, необязательный):
Закодированные латенты для условного видео, по одному на каждую ссылку на изображение и видео в
упакованном порядке. Их форма определяет геометрию каждого блока ссылок.
audio_condition_latents (list, необязательный):
Закодированные строки для условного аудио, по одной на каждую ссылку с аудио в упакованном порядке.
generator (Generator, необязательный):
Генератор запроса. Шум для условий извлекается из него первым, по одному извлечению на условие,
до шума для генерируемых строк.
latents (Tensor):
Предварительно сгенерированный шум видео формы (1, 24, num_latent_frames, latent_height, latent_width),
используется вместо извлечения.
audio_latents (Tensor):
Предварительно сгенерированный шум аудио формы (2, 32, num_audio_latents).
*denoiser_input_fields (None,необязательный):
Структурное описание упакованной последовательности, которую трансформер читает по имени: token_tags, position_ids и три тензора индексов строк.
attention_kwargs (dict,необязательный):
Дополнительные kwargs для процессоров внимания.
keyframe_anchors (tuple,необязательный, по умолчанию ()):
К какому концу видео привязан каждый ключевой кадр, в упакованном порядке.
output_type (str,необязательный*, по умолчанию pil):
Формат вывода: ‘pil’, ‘np’ или ‘pt’.
Вывод:
videos (list):
Сгенерированное видео.
audio (Tensor):
Сгенерированный звуковой дорожкой, с формой (1, 2, num_samples).
sampling_rate (int):
Частота дискретизации сгенерированной звуковой дорожки в Гц.
PikaH3FlexImageReference
класс diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexImageReference
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] )
Параметры
- image (
PIL.Image.Image,np.ndarrayortorch.Tensor) — Справочное изображение: изображение, массив(height, width, 3)или тензор(3, height, width),uint8или вещественные значения в диапазоне[0, 1]. Оно никогда не определяет генерируемую геометрию — оно кодируется на своей собственной короткой стороне, 2048 для выпущенной контрольной точки, независимо от того, какой холст генерирует запрос.
Ссылка на объект, стиль или сцену: не более 9 на запрос.
Загрузите файл изображения в PikaH3FlexImageReference с помощью load_image().
PikaH3FlexVideoReference
класс diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexVideoReference
< source >( frames: typing.Union[list[PIL.Image.Image], numpy.ndarray, torch.Tensor]fps: float | None = Noneaudio: typing.Optional[torch.Tensor] = Nonesample_rate: int | None = None )
Параметры
- frames (
list[PIL.Image.Image],np.ndarrayortorch.Tensor) — Справочные кадры: список изображений, массив(num_frames, height, width, 3)или тензор(num_frames, 3, height, width),uint8или с плавающей точкой в диапазоне[0, 1]. - fps (
float, необязательный, по умолчанию 24.0) — Частота кадров, которую несутframes, и именно она определяет, как визуальные блоки эталонного видео размещаются на сетке 2 fps кондиционера. Собственная частота MiniMax-H3 составляет 24 fps, поэтому любая другая частота приводится к ней путём удаления и дублирования целых кадров — поэтому это поле важно указать правильно, если кадры получены из файла. - audio (
torch.Tensorформы(channels, num_samples), необязательный) — Саундтрек этого видео, моно или стерео, используется как условие для самого референса, а не как референс для него. Если параметр не указан, референс обуславливается только движением. - sample_rate (
int, необязательный) — Частота, с которойaudioсодержит свои сэмплы. Если параметр не указан, используется собственная частота аудио-VAE, и сэмплы остаются без изменений; при любом другом значении выполняется ресемплинг на указанную частоту.
Ссылка на движение и камеру: не более 3 на запрос, с условием, что они обрабатываются вместе со своим звуковым сопровождением.
from_file
< source >( media ) → PikaH3FlexVideoReference
Параметры
Возвращает
PikaH3FlexVideoReference
кадры (num_frames, height, width, 3) типа uint8 с частотой кадров, указанной в контейнере, с его звуковым сопровождением и собственной частотой дискретизации этого сопровождения, если в контейнере есть аудиопоток.
Декодирование видеofайла в PikaH3FlexVideoReference с сохранением разрешения, частоты кадров и звукового сопровождения.
Частоты попадают в reference, что и является целью такого способа декодирования, а не load_video(): MiniMax-H3 пересэмплирует reference на собственные 24 fps, поэтому потерянная по пути частота кадров означает запрос, сформированный с неправильной скоростью, и система не выдаст об этом никакого предупреждения. Если метаданные контейнера неверны, это исправляется переопределением fps или sample_rate в возвращаемом reference.
Требуется PyAV.
PikaH3FlexAudioReference
класс diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexAudioReference
< source >( audio: Tensorsample_rate: int | None = None )
Параметры
- audio (
torch.Tensorформы(channels, num_samples)) — Справочная звуковая волна, моно или стерео. - sample_rate (
int, необязательный) — Частота, с которойaudioсодержит свои сэмплы. Если параметр не указан, используется собственная частота аудио-VAE, и сэмплы остаются без изменений; при любом другом значении выполняется ресемплинг на указанную частоту.
Ссылка на голос или музыку: не более 3 на запрос, и никогда не используется по отдельности — аудиоссылка должна сопровождаться как минимум одной ссылкой на изображение или видео. Она никогда не поступает в conditioner и кодируется исключительно аудио-VAE.
from_file
< source >( media ) → PikaH3FlexAudioReference
Декодирование аудиофайла в PikaH3FlexAudioReference с частотой дискретизации, указанной в файле.
Требуется PyAV.