audio-acquisition

Installation
SKILL.md

Audio Acquisition

Audio is a question, never a leftover. Ask it every time, including for formats with no narration — a silent piece should be silent because somebody chose that, not because nobody raised it. Three decisions, and they have genuinely different answers.

Requires

scripts/measure.py (durations, and a track's per-second energy structure) and scripts/normalize_audio.py (loudness) ship with this skill. Both are stdlib-only and need ffmpeg/ffprobe on PATH; nothing else has to be installed for the measure-don't-trust discipline below to be executable rather than aspirational.

Synthesis and sourcing do not ship here. pip install 'video-studio-engine[audio] @ https://github.com/scrollmark/social-skills/archive/refs/heads/master.tar.gz' adds tts_kokoro (local voice plus word timings) and gen_music (score); the same command without the [audio] bracket is enough for stock_freesound (effects, licence-filtered). Run them as video-studio tts_kokoro …. The same [audio] bracket also carries duck_music (a per-frame volume envelope so the bed drops under narration) and music_catalog (tracks you already hold a licence for, picked deterministically so a re-render never changes the score). Narration this studio did not speak — a recorded read, a supplied track — gets word timings from gen_captions, which needs the [captions] bracket instead. A user who skips that install has no voice, no music and no licence-filtered effects — the tiering below still tells them which service to buy and what to check, but nothing synthesises. ElevenLabs has a script now — video-studio tts_eleven — but it bills per character and needs ELEVENLABS_API_KEY, so reach for it only when the local voice genuinely will not do: a language Kokoro does not speak, or a delivery the client has signed off on. It returns no word timings, so captions for an ElevenLabs read come from gen_captions.

Voice

The local voice is the default and it is free. It runs offline, needs no key, and — the part that matters structurally — it returns word timings, which are what captions are driven by. A captioned format has no other option.

Installs
49
GitHub Stars
16
First Seen
Aug 21, 2026