Skills / video-voice
video-voice
Part of the video library (loaded by /video, not run directly): narration from script.md with local voices (Kokoro English, 3arab Arabic) or the user's own recording cut into lines, with word timings; never clones a voice.
- Author
- agentsaisle
- Latest
- v0.3.0
- Aisle
- video
- Works with
- Claude Code
- Source
- HazemSalah29/agentsaisle
- Stars
- 2
Install
video-voice is a part of the video library. You do not run it yourself: you type /video and describe what you want, and Claude uses this part when it is needed. Installing the library installs this part too.
Install video
npx @agentsaisle/cli add videoRuns scriptsThis skill includes scripts
Your agent may run these scripts on your machine. A maintainer has read every one in full, and the CLI lists the files when you install. You can read them on GitHub first.
Read the files on GitHubAudit
Checked with aisle audit (version 0.3.0). Run it yourself: aisle audit video-voice
- Critical
- 0
- High
- 0
- Medium
- 1
- Low
- 0
14 files · audited 2026-11-03 · rules 1.0.0
MediumAA-P02Can write files and run interpreters without disable-model-invocation
SKILL.md:5
Read Write Glob Grep Bash(node *)Why The agent may load this skill on its own and then write files and run code in one go.
Fix Set disable-model-invocation: true so the user starts it, or narrow the Bash patterns.
What this skill can use
Tools
- Read
- Write
- Glob
- Grep
- Bash(node *)
Scripts
- providers/tts_arab3.py
- providers/tts_kokoro.py
- scripts/_lib.mjs
- scripts/align.mjs
- scripts/providers.mjs
- scripts/recorded.mjs
- scripts/run.mjs
- scripts/script-parse.mjs
- scripts/voice.mjs
Domains mentioned
- example.com
Automated checks found the patterns listed here. An audit reduces risk; it is not a guarantee of safety. How audits work · Read the rules
Show this grade in a README
The badge updates when the registry is rebuilt. Paste this Markdown into the README:
[](https://www.agentsaisle.dev/skills/video-voice)SKILL.md
Rendered from commit 2ee11a4
Video voice
Turns script.md into audio and word times. Scripts do the work; the engines run locally and offline. <skill> below is the folder that holds this SKILL.md.
Use when
- A project has a checked
script.mdand needs narration audio, or word timings for captions. - The user wants their own voice: they recorded the script once through (
references/recorded.md). - A project has a checked script and needs narration, optionally with
--provider,--voice,--speed.
Don't use when
- The user wants to clone a voice: this version cannot, and it refuses without recorded consent anyway. Never clone a public figure.
- The user wants a paid service (ElevenLabs and others are not built).
- The script has not passed
write-check.mjs.
Steps
- Check the engines with
/video doctor. If Kokoro or 3arab is missing, say so and offer--provider test(a tone, not speech, useful to preview timing) or the install notes inreferences/engines.md. Never install anything yourself. - Run
node <skill>/scripts/voice.mjs <project> [--provider kokoro|3arab|test] [--voice id] [--speed 1] [--seed 1]. Default provider: 3arab forar, kokoro otherwise. Lines that did not change are kept; add--forceto redo all. - Run
node <skill>/scripts/align.mjs <project>. It uses whisper.cpp when set up; otherwise it estimates and flags the timings as approximate. - Report the manifest: provider, voice, seconds, and whether timings are measured or estimated.
- Their own recording instead of steps 2 and 3: ask whose voice it is, then
node <skill>/scripts/recorded.mjs <project> --file <recording> --speaker self(or--speaker other --consent <file>). It cuts one WAV per line and writes the word times; it needs whisper.cpp and nothing is uploaded. - Next:
node <video-core>/scripts/timing.mjs <project>; the render burns the captions from these word times.
Budget
-
Search first (grep, glob, symbol search). Read line ranges, not whole files.
-
Read at most 8 files per step. If you need more, write down what you learned and narrow the question.
-
Do not re-read a file you just wrote or edited.
-
Prefer the smallest command output that answers the question: head, tail, quiet flags, filtered lists.
-
Run each script once. Do not listen-check or read the WAV files; the manifest and summary have what you need.
-
Re-voice only edited lines (the script does this by itself).
Output
- The provider, voice and total seconds, and the paths
voice/*.wav,voice/words.json,voice/manifest.json. - Whether word times are measured (whisper) or ESTIMATED, in capital letters if estimated.
- For Arabic: that the voice is a machine voice with a watermark, and numbers must already be words.
Done when
voice.mjsandalign.mjsboth exited 0 and the user was told how the timings were made.- No API key was read or printed; no voice was cloned.
Version history
| Version | Commit | Install |
|---|---|---|
| 0.3.0latest | 2ee11a4 | add video-voice |