Claude Skill MartBrowse skillsQuick linesLearn by videoTerminal guideWhat is a Skill?
Back to list

Video Voiceover TTS Synthesizer

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

Image & VideoIntermediate52997AI score 7/10Last updated: Sep 21, 2026

What it does

  • Reads narration.json (each entry with start, end, narration) and synthesizes one WAV per segment.
  • Dynamically adapts speaking rate and loudness so each clip fits its output-timeline window.
  • Produces tts_segments/*.wav and tts_meta.json with engine info, audio paths, timings, pause_after_ms, and partial/failure records.
  • Supports MiMo TTS (default mimo-v2.5-tts), Fish Audio (s2.1-pro-free), or an explicitly selected self-hosted IndexTTS endpoint.
  • Strict cache rules: reuses a segment only when text, TTS settings, and WAV size/mtime all match, so edits regenerate only affected segments.
  • --preserve-approved-text blocks silent truncation of approved scripts and fails with per-segment evidence instead.

Who it's for

  • Recap/commentary video creators automating narration in a scripted pipeline.
  • Teams that already hold MiMo or Fish Audio API keys.
  • Dubbing workflows needing deterministic lint/review gates before voice cloning.

Examples

  1. python3 scripts/voiceover.py --work-dir work --narration work/narration.json to batch-generate all narration clips.
  2. Set TTS_PROVIDER=fish-audio with FISH_API_KEY to fall back to Fish Audio voices when no MiMo key exists.
  3. Run a locked, approved script with --preserve-approved-text so overlong lines fail loudly with timing evidence rather than being auto-shortened.

· · · 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 Claude 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 in your working directory.
  2. Clone the repo: 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/
  5. Make sure Python 3 and audio tooling (e.g. ffmpeg) are installed.
  6. Export your provider credentials: export MIMO_API_KEY=... or export TTS_PROVIDER=fish-audio; export FISH_API_KEY=...
  7. Restart Claude Code and ask it to "generate voiceover from this narration.json" to trigger the skill.