vo-timing
Skill2 starsChanged 5 days agoMITView on GitHub
Extracting word-level timings from a voice-over audio file (mp3/wav) in the sandbox with faster-whisper and converting them to frames at the project fps, to key animation/simulation events to the words. Use when the user shares a VO/narration/audio and wants timings, beats or frame numbers.
- Installs packages
In this repository26 other files it gives its agents.
- aftereffects-bridgeSkill
- aftereffects-scriptingSkill
- cinema4d-alembicSkill
- cinema4d-mcpSkill
- cinema4d-motion-trackerSkill
- cinema4d-particlesSkill
- cinema4d-redshiftSkill
- cinema4d-render-previewSkill
- cinema4d-riggingSkill
- cinema4d-takesSkill
- houdini-flipbookSkill
- houdini-mcpSkill
- houdini-network-layoutSkill
- houdini-pop-particlesSkill
- houdini-pyro-smokeSkill
- houdini-to-cinema4dSkill
- houdini-vdb-surfacingSkill
- premiere-bridgeSkill
- project-notesSkill
- unreal-content-managementSkill
- unreal-editor-toolsSkill
- unreal-led-volume-rigSkill
- unreal-materials-pythonSkill
- unreal-mcpSkill
- unreal-sequencer-pythonSkill
- unreal-ultra-dynamic-skySkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
When the VO lives inside an edit/animatic, its timeline seconds are the edit's timecode — map them to a comp via the comp's start offset …
- Distinctive: line 24
After any session that used Houdini/Cinema 4D/After Effects, or whenever something new is verified:
- Distinctive: line 25
Add gotchas/recipes ONLY if tested and working in a real scene.
- Very specific: line 27
Put each finding in the skill it belongs to (see the indexes in houdini-mcp and cinema4d-mcp).
- Very specific: line 29
Keep each SKILL.md under ~300 lines.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Voice-over timings
- Word-level VO timings:
pip install faster-whisper --break-system-packages, modelbase.en,transcribe(..., word_timestamps=True), convert seconds × fps to frames. Runs fine on CPU in the sandbox for a ~3 min file. Key sim events (bursts, ignition, exhaust) to the words. - Windows host without pip access (verified Win 11, uv, Python 3.12, faster-whisper current in
Oct 2026):
uv run -q --python 3.12 --with faster-whisper python -I tx.py …works, but passing a file path fails insidedecode_audiowithTypeError: open() got an unexpected keyword argument 'metadata_errors'(newer PyAV). Extract the audio first —ffmpeg -i in.mp4 -vn -ac 1 -ar 16000 vo.wav(works straight from an animatic/edit .mp4) — and pass a float32 array:wave+np.frombuffer(..., np.int16) / 32768. Modelsmall.enwithint8on CPU transcribed 104 s in well under 2 min, with clean word timings. - When the VO lives inside an edit/animatic, its timeline seconds are the edit's timecode — map them
to a comp via the comp's start offset (see
aftereffects-bridgefor precomp time mapping). - Frame numbers from seconds×fps are 0-based; Houdini frames are 1-based (+1); C4D is 0-based.
- To line words up with an animated part in Houdini, sample
prim.boundingBox()of the one prim whosepathends with the part name at ~15 frames — never loop every frame.
Keeping this skill current
After any session that used Houdini/Cinema 4D/After Effects, or whenever something new is verified:
- Add gotchas/recipes ONLY if tested and working in a real scene; mark anything else "(unverified)".
- Correct entries that proved wrong — don't append contradictions.
- Put each finding in the skill it belongs to (see the indexes in
houdini-mcpandcinema4d-mcp); project-specific facts go to that project's notes (seeproject-notes), never into a skill. - Keep each SKILL.md under ~300 lines; split into a new sub-skill or
references/when it grows. - Re-package every changed skill (keep names) and, if the skills live in a git repo, commit and push. Tell the user in one line what changed.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

