Diffusers documentation
Pika H3 Flex
Pika H3 Flex
Pika H3 Flex est l’entraînement post-entraînement de Pika de MiniMax-H3 en un générateur vidéo et audio en six étapes. Il conserve la séquence compacte de MiniMax-H3, son conditionneur Qwen3-VL et ses deux VAE, et modifie deux éléments : le sampleur, un calendrier fixe de six étapes qui ré-bruit la prédiction propre à chaque étape à la place de la mise à jour d’Euler, et les poids, une paire d’adaptateurs LoRA de rang 128 sur les deux partitions du transformeur MiniMax-H3. La vidéo et sa bande-son stéréo synchronisée sont produites par les mêmes six passes avant.
La publication concerne les adaptateurs : l’adaptateur FL2VA (fl2va/adapter.safetensors) pilote la partition transformer/ pour le conditionnement par le texte et les trames de fin de point, tandis que l’adaptateur Ref2VA (ref2va/adapter.safetensors) pilote transformer_ref/ pour les références multimodales. Les composants de base proviennent de MiniMaxAI/MiniMax-H3, sans modification, et le dépôt en contient une copie afin de pouvoir être chargé de manière autonome.
Pika H3 Flex est intégré uniquement sous forme de blocs Modular Diffusers, comme MiniMax-H3 : les blocs et leur PikaH3FlexModularPipeline constituent l’intégralité de l’intégration, et il n’existe pas de moitié DiffusionPipeline.
Chargement
Un pipeline est assemblé en deux étapes : les composants sont chargés via un modular_model_index.json qui nomme les composants de base MiniMax-H3 et les deux configurations de planificateur, puis l'adaptateur du workflow sélectionné est chargé par-dessus avec load_lora_weights(). Les adaptateurs sont des dumps PEFT simples des noms de modules diffusers et se chargent à leur échelle d'entraînement (alpha == rank, 1.0).
| Flux de travail | Entrées | Partition du Transformer | Adapter |
|---|---|---|---|
t2va | prompt | transformer/ | fl2va/adapter.safetensors |
fl2va | prompt et image et/ou last_image | transformer/ | fl2va/adapter.safetensors |
ref2va | prompt et 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")Passer le workflow élimine les blocs non pertinents pour cette tâche, de sorte que seule sa propre partition de transformeur est récupérée, que l’adaptateur achemine vers la partition présente et que le pipeline n’accepte que les requêtes de cette tâche — un pipeline fl2va nécessite une image clé, un t2va n’en prend aucune. Un pipeline qui détient les deux partitions (chargé sans workflow=) doit être informé de l’emplacement de l’adaptateur Ref2VA : pipe.load_lora_weights(..., weight_name="ref2va/adapter.safetensors", load_into_transformer_ref=True). Les deux VAE sont publiés en float32 et décodent en float32, comme le fait le package publié ; tout le reste s’exécute en bfloat16.
pipe.docaffiche ce que le pipeline devant vous reçoit et renvoie — chaque entrée avec sa valeur par défaut, les composants qu’il attend et les sorties qu’il produit.
Réutilisation d'un MiniMax-H3 chargé
Les composants de base sont ceux de MiniMax-H3, de sorte qu’un pipeline MiniMax-H3 déjà chargé contient tout, à l’exception des deux planificateurs et des adaptateurs. Cette section assemble un pipeline Pika H3 Flex à partir de ces composants chargés et maintient les deux pipelines prêts côte à côte : un ComponentsManager détient chaque composant une seule fois et le décharge pour les deux, le pipeline Pika H3 Flex n’ajoute que ses deux planificateurs, et les adaptateurs déterminent lequel des deux modèles les transformeurs partagés exécutent.
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) affiche le résultat : chaque composant partagé est listé une seule fois et appartient aux deux collections, la collection Pika H3 Flex ajoute ses deux planificateurs, et les deux transformers portent un adaptateur.
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']Les adaptateurs déterminent quel modèle les transformers partagés représentent. Pour revenir à MiniMax-H3, il suffit d’appeler pika.disable_lora() : la prochaine requête minimax(...) exécutera le modèle de base. pika.enable_lora() réactive Pika H3 Flex. Rien n’est rechargé entre-temps ; le gestionnaire déplace chaque composant sur ou hors de l’accélérateur au fur et à mesure que chaque pipeline y accède.
Différences par rapport à MiniMax-H3
- Six étapes, sans
num_inference_steps. Les deux instances de MiniMaxH3Scheduler (shift=12.0pour la vidéo,shift=3.0pour l’audio) fonctionnent avecstochastic_samplingsur la configurationdenoising_step_listdu pipeline, à savoir le calendrier publié[1000, 750, 500, 250, 100, 40, 0]: chaque étape prédit l’échantillon propre, et toutes sauf la dernière le re-bruitent avec du bruit frais jusqu’au sigma suivant. Le nombre d’étapes fait partie du contrat de l’adaptateur et n’est pas une entrée. - Bruit neuf à chaque étape. Une requête puise dans son
generatordans un ordre fixe : un tirage par image clé ou référence visuelle pour le bruit de conditionnement, le bruit vidéo, le bruit audio, puis les tirages de re-bruitage vidéo et audio de chacune des cinq premières étapes. Passerlatentsouaudio_latentsremplace les deux tirages initiaux et laisse le reste en place. - Les images clés sont recadrées, pas étirées. Une image clé
fl2vaest recadrée au centre selon le ratio d’aspect du canevas à sa propre résolution, puis redimensionnée pour couvrir le canevas. - Les références suivent le niveau de résolution du canevas. Pika H3 Flex génère selon un tableau de buckets — un niveau 480p et un niveau 768p, chacun avec onze rapports d’aspect — et une requête
ref2vaest conditionnée par le niveau de son canevas : une référence image est encodée avec un côté court de 1024 pixels en dessous du niveau 768 et de 2048 pixels à partir de ce niveau, tandis qu’une référence vidéo est soumise à la règle de canevas propre au niveau. Chaque référence vidéo ou audio autonome dure de 2 à 15 secondes, et la somme des durées des vidéos ainsi que celle des audios autonomes est au maximum de 15 secondes.
Génération
Les buckets publiés sont les canevas sur lesquels Pika H3 Flex a été validé. Passez-en un en tant que height et 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"],
)Le workflow ref2va prend en entrée une liste ordonnée de références — jusqu’à 9 images, 3 vidéos et 3 extraits audio, soit 12 au total — de la même manière que MiniMax-H3, avec une classe de référence par modalité. C’est également la requête qui nécessite le plus de mémoire : les références ajoutent leurs propres lignes à la séquence, et à 768p, le seul transformateur sature une carte de 80 Go. L’exemple ci-dessous diffuse donc les blocs du transformateur depuis la mémoire CPU un par un, tandis que le gestionnaire déplace les autres composants sur et hors de l’appareil comme auparavant. Il exécute une requête de référence à 768p sur une carte de 80 Go ; sans le streaming, limitez-vous à 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
classe 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 )
A ModularPipeline for joint video + audio generation with Pika H3 Flex, the post-trained six-step MiniMax-H3: the t2va (text only) and fl2va (first and/or last keyframe) workflows against the transformer/ checkpoint
partition with the fl2va adapter, and the ref2va (omni-reference) workflow against transformer_ref/ with the ref2va adapter.
Les composants de base sont ceux de MiniMax-H3, et la version Pika H3 Flex est constituée d’une paire d’adaptateurs LoRA de rang 128 superposés aux deux partitions du transformer. Le pipeline est donc assemblé en deux étapes : les composants sont chargés via un modular_model_index.json qui nomme les composants de base et les deux planificateurs, puis l’adaptateur du workflow sélectionné est chargé avec 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")Comme MiniMax-H3, Pika H3 Flex débruite une séquence empaquetée qui contient à la fois le conditionnement textuel, les latents de conditionnement de la clé d'image ou de référence, les latents audio et les latents vidéo. C'est pourquoi les blocs transmettent une disposition par ligne plutôt que des tenseurs par modalité, et pourquoi le pipeline utilise deux planificateurs (shift = 12.0 pour la vidéo, shift = 3.0 pour l'audio) qui sont exécutés au sein d'un seul appel au transformeur. Contrairement à MiniMax-H3, les deux planificateurs sont des instances de MiniMaxH3Scheduler avec stochastic_sampling sur la liste fixe de six étapes denoising_step_list : il n'y a pas de num_inference_steps, et chaque étape tire un nouveau bruit du générateur de la requête.
Les adaptateurs sont distillés par guidage, tout comme leur modèle de base : il n’y a ni guideur, ni negative_prompt, ni guidance_scale, et chaque étape exécute exactement un seul passage avant.
Ce module contient les informations du modèle sur lesquelles chaque bloc s’appuie — la géométrie dérivée de la configuration sous forme de propriétés, ainsi que les calculs de canevas, de niveau et de nombre de frames sous forme de fonctions — tandis que les contrats de conditionnement, d’encodage et de bruit sont définis directement sur les blocs eux-mêmes.
PikaH3FlexBlocks
Blocs de pipeline modulaires automatiques pour la génération conjointe vidéo + audio avec Pika H3 Flex : les workflows t2va (texte uniquement), fl2va (image clé de début et/ou de fin) et ref2va (référence omnidirectionnelle), sélectionnés via les entrées references et image clé. Les workflows t2va et fl2va exécutent la partition transformer avec l’adaptateur fl2va, tandis que ref2va utilise la partition transformer_ref avec l’adaptateur ref2va ; chargez donc l’adaptateur correspondant au workflow de la requête.
Sans workflow=, le chargement des composants récupère les deux partitions du transformer de 61,7 Go — passez-en une pour ne charger que ce dont la tâche a besoin.
Workflows pris en charge :
t2va: nécessitepromptfl2va: nécessiteprompt,imageouprompt,last_imageref2va: nécessiteprompt,references
Composants :
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)
Configurations : canvas_short_edge (par défaut : 768) canvas_max_pixels (par défaut : 1032192) denoising_step_list (par défaut : [1000, 750, 500, 250, 100, 40, 0])
Inputs:
references (list, optional):
The references to condition on, in the order the model should read them: the order labels them in the
prompt presentation and lays them out on the shared rotary clock, so a different order is a different
request. One dataclass per modality, all holding in-memory media — a PikaH3FlexImageReference (at
most 9), a PikaH3FlexVideoReference at its own fps (at most 3, whose audio soundtrack is
conditioned on as well), or a PikaH3FlexAudioReference at its own sample_rate (at most 3) — for at
most 12 references in total, and audio references cannot be the only ones. Every video or standalone
audio reference runs 2 to 15 seconds, and the video durations and the standalone audio durations each sum
to at most 15 seconds. These blocks never open a media file: decode with each class’s from_file classmethod, which brings the rates along.
height (int, optional):
Height of the generated video in pixels, a multiple of 32.
width (int, optional):
Width of the generated video in pixels, a multiple of 32.
num_frames (int, optional):
Number of frames to generate, at the fixed 24 fps: 120 to 360, i.e. 5 to 15 seconds, snapped up to the
next 17 * n + 5 the video VAE can decode. To generate a video as long as a reference soundtrack, pass round(samples / sample_rate * 24).
image (Image, optional):
Keyframe the video starts from. It is center-cropped to the canvas’ aspect ratio and resized onto it; the
canvas by default is derived from its own aspect ratio.
last_image (Image, optional):
Keyframe the video ends on. Can be passed on its own to generate up to a frame. It is center-cropped to
the canvas’ aspect ratio and resized onto it, like image.
prompt (str):
The prompt to guide generation, a single string.
normalized_references (list, optional):
The references normalized by the setup step, in packed order.
keyframes (list, optional):
The keyframes put onto the target canvas, in packed order.
condition_latents (list, optional):
The encoded video conditioning latents, one per image and video reference in packed order. Their shape is
where every reference block’s geometry comes from.
audio_condition_latents (list, optional):
The encoded audio conditioning rows, one per audio-bearing reference in packed order.
generator (Generator, optional):
The generator of the request. The conditioning noise is drawn from it first, one draw per condition,
before the noise of the generated rows.
latents (Tensor):
Pre-generated video noise of shape (1, 24, num_latent_frames, latent_height, latent_width), used
instead of the draw.
audio_latents (Tensor):
Pre-generated audio noise of shape (2, 32, num_audio_latents).
*denoiser_input_fields (None,optional):
The structural description of the packed sequence the transformer reads by name: token_tags, position_ids and the three row-index tensors.
attention_kwargs (dict,optional):
Additional kwargs for attention processors.
keyframe_anchors (tuple,optional, defaults to ()):
Which end of the video every keyframe is anchored to, in packed order.
output_type (str,optional*, defaults to pil):
Output format: ‘pil’, ‘np’ or ‘pt’.
Sorties :
videos (list) :
La vidéo générée.
audio (Tensor) :
La bande-son générée, de forme (1, 2, num_samples).
sampling_rate (int) :
Taux d'échantillonnage de la bande-son générée en Hz.
PikaH3FlexImageReference
classe diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexImageReference
< source >( image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor] )
Paramètres
- image (
PIL.Image.Image,np.ndarrayoutorch.Tensor) — L’image de référence : une image, un tableau de forme(height, width, 3)ou un tenseur de forme(3, height, width), enuint8ou en virgule flottante sur[0, 1]. Elle ne contraint jamais la géométrie générée — elle est encodée sur un côté court propre à elle, 2048 pour le checkpoint publié, quelle que soit la toile générée par la requête.
Une référence de sujet, de style ou de scène : au maximum 9 par requête.
Chargez un fichier image dans un PikaH3FlexImageReference, via load_image().
PikaH3FlexVideoReference
classe 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 )
Paramètres
- frames (
list[PIL.Image.Image],np.ndarrayoutorch.Tensor) — Les images de référence : une liste d’images, un tableau de forme(num_frames, height, width, 3)ou un tenseur de forme(num_frames, 3, height, width),uint8ou à virgule flottante sur[0, 1]. - fps (
float, facultatif, valeur par défaut 24.0) — La fréquence d’imagesframesporte, ce qui positionne les blocs visuels de la référence sur la grille 2 fps du conditionneur. L’horloge propre à MiniMax-H3 est de 24 fps, donc toute autre fréquence est rééchantillonnée dessus en supprimant et en dupliquant des images entières — ce qui en fait le champ à régler correctement lorsque les images proviennent d’un fichier. - audio (
torch.Tensorde forme(channels, num_samples), facultatif) — La bande-son de cette vidéo, mono ou stéréo, conditionnée en tant que référence de la référence elle-même plutôt que comme référence de la vidéo. Si omise, la référence se conditionne uniquement sur le mouvement. - sample_rate (
int, facultatif) — Le taux auquelaudiotransporte ses échantillons. S’il est omis, le taux propre à la VAE audio est utilisé, ce qui laisse les échantillons inchangés ; tout autre taux entraîne un rééchantillonnage vers celui-ci.
Référence de mouvement et de caméra : au maximum 3 par requête, conditionnées ensemble avec leur propre bande-son.
from_file
< source >( media ) → PikaH3FlexVideoReference
Paramètres
Retourne
PikaH3FlexVideoReference
les (num_frames, height, width, 3) uint8 images à la fréquence d’images déclarée par le conteneur, accompagnées de sa piste audio et du taux d’échantillonnage de cette piste lorsqu’un flux audio est présent.
Décoder un fichier vidéo en PikaH3FlexVideoReference, à la résolution, à la fréquence d’images et avec la piste audio qu’il contient.
Les taux sont appliqués à la référence, ce qui est l’objectif de décoder de cette manière plutôt qu’avec load_video() : MiniMax-H3 rééchantillonne une référence sur son propre 24 fps, de sorte qu’un taux de perte en cours de route est une requête conditionnée à la mauvaise vitesse, sans aucun avertissement. Un conteneur dont les métadonnées sont incorrectes est corrigé en écrasant fps ou sample_rate sur la référence renvoyée.
Nécessite PyAV.
PikaH3FlexAudioReference
classe diffusers.modular_pipelines.pika_h3_flex.PikaH3FlexAudioReference
< source >( audio: Tensorsample_rate: int | None = None )
Paramètres
- audio (
torch.Tensorde forme(channels, num_samples)) — La forme d’onde de référence, mono ou stéréo. - sample_rate (
int, facultatif) — Le taux auquelaudiotransporte ses échantillons. S’il est omis, le taux propre à la VAE audio est utilisé, ce qui laisse les échantillons inchangés ; tout autre taux entraîne un rééchantillonnage vers celui-ci.
Référence vocale ou musicale : au maximum 3 par requête, et jamais seule — une référence audio doit être associée à au moins une référence image ou vidéo. Elle n’atteint jamais le conditionneur et est encodée uniquement par le VAE audio.
from_file
< source >( media ) → PikaH3FlexAudioReference
Décoder un fichier audio en PikaH3FlexAudioReference, au taux d'échantillonnage qu'il contient.
Nécessite PyAV.