AI Skill MartBrowse skillsPromptsProgramsLearnWhat is a Skill?
← Back to list

Video Voiceover (video-voiceover)

Turns a timestamped narration.json into per-segment TTS audio that fits each time window, plus placement metadata for downstream mixing.

Image & VideoAdvanced★ 595⑂ 109AI score 8/10Last updated: Oct 21, 2026

What it does

  • Reads narration.json (each segment has start, end, narration) and synthesizes one WAV per segment.
  • Dynamically adapts speaking rate so speech fits its time window, and normalizes loudness.
  • Writes tts_segments/*.wav and tts_meta.json with engine, voice, placement fields, and a failure list.
  • Supports MiMo TTS (default), Fish Audio, or an explicitly configured self-hosted IndexTTS endpoint; auto picks MiMo then Fish based on available keys.
  • Deterministic caching by text, TTS settings and WAV size/mtime, so only affected segments are regenerated.
  • --preserve-approved-text protects an approved script from silent truncation and fails loudly with evidence when speech overflows the window.

Who it's for

  • Creators producing recap/summary videos who want automated narration.
  • Editors who must land voice lines exactly on an already-cut timeline.
  • Developers using MiMo TTS or Fish Audio who want a reliable TTS stage in a pipeline.

Examples

  1. python3 scripts/voiceover.py --work-dir work --narration work/narration.json — synthesize all segments with the default MiMo engine.
  2. TTS_PROVIDER=fish-audio FISH_API_KEY=... python3 scripts/voiceover.py --work-dir work — switch to Fish Audio with a custom reference voice ID.
  3. Add --preserve-approved-text for a locked script, then inspect the failure report for segments that exceed their window.

· · · Install guide · · ·

Try it now, no install

Paste this into Claude to use the skill without installing anything.

Read the instructions in this file and follow them to help me:
https://raw.githubusercontent.com/zenstory-ai/video-recap-skills/HEAD/skills/video-voiceover/SKILL.md

What I want: (describe your task here)

If Claude can't open the link, open it yourself and paste the contents instead.

↓ If it works for you, download the ZIP below and install it. Then it runs on its own — no pasting each time.

Install in the Claude app (no terminal)
  1. Download the ZIP with the button below.
  2. In Claude, open Settings → Capabilities and turn on 'Code execution and file creation'. (one time)
  3. Go to Customize → Skills → + → 'Upload a skill' and upload the ZIP.
↓ Download ZIP
Install in Claude Code

Let Claude do it — paste this into Claude Code

Install the skill I found on AI Skill Mart.
Copy the skills/video-voiceover folder from the GitHub repo zenstory-ai/video-recap-skills into my ~/.claude/skills/video-voiceover/.
When it's done, tell me in one line what this skill can do.

Install with a command instead

git clone https://github.com/zenstory-ai/video-recap-skills.git && mkdir -p ~/.claude/skills && cp -r video-recap-skills/skills/video-voiceover ~/.claude/skills/

⚠ This is a third-party skill. Check the source repository before installing.

  1. Open a terminal and go to your working folder.
  2. Run git clone https://github.com/zenstory-ai/video-recap-skills.git.
  3. Create the skills folder: mkdir -p ~/.claude/skills.
  4. Copy the skill: cp -r video-recap-skills/skills/video-voiceover ~/.claude/skills/ (copying the sibling pipeline skills is recommended).
  5. Install Python 3 and the repo dependencies (ffmpeg, etc.).
  6. Export credentials: export MIMO_API_KEY=..., or for Fish Audio export TTS_PROVIDER=fish-audio and export FISH_API_KEY=....
  7. Restart Claude Code and ask something like "voice over this narration.json" to trigger the skill.