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
Dataset preparation
LTX's trainer takes a dataset; it does not help you build one. For an audio LoRA the dataset is the challange, the model learns a transformation, so every item must be the same performance twice, once dry and once through a real acoustic treatment, aligned and gain-matched. I also used two iterations of each dry sound source so model can learn on variety. These are the scripts that built the AKUSPACE set (266 pairs, 14 sources × 19 cells).
Set AKUSPACE_DATASET to your dataset root, or run from the repo and the
relative default applies.
| Script | Does |
|---|---|
build_v5_rooms.py |
dry/wet room pairs at three levels per room |
build_v5_outdoor.py |
outdoor beds; projects the dry out before rebuilding |
build_v5_sfx.py |
Eurorack modular-delay pairs |
build_eurorack_dry.py |
assembles the dry side fed through the hardware |
make_manifest_v5.py |
writes the training CSV with captions and splits |
verify_dataset.py |
checks every pair: length, rate, ceiling, alignment |
check_limiting.py |
catches limiting/clipping introduced by a render chain |
check_clips.py |
duration and sample-rate conformance |
wetdry.py |
measures the wet/dry relationship of a rendered pair |
slice_ableton_stems.py |
cuts long recordings into per-source clips |
The rules these encode
Each one cost real time to learn.
Never normalise dry and wet independently. Apply the same gain to both, or the pair no longer describes a transformation and the model learns loudness instead of acoustics.
Normalise by active loudness, not peak. Sparse material — handclaps especially — reads ~13 dB quiet on peak-based normalisation and ends up mismatched against sustained sources.
An ambience bed is not a reverb tail. A tail is part of the signal and scales cleanly; a bed is a separate recording, so boosting it amplifies its own noise floor. Scale beds down only, and only a little. This is why the outdoor cells ship two levels while rooms and SFX ship three.
Check the dry fit before trusting any ambience measurement. R = wet − dry
assumes the render carries the dry at exactly 1.00×. When it does not, a
negative ghost of the dry hides inside R and dominates every derived number —
which produced months of misleading ambience statistics here before
verify_dataset.py caught it. Confirm fit ≈ 1.000 first.
The trigger word belongs in preprocessing, not the manifest. It is prepended to training captions by the preprocessor and must appear in inference prompts; storing it in the CSV double-applies it.