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
| """Did the Ableton renders pass through a limiter / normaliser? | |
| This decides whether a Python linear crossfade can stand in for an Ableton | |
| render at a lower send level. | |
| If the chain is purely linear (sum of dry + reverb return, no dynamics), then | |
| 0.7*dry + 0.3*(dry+reverb) = dry + 0.3*reverb | |
| is EXACTLY an Ableton render at 30% send, and Python is equivalent. | |
| A limiter breaks that. It is level-dependent and non-linear, so a render at 30% | |
| send hits it differently than the 100% render did -- and crossfading afterwards | |
| cannot reproduce that. The tell is a hard ceiling: many files peaking at the | |
| same value rather than scattered. | |
| """ | |
| import wave | |
| from collections import Counter | |
| from pathlib import Path | |
| import numpy as np | |
| DATA = Path("/workspace/Demos/data/acoustic-space-ableton/audio") | |
| def peak_db(p): | |
| with wave.open(str(p), "rb") as w: | |
| n, ch, sw = w.getnframes(), w.getnchannels(), w.getsampwidth() | |
| raw = w.readframes(n) | |
| if sw == 3: # 24-bit | |
| a = np.frombuffer(raw, dtype=np.uint8).reshape(-1, 3).astype(np.int32) | |
| x = (a[:, 0] | (a[:, 1] << 8) | (a[:, 2] << 16)) | |
| x = np.where(x & 0x800000, x - 0x1000000, x).astype(float) / 8388608.0 | |
| else: | |
| x = np.frombuffer(raw, dtype=np.int16).astype(float) / 32768.0 | |
| if x.size == 0: | |
| return None | |
| return 20 * np.log10(np.abs(x).max() + 1e-12) | |
| for label in ("references", "targets"): | |
| peaks = [] | |
| for p in sorted((DATA / label).glob("*.wav")): | |
| d = peak_db(p) | |
| if d is not None: | |
| peaks.append(round(d, 2)) | |
| if not peaks: | |
| continue | |
| print(f"=== {label}: {len(peaks)} files ===") | |
| print(f" peak range: {min(peaks):.2f} .. {max(peaks):.2f} dBFS") | |
| common = Counter(peaks).most_common(5) | |
| print(" most common peak values:") | |
| for v, c in common: | |
| bar = "#" * min(c, 40) | |
| print(f" {v:>7.2f} dBFS x{c:<3} {bar}") | |
| ceiling = [p for p in peaks if p > -0.5] | |
| print(f" files peaking above -0.5 dBFS: {len(ceiling)} of {len(peaks)} " | |
| f"({100.0*len(ceiling)/len(peaks):.0f}%)") | |
| print() | |
| print("A tight cluster at one value just below 0 => a ceiling was applied") | |
| print("(limiter or normaliser), so the render chain is NOT purely linear and an") | |
| print("Ableton render at lower send will differ from a Python crossfade.") | |
| print("A broad scatter => linear sum, and Python is mathematically equivalent.") | |