studio: fetch the director / Kokoro / Step-Audio models for a fresh install

The studio sidecar images build on scene start, but their MODELS were never
downloaded by any script — so a fresh user's studio-director (the 🖼️ prompt
crafter, in both image- and video-studio), studio-tts, and studio-step-voice
booted with no weights. Add the downloads, all repo-verified:

- setup-image-studio.sh now also fetches the director GGUF + mmproj
  (HauhauCS/Qwen3.5-4B-Uncensored-HauhauCS-Aggressive — commit matched the
  on-disk metadata) into MODEL_DIR/qwen3.5-4b-gguf/…, closing the image-studio
  🖼️ button gap.
- services/comfyui/download_kokoro.sh — kokoro-v1.0.onnx + voices-v1.0.bin from
  the kokoro-onnx release assets (the format studio-tts loads).
- services/comfyui/download_step_audio.sh — stepfun-ai/Step-Audio-EditX +
  Step-Audio-Tokenizer for studio-step-voice.

Paths mirror each sidecar compose's ${…_DIR} default. bash gates 56/0.

NOT included: the LTX-2.3 / Sulphur video-model set (video-studio) — ~12+ files
across several uploaders; needs a per-file source audit, tracked separately.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PoXV1FuKmTiDPB15qQvLjB
This commit is contained in:
noonghunna
2026-06-23 00:51:29 +00:00
parent cae021d6ea
commit cece4ec4fb
3 changed files with 82 additions and 2 deletions

View File

@@ -100,10 +100,20 @@ else
echo " (SKIP_BUILD set — skipping image build)"
fi
# --- 2. Download the Ideogram-4 model set (~27 GB) --------------------------
# --- 2. Download the model sets (Ideogram-4 + the studio director) ----------
if [ -z "${SKIP_DOWNLOAD:-}" ]; then
say "── [2/3] Downloading Ideogram-4 model set (~27 GB; skip with SKIP_DOWNLOAD=1) ──"
say "── [2/3] Downloading model sets (~30 GB; skip with SKIP_DOWNLOAD=1) ──"
echo " • Ideogram-4 image model set (~27 GB)"
bash "$COMFYUI_DIR/download_ideogram4.sh"
# The studio DIRECTOR (qwen3.5-4b, GPU0) crafts the prompt behind the 🖼️ image
# button — without it studio-director boots but has no model, so the button
# fails. GGUF + vision mmproj (~2.7 GB) → MODEL_DIR/qwen3.5-4b-gguf/… (where the
# enhancer compose's -m / --mmproj defaults point).
echo " • Studio director GGUF (Qwen3.5-4B-Uncensored, ~2.7 GB + mmproj)"
hf download HauhauCS/Qwen3.5-4B-Uncensored-HauhauCS-Aggressive \
Qwen3.5-4B-Uncensored-HauhauCS-Aggressive-Q4_K_M.gguf \
mmproj-Qwen3.5-4B-Uncensored-HauhauCS-Aggressive-BF16.gguf \
--local-dir "$MODEL_DIR_RESOLVED/qwen3.5-4b-gguf/hauhaucs-uncensored-q4km"
else
echo " (SKIP_DOWNLOAD set — skipping weight download)"
fi

View File

@@ -0,0 +1,40 @@
#!/usr/bin/env bash
# Downloads the Kokoro-82M ONNX voice model for the studio-tts sidecar (Kokoro
# narration / voiceover on the video lanes). CPU inference via the kokoro-onnx
# library (installed in the studio-tts image); these are the two model files it
# mounts at runtime.
#
# Source: the kokoro-onnx project's release assets (the kokoro-v1.0.onnx /
# voices-v1.0.bin format the library loads — NOT the onnx-community HF repo's
# onnx/model.onnx layout). ~330 MB total.
#
# Run: ./download_kokoro.sh
#
# Lands files where the studio-tts compose mounts them (KOKORO_DIR):
# tts/kokoro/kokoro-v1.0.onnx
# tts/kokoro/voices-v1.0.bin
set -uo pipefail
# Mirrors the studio-tts compose default (${KOKORO_DIR:-/mnt/models/comfyui/models/tts/kokoro}).
ROOT="${KOKORO_DIR:-${COMFYUI_MODELS_DIR:-/mnt/models/comfyui/models}/tts/kokoro}"
REL="https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0"
LOG_TS() { date +%H:%M:%S; }
log() { echo "[$(LOG_TS)] $*"; }
step() { log ""; log "=== $* ==="; }
command -v curl >/dev/null 2>&1 || { echo "ERROR: 'curl' not found." >&2; exit 1; }
mkdir -p "$ROOT"
fetch() { # <filename> — resumable, fail on HTTP error
local f="$1"
curl -fL --retry 3 -C - -o "$ROOT/$f" "$REL/$f"
}
step "1/2 Kokoro ONNX model (~310 MB)"
fetch kokoro-v1.0.onnx
step "2/2 Kokoro voices pack (~27 MB)"
fetch voices-v1.0.bin
log ""
log "Done → $ROOT (kokoro-v1.0.onnx + voices-v1.0.bin)"

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Downloads Step-Audio-EditX for the studio-step-voice sidecar (premium zero-shot
# voice clone + emotion/style editing — the 🎙️ Voice lane). Two repos: the model
# weights + its audio tokenizer, both from stepfun-ai (Apache-2.0). ~14 GB bf16.
#
# Run: ./download_step_audio.sh
# nohup ./download_step_audio.sh > /tmp/step-audio-dl.log 2>&1 & (background)
#
# Lands where the step-voice compose mounts them (STEP_AUDIO_DIR → /models):
# Step-Audio/Step-Audio-EditX/
# Step-Audio/Step-Audio-Tokenizer/
set -uo pipefail
# Mirrors the step-voice compose default (${STEP_AUDIO_DIR:-/mnt/models/comfyui/models/Step-Audio}).
ROOT="${STEP_AUDIO_DIR:-${COMFYUI_MODELS_DIR:-/mnt/models/comfyui/models}/Step-Audio}"
LOG_TS() { date +%H:%M:%S; }
log() { echo "[$(LOG_TS)] $*"; }
step() { log ""; log "=== $* ==="; }
command -v hf >/dev/null 2>&1 || { echo "ERROR: 'hf' (huggingface_hub CLI) not found. pip install -U huggingface_hub" >&2; exit 1; }
mkdir -p "$ROOT"
step "1/2 Step-Audio-EditX weights (~14 GB)"
hf download stepfun-ai/Step-Audio-EditX --local-dir "$ROOT/Step-Audio-EditX"
step "2/2 Step-Audio-Tokenizer"
hf download stepfun-ai/Step-Audio-Tokenizer --local-dir "$ROOT/Step-Audio-Tokenizer"
log ""
log "Done → $ROOT (Step-Audio-EditX/ + Step-Audio-Tokenizer/)"