Get started
SlideTalk — PDF Slides to Narrated Lecture Video

SlideTalk — PDF Slides to Narrated Lecture Video

Put in a presentation PDF and get a 1920x1080 lecture video mp4 with narration on every slide, plus a chapter list to paste into the YouTube description and an SRT subtitle file. No API key (only an online edge-tts call), and sentence captions, progress badge and crossfades can be turned on or off. Measured: one 5-slide lecture took 73 s (0.6 s extract + 5 s speech + 67 s video assembly, Apple Silicon). For online courses, internal training and product videos without recording.
#Educação#Vídeo#Produtividade
Avaliação
São necessárias mais avaliações
Vendas
0
Como usar
Baixar

hero_en.webp before_after_en.webp

SlideTalk — PDF Slides to Narrated Lecture Video

Your slides are done, but making a video is another story. You talk in front of a mic while
flipping slides, reshoot when you stumble, add subtitles separately, and write chapter timestamps
by hand after watching the video several times. One 20-slide lecture takes half a day of
recording and editing. With SlideTalk you put in one PDF and skip all that; per-slide narration,
captions, chapters and SRT come out in one run.

Pipeline

PDF ──extract.py──▶ slide PNGs + notes.json (draft)
                            │
                  (the agent fills in the narration script)
                            ▼
notes.json (done) ──narrate.py──▶ per-slide mp3 + timing
                            │
                            ▼
                    ──build.py──▶ lecture.mp4 + chapters.txt + lecture.srt

The voice is TTS instead of your own recording, and the agent reads the slide content and writes
the narration script naturally, like a lecture (or uses your existing speaker notes as is).

Actual commands

uv run scripts/extract.py --pdf slides.pdf --out out/
# → fill the narration field in out/notes.json (by the agent, or from speaker notes)
uv run scripts/narrate.py --notes out/notes.json --out out/
uv run scripts/build.py --meta out/narration_meta.json --assets out/ \
  --out out/lecture.mp4 --crossfade 0.4

That is three lines. For 5 slides it took about 73 s measured (0.6 s extract + 5 s speech
synthesis + 67 s video assembly, on Apple Silicon). The finished lecture.mp4 is 1920x1080,
h264/yuv420p, AAC stereo, with loudness set to -16 LUFS (loudnorm 2-pass, re-measured error
0.01 dB).

What's included

Item Contents
scripts/extract.py PDF → slide PNGs (1920x1080, letterboxed) + page text + draft notes.json
scripts/narrate.py notes.json → edge-tts narration mp3 + sentence-level timing (narration_meta.json)
scripts/build.py Slides + narration → mp4 (caption/badge/crossfade options) + chapters.txt + lecture.srt
guides/notes-format.md notes.json schema and narration writing tips
guides/tts-and-licensing.md Commercial use risks of edge-tts, stated openly

Usage examples

1. Internal onboarding material: export the new-hire training PPT to PDF, put it in, and use
the script in the speaker notes as the narration to make a self-paced video.

2. YouTube lecture channel: put in a topic lecture PDF such as "Excel pivot table basics" and
upload with captions burned in. Paste chapters.txt into the description and YouTube builds the
chapter bar automatically.

3. Product intro video: join a sales deck with smooth crossfade transitions and use it as a
short intro video on a landing page.

What you need

  • uv and Homebrew ffmpeg. Both free; just install them.
  • Internet connection: narration speech synthesis (edge-tts) is an online call. No API key or
    sign-up needed.
  • Write a narration script for each slide (the agent can write it for you), or have your existing
    speaker notes ready.
  • edge-tts is not an official Microsoft API; it is an unofficial open-source client that calls a
    browser feature. It is free to use, but for ad-monetized commercial videos we recommend looking
    at the alternatives in guides/tts-and-licensing.md (such as a paid Azure Speech subscription).
  • Do not use it for deepfakes that impersonate real people or make words seem to come from real
    people. This skill was not designed for that.

Recommended for

  • You already have slides and also speaker notes or a draft script
  • You need to produce many YouTube lectures quickly, with chapters and captions
  • Informational content where a non-human voice (even if it sounds like TTS) is fine

Not recommended for

  • When you need rich production such as background music, sound effects or transition animations
    (it does no more than slides + narration)
  • Brand videos that need the tone and intonation of a real human voice
  • Formats where several speakers alternate on one slide (one voice per slide)

FAQ

Q1. Can I put in a PPTX directly?
No, export to PDF first. PowerPoint, Keynote and Google Slides all have "Save as / Download as
PDF," so it is just one step.

Q2. Can I change the voice to a language other than Korean?
Yes, if edge-tts supports the language. Change the voice value in notes.json to a voice for
that language and write the narration script in that language.

Q3. The caption text is too big or too small.
Adjust it with build.py --caption-size. To turn captions off and use only lecture.srt, use
--no-captions.

Q4. Can I use a different voice for each slide?
Yes. Set voice separately in a slide's entry in notes.json and only that slide uses another
voice (for example, a different tone just for question slides).

Q5. Does it work for long decks of 100+ slides?
It runs, but slide file names have two digits (slide_01 to slide_99), so sorting breaks from
100 slides on. extract.py shows a warning; we recommend splitting longer material into several
videos.

Purchase notes

After downloading, unzip the package/ folder and use it as is. SKILL.md guides the whole
procedure, and the three scripts in scripts/ each run directly with uv run. There is no
separate install or build step.

The photos in the example slides are public NASA photos (public domain), and the slides and narration script were written by us as an example.


APIs externas

Microsoft Edge TTS