Skip to main content

Python

DeckTalk needs Python 3.12 or later. Its two Python dependencies are Playwright and static-ffmpeg, and you do not need Node. The quickstart installs it with uv, pipx, or pip.

What setup downloads

decktalk setup makes three downloads, once per machine, and decktalk doctor reports on each of them afterwards. On Linux, setup passes --with-deps to Playwright, which also installs Chromium’s system libraries with apt-get. Playwright runs apt-get through sudo, or through su root -c when sudo is missing, and it uses neither when setup runs as root. On a distribution without apt-get this step fails, and setup stops before it downloads ffmpeg and KaTeX. decktalk init copies the cached KaTeX into the project’s deck/katex/, so equations render with no network. When the KaTeX download fails, setup warns and continues, and a project created before KaTeX is cached loads it from a CDN instead. When setup has not run, static-ffmpeg downloads ffmpeg the first time DeckTalk asks for it. An ffmpeg on your PATH is used only when static-ffmpeg cannot provide one, and DECKTALK_FFMPEG and DECKTALK_FFPROBE override both.

The ffmpeg license

DeckTalk is licensed under Apache-2.0. ffmpeg’s own source is licensed under LGPL-2.1-or-later, and the builds that static-ffmpeg downloads are GPL builds that include libx264. The Linux, Windows, and Intel macOS builds are configured with --enable-gpl, --enable-version3, and --enable-libx264, so they are licensed under GPL-3.0-or-later. The Apple silicon macOS build is configured with --enable-gpl and --enable-libx264, so it is licensed under GPL-2.0-or-later. DeckTalk runs ffmpeg as a separate process and does not link against it. To use a build of your own, set DECKTALK_FFMPEG and DECKTALK_FFPROBE to its two executables. THIRD_PARTY_NOTICES.md lists every third-party component and its license.

Accounts

A silent build needs no account and no API key. A voiced build needs an ElevenLabs API key in ELEVENLABS_API_KEY and a voice id in ELEVENLABS_VOICE_ID. Every ElevenLabs plan, including the free plan, can call the API. decktalk soundscape needs the API key and no voice id. The quickstart’s Add your voice step shows where both values go, and the FAQ compares the plans.

What spends credits

Only two parts of DeckTalk call ElevenLabs. The narrate stage calls the text to speech endpoint, and decktalk soundscape calls the sound effects and music endpoints. Each voiced section costs the characters of its whole text, so an edit costs the characters of every section whose text changed, not only those of the changed sentences. decktalk narrate --dry-run prints the text that a run would send, section by section, and decktalk soundscape --dry-run prints every request. Neither makes an API call. A silent build spends nothing, and so do setup, init, doctor, beats, record, measure, check, assemble, verify, shots, status, and runtime.
A silent build after a voiced one empties the narration cache. It writes its placeholder tracks over the voiced mp3 files, so the next voiced build voices every section again and spends credits on all of them. Rebuild one section explains the cache.

Time

Recording runs in real time, one section after another, so a first silent build of the scaffold takes a few minutes. Rebuild one section shows how --only records only the sections that changed.

Next

Your first deck writes one section from scratch in the script, the cues, the project file, and the page, and builds it.