Loading...
Loading...
Generate a sound effect from a text description using Sonilo — a UI chime, a whoosh, an impact, ambience, a stylized cue — when there is no video to match. Use when the user describes the sound they want in words and gives a duration. For SFX matched to footage, use the video-to-sfx skill; for music, use text-to-music.
npx skill4agent add sonilo-ai/skills text-to-sfxSetup: See the setup-api-key skill.
⚠️ Cost: this tool makes an API call that may incur charges. Only call it when explicitly requested.
Matching sound to footage instead? Use video-to-sfx — it reads the cut and can pin sounds to specific moments, which a text prompt cannot do.
text_to_sfxsonilo accountsonilo accountsonilo whoamiapi.sonilo.comtext_to_sfx(
prompt="Thunder rumbling in the distance with light rain",
duration=6
)pip install sonilofrom sonilo import Sonilo
client = Sonilo() # reads SONILO_API_KEY
sfx = client.text_to_sfx.generate(prompt="Thunder rumbling in the distance with light rain", duration=6)
sfx.save("thunder.m4a")npm install soniloimport { SoniloClient } from "sonilo";
const client = new SoniloClient(); // reads SONILO_API_KEY
const sfx = await client.textToSfx.generate({
prompt: "Thunder rumbling in the distance with light rain",
duration: 6,
});npm install -g sonilo-clipip install sonilo-clisonilo text-to-sfx --prompt "Thunder rumbling in the distance with light rain" --duration 6--formatwav|mp3|aac|flaccurl -X POST "https://api.sonilo.com/v1/text-to-sfx" \
-H "Authorization: Bearer $SONILO_API_KEY" \
--data-urlencode "prompt=Thunder rumbling in the distance with light rain" \
--data-urlencode "duration=6"
# -> {"task_id": "..."} poll GET /v1/tasks/{task_id} until status is succeeded/failed{"task_id": ...}GET /v1/tasks/{task_id}statustask_id| Tool | Description |
|---|---|
| Generate one SFX clip from a text description only. |
| Parameter | Type | Default | Notes |
|---|---|---|---|
| string | — | Required. 1–2000 chars. |
| int | — | Required. 1–180 seconds. There is no source to take the length from, so you must set it. |
| string | | |
| string | | Absolute, or relative to the base path. |
TIME_OUT_SECONDStask_idget_sfx_task(task_id)get_generation_task(task_id)audio_format.wav.mp3.flac.m4aaacsfx-<first 8 chars of the task id>401402422429