Instructions to use KoshiMazaki/akuspace-ltx25 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LTX.io
How to use KoshiMazaki/akuspace-ltx25 with LTX.io:
# Install the LTX-2 pipelines git clone https://github.com/Lightricks/LTX-2.git cd LTX-2 uv sync --frozen
# Download the weights from this repo, plus the Gemma text encoder hf download KoshiMazaki/akuspace-ltx25 --local-dir models/akuspace-ltx25 hf download google/gemma-3-12b-it-qat-q4_0-unquantized --local-dir models/gemma-3-12b
# Text/image-to-video with the LoRA on the HQ two-stage base pipeline uv run python -m ltx_pipelines.ti2vid_two_stages_hq \ --checkpoint-path path/to/checkpoint.safetensors \ --distilled-lora path/to/distilled_lora.safetensors 0.8 \ --spatial-upsampler-path path/to/spatial_upsampler.safetensors \ --gemma-root models/gemma-3-12b \ --lora models/akuspace-ltx25/<weights>.safetensors 1.0 \ --prompt "your prompt here" \ --output-path output.mp4 # For image-to-video, add: --image path/to/image.jpg 0 0.8 - Reverb
How to use KoshiMazaki/akuspace-ltx25 with Reverb:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
| # Scripts | |
| The tooling that produced this LoRA and its examples, so the results can be | |
| reproduced and checked rather than taken on trust. | |
| ## Inference | |
| **`ltx_a2a_generate_multi.py`** β audio-to-audio generation from a TSV manifest. | |
| The LTX trainer ships no standalone a2a inference CLI; `validation_runner.py` is | |
| that code path, so this drives `scripts/train.py` with `optimization.steps: 1` | |
| and `checkpoints.no_resume: true` and collects what validation writes. | |
| Its reason for existing: the stock helper pins one `--reference` to every | |
| prompt, so an N-source sweep costs N model loads per checkpoint. Validation | |
| samples each carry their own `conditions[].audio`, so one load can cover every | |
| (source, prompt) pair. A 3-source Γ 19-cell sweep drops from 3 model loads to 1, | |
| and loading dominates runtime. | |
| ``` | |
| ltx_a2a_generate_multi.py --checkpoint <lora.safetensors> \ | |
| --base-config <inference.yaml> --manifest sweep.tsv --output-dir out/ | |
| ``` | |
| Manifest is `label<TAB>reference_wav<TAB>prompt`. The trigger word is prepended | |
| by the tool, matching how training captions were built β never put it in the | |
| manifest. | |
| **`build_sweep_manifest.py`** β builds that manifest from the trained caption | |
| vocabulary. Captions are assembled from the exact strings in the training | |
| manifest with the source type substituted, so prompts stay in distribution. | |
| Cell sets: `sweetspot`, `compare`, `all` (12 room cells), `placesfx` (outdoor + | |
| SFX), `full` (all 19). | |
| **`build_heldout_refs.py`** β rebuilds the 15.08 s held-out references from the | |
| dataset's dry sources. Every source is exactly 6.000 s and the render length is | |
| 377 frames at 25 fps, so the reference is the dry clip repeated with a gap and | |
| trimmed. No dependencies beyond numpy. | |
| ## Verification | |
| **`measure_timing.py`** β envelope cross-correlation between a dry reference and | |
| its render, in 2 ms RMS windows over Β±250 ms. This reproduces the timing table | |
| in the model card, so those numbers can be checked rather than believed. | |
| Read the correlation column carefully: it measures how much the envelope | |
| *changed*, and reverb changes it by design β most on transient-dense material | |
| where the tail fills the gaps between hits. Low r on percussion is the effect | |
| working. It is a timing measure, not a quality measure. | |
| ## Training / preprocessing | |
| **`box_b_trainer_setup.sh`** β dataset preprocess plus the **mandatory flatten | |
| step**. | |
| `process_dataset.py` mirrors the dataset-JSON relative paths, writing | |
| `audio_latents/audio/targets/X.pt` and | |
| `reference_audio_latents/audio/REFERENCES/X.pt`. But `datasets.py::_discover_samples` | |
| takes the primary source's `rel_path` and requires that identical path in every | |
| other source, so targets and references never match. The run then reports | |
| **"No valid samples found"** with per-source counts of zero while all three | |
| directories are visibly full. Flattening all three to a single level fixes it. | |
| This is silent and will hit anyone training a multi-source a2a IC-LoRA. | |
| Also note `keep_last_n` is a rolling window β set it to `-1` to keep every | |
| checkpoint, or early ones are deleted without warning. | |
| Inference needs preprocessed latents too, because `train.py` builds a | |
| dataloader before validation fires. It does not need *all* of them: a handful of | |
| pairs satisfies it in under a minute. | |
| ## Video | |
| **`build_flf25.py`** β first-and-last-frame LTX-2.5 graphs in ComfyUI API | |
| format, both frames via chained `LTXVAddGuide` at `frame_idx` 0 and β1. Two | |
| presets, `distilled` and `dev`; see `WORKING_CONFIG.md`. Every node class and | |
| input name is validated against a live `object_info` dump before the graph is | |
| written. | |
| **`WORKING_CONFIG.md`** β the verified-good settings, and the trap that the two | |
| transformers need opposite sampling regimes. | |
| Note the a2a LoRA does **not** belong inside a video graph: it is | |
| reference-conditioned, so with no reference it is off-distribution and yields | |
| near-silence. Render video, take its audio, run the a2a pass, remux. That also | |
| gives the base-model baseline for free. | |