Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.25.0
title: abv1 sa3 engine
emoji: 🎛️
colorFrom: indigo
colorTo: pink
sdk: gradio
sdk_version: 6.14.0
app_file: app.py
pinned: false
license: other
short_description: Stable Audio 3 text/audio-to-audio + headless API
suggested_hardware: zero-a10g
models:
- stabilityai/stable-audio-3-medium
- stabilityai/stable-audio-3-small-music
abv1 · SA3 engine
Shared Stable Audio 3 backend for the abv1 music-AI demo apps: interactive text→audio and audio→audio for the demo pages, plus a headless API the trend-radio cron uses to batch 15 tracks every 2 hours.
Hardware: ZeroGPU (set in Space settings → Hardware → ZeroGPU; the
suggested_hardware key above is only a hint).
Models
| key | repo | max seconds | notes |
|---|---|---|---|
small-music |
stabilityai/stable-audio-3-small-music |
120 | 0.6B, seconds per gen — the batch default |
medium |
stabilityai/stable-audio-3-medium |
180 | general audio, higher quality |
Both repos are gated. The Space needs an HF_TOKEN secret from an account that
has accepted their licences.
UI
- Text → audio — model, prompt, negative prompt, seconds, steps, CFG, seed.
- Audio → audio — upload a file, set how far to travel from it
(
init_noise_level: low = stay close, high = go wild), then the same params.
UI generations are not token-gated: visitors spend their own ZeroGPU quota.
Headless API
Two endpoints, registered off hidden components. Both return
[audio_file, meta_json] where meta is
{ok, seed, model_variant, seconds, steps, cfg_scale, sample_rate, gen_wall_s, stub}.
from gradio_client import Client, handle_file
c = Client("kalamishere/audiogen", token=HF_READ_TOKEN)
# text → audio
path, meta = c.predict(
SA3_API_TOKEN, "small-music",
"driving techno, rolling hats, acid arp, 132 BPM", "",
30, 8, 1.0, -1,
api_name="/generate",
)
# audio → audio
path, meta = c.predict(
SA3_API_TOKEN, "small-music", handle_file("loop.wav"),
"same groove but dubbier", "", 0.4,
30, 8, 1.0, -1,
api_name="/generate_a2a",
)
Argument order matters (positional):
/generate—token, model_variant, prompt, negative_prompt, seconds, steps, cfg_scale, seed/generate_a2a—token, model_variant, init_audio, prompt, negative_prompt, init_noise_level, seconds, steps, cfg_scale, seed
seed = -1 picks a random one; the seed actually used comes back in meta.
Inputs are clamped server-side (seconds per-model cap, steps 1–100, cfg 0–15).
Token
Set the SA3_API_TOKEN secret to gate the API. If it is unset the API is
open — fine for dev, not for a public Space.
Local development
No weights, no torch — stub mode synthesizes a placeholder WAV so the whole app and both endpoints can be exercised on a laptop:
SA3_STUB=1 SA3_API_TOKEN=test python app.py # needs only gradio, numpy, soundfile
Deploying
See DEPLOY.md.
Licence
Powered by Stability AI. Models under the Stability AI Community License — see
NOTICE.md. All output is AI-generated; it is not a real release by any artist.