Loading...
Loading...
Duck a music bed under a voice track using Sonilo — automatically lowers the music wherever the voice speaks and lifts it back in the gaps. Use when mixing a separately-generated or existing music track under narration, dialogue, or a video's own voice track, without manual volume automation.
npx skill4agent add sonilo-ai/skills audio-duckingSetup: See the setup-api-key skill.
⚠️ Cost: makes an API call that may incur charges. Only call when explicitly requested.
audio_duckingsonilo accountsonilo accountsonilo whoamiapi.sonilo.comaudio_ducking(
voice_path="~/Desktop/interview.mp4",
music_path="~/Desktop/background-track.wav"
)pip install "sonilo>=0.13"from sonilo import Sonilo
client = Sonilo() # reads SONILO_API_KEY
result = client.audio_ducking.generate(
voice="interview.mp4", # audio or video; also voice_url=
music="background-track.wav", # audio only; also music_url=
)
result.save("ducked.mp4" if result.output_type == "video" else "ducked.wav")npm install sonilo@>=0.14import { SoniloClient, download } from "sonilo";
import { writeFile } from "node:fs/promises";
const client = new SoniloClient(); // reads SONILO_API_KEY
const result = await client.audioDucking.generate({
voice: "./interview.mp4", // audio or video; also voiceUrl
musicUrl: "https://example.com/background-track.wav", // audio only; also music
});
await writeFile(
result.output_type === "video" ? "ducked.mp4" : "ducked.wav",
await download(result.output_url!),
);npm install -g sonilo-clipip install sonilo-clisonilo audio-ducking --voice interview.mp4 --music-url https://example.com/background-track.wav--voice--voice-url--music--music-urloutput.wavoutput.mp4--output--musiccurl -X POST "https://api.sonilo.com/v1/audio-ducking" \
-H "Authorization: Bearer $SONILO_API_KEY" \
-F "voice_file=@interview.mp4" \
-F "music_file=@background-track.wav"
# -> {"task_id": "..."} poll GET /v1/tasks/{task_id}voice_filemusic_filevoice_urlmusic_url| Tool | Description |
|---|---|
| Mix |
| Parameter | Type | Notes |
|---|---|---|
| string | Absolute path, or relative to |
| string | HTTPS URL to the voice audio/video. Exactly one of |
| string | Absolute path, or relative to the base path. Audio only — a video here is not treated specially and will be mishandled. |
| string | HTTPS URL to the music audio. Exactly one of |
| string | Defaults to |
text_to_musicvideo_to_musicmusic_pathvoice_pathvideo_to_music(ducking=true)audio_duckingtask_idget_sfx_task(task_id)get_generation_task(task_id).wav.mp4interview.mp4interview-ducked.mp4ducked-<first 8 chars of the task id>401402413422429