Loading playground
Input
Additional Settings
Customize your input with more control.
Result
Idle
Customize your input with more control.
Customize your input with more control.
Hint: Upload a prepared .zip archive or provide a URL. See the field description for the required file layout.
Customize your input with more control.
The cost of training depends on the number of steps. The formula is: 0.006 * steps. With 1000 steps, your request will cost $6.00.
Fine-tune your training parameters and start right now.
/a2v)The /a2v endpoint trains a LoRA for the LTX 2.3 video model that generates video driven by a start image plus a conditioning audio track. The model conditions on the first frame (the start image) and the audio, and learns to produce a video that matches the sound — for example talking-head / lip-sync-style motion, or audio-reactive animation.
Key features:
Provide a single .zip archive (linked via training_data_url) where each training example is a group of files sharing a base name:
<name>_start.png (or .jpg/.jpeg) — the start image (becomes the first frame). Alternatively a <name>_start.mp4 (or .mov/.avi/.mkv) whose first frame is used.<name>_audio.wav (or .mp3, .ogg, .m4a, .aac, .flac) — the conditioning audio. (If a <name>_start.mp4 already contains an audio track, a separate audio file is not required.)<name>_end.mp4 (or .mov/.avi/.mkv) — the target video the model learns to produce.<name>.txt — caption (optional only if a trigger_phrase is set; otherwise required).Each group needs a start image/video, an audio source, and an _end target. File names must be unique across the archive. Source clips may have different native sizes; preprocessing resizes and center-crops each sample to the chosen training resolution.
Minimum clip length: with auto_scale_input off (the default), each target (_end) video must have at least number_of_frames frames (default 89, ≈ 3.7 s at 24 fps) — the synthesized training clip inherits the target's length. Shorter targets are silently skipped, and if every one is too short the request fails (422). Turn on auto_scale_input to resample instead.
Example layout:
clip01_start.png clip01_audio.wav clip01_end.mp4 clip01.txt clip02_start.png clip02_audio.mp3 clip02_end.mp4 clip02.txt
Audio is required on every clip. Each group must provide an audio source (a separate _audio file, or a _start video that carries an audio track). If any group has no usable audio, the request is rejected (HTTP 422).
training_data_url (required)Type: string
URL to the .zip archive of audio-to-video groups.
trigger_phraseType: string
Default: ""
Phrase prepended to captions during training; include it at inference.
rankType: integer (8, 16, 32, 64, 128)
Default: 32
LoRA capacity.
number_of_stepsType: integer
Default: 2000 (range 100–20000)
Number of optimization steps.
learning_rateType: number
Default: 0.0002
Optimization step size.
number_of_framesType: integer
Default: 89 (range 9–121)
Frames per training clip. Must satisfy frames % 8 == 1; other values are snapped down to the nearest valid count.
frame_rateType: integer
Default: 24 (range 8–60)
Target frames per second.
resolutionType: string (low, medium, high)
Default: medium
| Resolution | 16:9 | 1:1 | 9:16 |
|---|---|---|---|
| low | 512×288 | 512×512 | 288×512 |
| medium | 768×448 | 768×768 | 448×768 |
| high | 960×544 | 960×960 | 544×960 |
aspect_ratioType: string (16:9, 1:1, 9:16)
Default: 1:1
auto_scale_inputType: boolean
Default: false
Fit videos to the target frame count and frame rate.
split_input_into_scenesType: boolean
Default: false
When true, synthesized training videos above the duration threshold are split into scenes after the start-image/audio assembly. Off by default for this mode.
split_input_duration_thresholdType: number
Default: 30.0 (range 1.0–60.0)
Duration above which a synthesized clip is eligible for scene splitting.
audio_normalizeType: boolean
Default: true
Peak-normalize the conditioning audio for consistent loudness across the dataset.
audio_preserve_pitchType: boolean
Default: true
Preserve pitch when fitting audio to the video duration (instead of trimming/padding).
validationType: array
Default: [] (max 2 entries)
Validation samples, each an object with:
prompt (string) — the text prompt.image_url (string, required) — the start image used as the first frame.audio_url (string, required) — the conditioning audio track that drives the video.validation_negative_promptType: string
Default: a built-in quality negative prompt.
validation_number_of_framesType: integer
Default: 89 (range 9–121)
validation_frame_rateType: integer
Default: 24 (range 8–60)
validation_resolutionType: string
Default: high
validation_aspect_ratioType: string
Default: 1:1
stg_scaleType: number
Default: 1.0 (range 0.0–3.0)
debug_datasetType: boolean
Default: false
Return an archive of the preprocessed data for inspection.
lora_file — the trained LoRA weights (.safetensors).config_file — JSON describing the trigger phrase and training type.video — combined validation reel (when validation samples were provided).debug_dataset — preprocessed-data archive, only when debug_dataset is enabled.A successful run is billed max(100, number_of_steps) billable units. Requests that fail before training completes (input-validation errors / HTTP 422, or dataset-download failures) are billed 0 units.
number_of_steps, conditioning on the first frame and on the (frozen) audio, learning to generate the target video. Validation previews run at intervals..zip is unpacked; macOS __MACOSX metadata folders are ignored.audio_normalize / audio_preserve_pitch.)The first frame (your start image) is held fixed and the audio is used only as a driving signal — it is not regenerated. The LoRA learns to produce video that begins from the supplied image and moves in a way consistent with the audio.
Good caption: a person speaking to camera in a bright office
Weak caption: talking
At inference, supply both a start image and a conditioning audio track, and use the same caption style and trigger phrase you trained with.
json{ "training_data_url": "https://example.com/a2v_groups.zip", "trigger_phrase": "", "rank": 32, "number_of_steps": 2000, "learning_rate": 0.0002, "number_of_frames": 89, "frame_rate": 24, "resolution": "medium", "aspect_ratio": "1:1", "validation": [ { "prompt": "a person speaking to camera", "image_url": "https://example.com/face.png", "audio_url": "https://example.com/speech.wav" } ] }
learning_rate if motion looks unstable, or add more well-matched data.learning_rate and/or add more varied, clean data.rank, more groups._end target with matching base names.validation_number_of_frames / validation_frame_rate._audio file and no audio track in the start video).