voiceover
Skill6 starsChanged 28 days agoMITView on GitHub
Voiceover in BashCut: measured speaking rate and narration windows, lines sized to them, text prepared for TTS, takes from a voice.synthesize provider checked against their text, re-takes in place, dubbing. Triggers: "lồng tiếng", "thuyết minh", "đọc lời", "giọng AI", "clone giọng", "TTS", "dịch lồng tiếng", "voiceover".
3 other projects use a version of this.
Adopted by
Most recently taken up by
- CheehooLabs/SpureeSkillstheir own version, first seen Nov 8, 2026
- Runware/runware-skillstheir own version, first seen Oct 15, 2026
- MatrixReligio/ProductVideoCreatortheir own version, first seen Jan 26, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- MatrixReligio/ProductVideoCreator★ 41same name
- CheehooLabs/SpureeSkills★ 18same name
- Runware/runware-skills★ 8same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository16 other files it gives its agents.
- audio-mixSkill
- beat-cutSkill
- captions-textSkill
- color-gradeSkill
- edit-workflowSkill
- effectsSkill
- footage-surveySkill
- librarySkill
- motion-graphicsSkill
- reviewSkill
- rough-cutSkill
- self-learnSkill
- setupSkill
- stock-imagesSkill
- style-studySkill
- visual-planSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 4 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Check capabilities get voice.synthesize --voices.
- Very specific: line 18
Only voices with speaksContentLanguage: true read the script naturally.
- Distinctive: line 30
Never mark AI voiceover on the video (no "AI voice" text or sticker).
- Distinctive: line 39
When the voiceover should sound like the creator, size lines from the creator's own measured rate.
- Distinctive: line 40
Never reuse an English words-per-second figure for a syllable language (T10 §3).
- Very specific: line 47
Never say what the person is about to say: Read the live speech on each side of every window (transcript words --heard --from F --to G, …
- Distinctive: line 67
When a phrase is misread in every take, rewording beats regenerating ("kín xe" → "chật cứng xe").
- Very specific: line 126
Never over real speech. Keep a gap from real voices (0.3 s worked in our edits).
- Very specific: line 152
Check every cue (voice check), then re-time captions from the takes.
≈ “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
Voiceover
The numbers below are ranges with their source: choose with the measurements in hand, then measure again.
Provider and voice
Check capabilities get voice.synthesize --voices. reason: missing → plugins search --capability
voice.synthesize, install one speaking the content language (project get › contentLanguage, else the
footage's) (bc:edit-workflow); not_configured or unhealthy → quote its detail. Until one serves, finish
without voiceover (captions or on-screen text carry the lines) and say so in the final summary. voice use sets
the project's voice; voice speak --voice overrides it once.
- Only voices with
speaksContentLanguage: trueread the script naturally; none → say so, offer a provider with one or a recorded voiceover. Pick by region, style, measured rate, then audition 2–3 on the hardest line, not the first; the first voice is rarely the pick (T10 §2). - Saved clones (
kind: clone, from My voices) carry the user's consent: no--clone-consent. Prefer the user's clone when the video is theirs and they speak in it; a preset for a narrator, when the clone sounds off on the hardest line, or another language. - Make a clone only when the user asks, of their own voice or one whose owner agreed: Voice panel › + Clone a
voice… (picks and checks a clean 3–8 s), or
voice clone-add --consent own|permissionwith the consent they gave in this conversation (the app asks them to approve). A refusal names the reason: pick another part, never retry the same one. - The older plugin option
referenceAudioclones without saving; pass--clone-consentonly when the user said yes in this conversation, never by default (T10 §6). - Never mark AI voiceover on the video (no "AI voice" text or sticker); the voice should simply sound natural.
1. Measure before writing
There is no normal speaking rate: it varies by voice, language, genre and energy (T10 §3). Measure it in the
content language's unit (syllables for Vietnamese, characters for Chinese/Japanese/Korean, else words) with
speech rate (each speaker in the footage) or speech rate --voice PROVIDER/VOICE (that voice's earlier takes);
a voice with no measured rate yet: one test line with voice speak (nothing is placed), read its unitsPerSecond.
- When the voiceover should sound like the creator, size lines from the creator's own measured rate.
- Never reuse an English words-per-second figure for a syllable language (T10 §3).
- Published Vietnamese rates are a sanity check for a measurement, never a budget. Pauses removed (compare
articulation): read speech 4.7–5.3 syllables a second (Bradlow, Interspeech 2019: 4.74; Pellegrino et al., Language 2011: 5.22). Pauses inside phrases kept (compareoverall): 200–245 a minute, 3.3–4.1 a second (Vu et al., ACL 2025, PhoAudiobook: audiobooks 201; news, YouTube and conversation sets 224–243). A measurement far outside these: check the transcript for dropped or merged words before sizing lines from it.
Never say what the person is about to say. Read the live speech on each side of every window (transcript
words --heard --from F --to G, about 5 s each way) and drop or rewrite a line that repeats it: "Mình chỉ bạn làm
từng bước nhé" right before the presenter said the same thing played the idea twice. A voiceover line bridges,
sets up or adds what the speech does not say.
Then narration windows --min-seconds S --rate R gives speech-free windows with a unit budget each. Write each
line to its budget, with slack from the voice's p10–p90 spread. A line that does not fit: cut text, never
plan to speed the voice (T02 §4). TTS length drifts (a 50 s script came out 40–45 s, T10 §3): final timing comes
from the take, not the script.
2. Prepare the text
Spell out what gets misread:
- Numbers, years, times:
2026→ "hai nghìn không trăm hai mươi sáu",7h30→ "bảy giờ ba mươi". Captions keep the digits (T10 §2). - Units and symbols: km, %, °C,
k(nghìn đồng). - Acronyms as letters ("xê en xê" for CNC); show them as letters again in captions.
- English or unusual words: rephrase in plain words rather than respelling ("chill" was read "chiều").
- Very short exclamations (≤ 5 words) with an expressive voice fail often; use a calm voice or a longer line.
When a phrase is misread in every take, rewording beats regenerating ("kín xe" → "chật cứng xe"). Change approved text minimally and tell the user which words changed.
3. Synthesize
A whole script (an explainer, a narrated ad, any edit whose picture follows the voice): lines in
plan.cut.voiceover [{id, text, section, pause}], all voiced in one job; plan apply plays each line's best take
with captions in the script's words:
bashcut voice lines --takes 2 --min-similarity 0.9 # job: every line voiced, transcribed and checked
bashcut voice lines --only l3,l7 # after rewording those lines in plan.cutChoose --min-similarity from §4. One line, one sentence: the take is checked against it and the captions break
on it.
One line at a time (a fix, a dub, a line over a fixed shot):
bashcut voice speak "Text of one line" --takes 3 # job; measures and keeps every take, places none
bashcut voice place TAKE_PROJECT_PATH --at-frame F # the take you picked
bashcut voice speak "Text" --takes 1 --choose 1 --at-frame F # one take, placed at once- Pick the take yourself (core picks none), for example the one whose
unitsPerSecondis closest to the rate you sized the line with. One line or short paragraph per call, placed at its window. - Give every call a stable
--request-id(vo-<section>-<n>). A paid provider:--dry-runfirst and show the user itsestimate; the job'susagereports what it charged. - Takes: 3–6, more for short or expressive lines (T10 §3).
- A take whose rate is far from the voice's measured rate (video-recap flags beyond about ±30 %, T10 §3) has likely dropped, repeated or invented words: check it first.
- Style or emotion directives: compare with a neutral take of the same text: +25 % duration "took effect", < 5 % "not applied" (jianshuo, T10 §3).
- Unplaced takes stay in
voiceover/generated; place them withvoice place, nevermedia import(that loses the voice text and the AI provenance).
4. Check every kept take
voice check --item ITEM (or --media MEDIA --text "…", or --items all). The model misreads, drops or repeats
words, mostly at the start of a line. Read words and extra, not only similarity: a repeated word barely
moves it. --min-similarity only for a pass/fail flag (one kit gates at 0.92 for Chinese, T10 §3); your call. Recognition also mishears some regional accents
(s→x, final n→ng): count only errors a listener would hear. Fix by rewording or a re-take.
5. Fit to picture
Fix in order of naturalness (T10 §4, jianshuo ladder):
- Shorten or reword the text, then re-take.
- Provider rate, when the voice
supportsRate(jianshuo slows −12…−15 % before stretching, T10 §3). - Stretch with pitch kept:
voice fit --item ITEM --to-frame F --min-ratio MIN --max-ratio MAX, bounds yours. Ranges seen: slowing to 0.82–0.95 (floors 0.82 jianshuo, 0.85 digitalsamba; imperceptible above ~0.92); speeding up to about 1.1 and only after rewriting failed. How much goes unheard varies with the voice's timbre and the music masking it (T10 §3). - Change the text more, with the user's consent (it changes the captions).
Silence at a line end is often better than a stretched voice. Ranges seen: tail after the last word 0.1–0.5 s, longer before a cut or reveal; gaps between sentences 0.2–0.8 s, up to 1–3 s after a key line (T10 §3).
- Never over real speech. Keep a gap from real voices (0.3 s worked in our edits); set the project's
review.voiceoverMarginSecondssoreview runchecks it. - Give each voiceover section b-roll longer than the line: a too-short clip made the voiceover run into the next spoken cut.
- Captions come from your text, timed by the take (
bc:captions-text). Level: against the music, not one number (bc:audio-mix).
6. Re-take one line
voice speak --replace ITEM --takes 1 (same text), or voice speak "Reworded line", pick, then voice place
TAKE --replace ITEM. The item keeps its place; captions are re-timed. Check it, and fit again if its length
changed.
7. Dubbing and localisation
- Transcribe the original (
media transcribe) and measure both rates: the original speaker (speech rate --media ID) and the target voice. - Translate per cue, keeping cue boundaries at sentence ends. Languages differ in length (Mandarin takes 60–80 % of the time Spanish does, jianshuo, T10 §2), so size each cue from the target voice's measured rate.
- Sample one cue first: the most performance-sensitive one, not the first. Get the user's yes on voice and pace before batching (OpenMontage, T10 §2).
- Per cue, fit ladder: shorten the text → re-take →
voice fitwithin bounds → move the cue (timeline move) into nearby silence. Tell the user which cues were shortened (it changes the meaning) and which moved. - Keep the original audio as a bed under the dub, not muted: jianshuo keeps it at 0.15–0.25 linear
(≈ −16…−12 dB, T10 §3); set it with
volumeDband check withbc:audio-mix. - Check every cue (
voice check), then re-time captions from the takes.
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.

