Releases: psyb0t/docker-audiolla
Releases · psyb0t/docker-audiolla
Release list
v1.0.10
v1.0.10 — visualize/volume + metadata persist + catalog routes
Three real-world bugs fixed:
- /v1/audio/visualize/video/volume: ffmpeg showvolume size arg
style ("s=WxH" → "w=W:h=H").
- /v1/audio/metadata write mode: now actually persists tagged
audio to output_path / output_url (additive — old call shape
still works, flagged persisted=false in the response).
- /v1/catalog paths: /v1/audio/batch → /v1/batch and
/v1/audio/diarize → /v1/audio/diarize/{engine}; new consistency
test guards future drift.
v1.0.9
v1.0.9 — remix single-stem-solo
Soloing one stem in /v1/audio/remix (stem_mix={"vocals":1.0,
"drums":0.0,"bass":0.0,"other":0.0}) used to fail with
"mix_audio requires at least 2 inputs" — the post-separation mix
step couldn't handle a single surviving stem.
Fix: new audio.apply_gain_db() helper (single-stream ffmpeg
volume= pass); remix handler short-circuits to it when exactly
one stem survives gain filtering.
483/483 CUDA integration tests passing.
v1.0.8
v1.0.8 — UVR phantom-output root cause + remix stems arg The "model produced no output files" failure that bit every downstream consumer of /v1/audio/restore/uvr-* turned out to be a 3-layer config bug, not a model issue: 1. audio-separator snapshots output_dir at load_model() time; mutating sep.output_dir after load only updates the outer wrapper. Inner model_instance still writes to cwd (/app/, root-owned) → EACCES → library silently catches → audiolla sees "claimed but never written" files and drops them all. 2. output_single_stem filter matched the wrong stem-name namespace (model's own primary_stem_name vs engines.json's primary_stem). 3. Near-silent stem dropper masked layers 1 and 2 on synthetic fixtures. Fix: drop output_single_stem= from the Separator() call (audiolla picks the right stem post-hoc); propagate output_dir to sep.model_instance.output_dir alongside sep.output_dir before each separate() call. Plus a heavy-reverb test fixture + strict UVR output assertions (>= 10 s real WAV, no graceful no-output skip). Also: remix handler now passes stems to separate() (was failing with TypeError, masked pre-v1.0.7 by FastAPI's plain-text 500). 482/482 CUDA integration tests passing.
v1.0.7
v1.0.7 — field aliases + master mode auto-detect + preset/pipeline JS…
v1.0.6
v1.0.6 — fix ffprobe error masking + trim end_sec optional + tests
Bug fixes:
- /v1/audio/info now surfaces real ffprobe stderr instead of
"unknown error" (was using -v quiet which muted everything).
- /v1/audio/trim end_sec optional; omitting trims to source end.
Test harness: fixed container names — audiolla-pytest (CPU) /
audiolla-pytest-cuda (CUDA) — pre-killed by exact name at session
start. Same image reused, no rebuilds between tests.
New regression test for the MP3 info path. Trim test updated for
the new optional-end_sec contract.
Smoke: 395/395 CPU integration tests.
v1.0.5
v1.0.5 — pytest test infrastructure + engine logging coverage + bugfixes No API changes. All additive or latent-bug fix. Replaces 71 bash e2e_*.sh scripts with 83 pytest files (479 test functions) under tests/integration/. Session-scoped container, engine-union from markers, atexit + signal cleanup. Full CUDA suite: 470 passed, 9 skipped, 0 failed. 25/25 engines now log inference start/done with size + duration_ms and warn/exception at every raise. 7 framework modules got module-level loggers + key state-transition + error-path logs. Bug fixes: - UVR _STEM_RE regex (newer audio-separator filename format) - UVR phantom-output filter (model claims files it never wrote) - DeepFilterNet needs git on runtime PATH - Dockerfile.cuda was missing COPY presets - pyannote test accepts num_speakers == 0 on synthetic input .gitignore + .dockerignore: extra ML weight + archive + HF/torch cache patterns. Build context now 2.02 MB.
v1.0.4
v1.0.4 — fix enhance/deepfilter + JSON logging overhaul Bug fix: /v1/audio/enhance/deepfilter no longer 400s before first load. The predicate was checking a private attribute that only exists post-lazy-load. Logging: single centralised init path through audiolla.logging, line-delimited JSON, LOG_LEVEL env var, file:line:func + service / version / pid / host on every record, X-Request-Id correlation honoured both ways (inbound + outbound), per-request summary log level-scaled to status code (DEBUG /healthz, INFO 2xx/3xx, WARN 4xx, ERROR 5xx) with method / path / status / duration_ms / client_ip / user_agent / request+response byte sizes.
v1.0.3
v1.0.3 — entrypoint mirrors HUGGINGFACE_TOKEN ↔ HF_TOKEN huggingface_hub reads HF_TOKEN as canonical; audiolla's older docs use HUGGINGFACE_TOKEN. Setting one name now unlocks the other so gated downloads (stable-audio-open, musicgen-small, musicgen-medium, pyannote) work regardless of which env var the operator picked. No code path changes — environment normalization only.
v1.0.2
v1.0.2 — HF_HUB_OFFLINE default flipped to 0 Image lazy-downloads HF weights on first call instead of refusing all egress by default. Out-of-the-box usability fix for the five text-to- audio engines, ast-tag, clap-embed, pyannote — all of which were returning HTTP 500 on the first request with the previous offline default. Strict-offline deployments: prefetch with `huggingface-cli download <model>` against a mounted `/data/hf` volume, then start the container with `-e HF_HUB_OFFLINE=1`. No API / engine behavior changes — only the env-var default moves.
v1.0.1
v1.0.1 — CI fix: free disk space on ubuntu-latest before CUDA build No code or image changes; functionally identical to v1.0.0. CUDA build in CI was OOMing the runner disk during torch 2.5.1+cu126 unpack (~5 GB on top of the rest of the heavy-deps layer; ubuntu-latest only has ~14 GB free). Reusable workflow bumped to psyb0t/reusable-github-workflows v0.6.0 (SHA 59d43bac747f6bf66eeddb103a845b6dbf367c6b) with `free_disk_space: true` enabled. Frees ~25-30 GB by stripping Android SDK, .NET, Haskell, CodeQL, large apt packages, and preloaded docker images. Tool cache + swap left intact.