decktalk.toml. Every path in it is relative to the project
directory. An unknown top-level table fails the load, so a typo cannot silently do
nothing, and a value of the wrong type fails with the table and key named. The file has
two kinds of content. The document tables on this page describe the presentation. The
tuning tables change how DeckTalk renders and are rarely
needed.
decktalk.toml
[project]
[voice]
The voice settings for this presentation. The voice id and the API key are secrets, so
they live in .env as ELEVENLABS_VOICE_ID and ELEVENLABS_API_KEY, or in the
environment.
A change to any of these changes the cache key of every section, so the next build
synthesizes everything again.
[[section]]
Write one table per ## N. section of the script. The order in the file does not
matter, because DeckTalk sorts them by number, and a duplicate number fails the load.
Every script section must have one. A section is either a page or a clip, and a table
with both keys fails.
A missing clip is not an error unless you pass
--strict. A titled slate plays for
slate_seconds in its place, so a project builds before every asset exists.
[transition]
[mix]
The mix is optional. Without this table the video carries narration and clip audio
only. Sound explains how the parts fit together.
[[mix.sfx]]
One table per one-shot effect. Put a sound effect on a cue walks
through one.
[mix.loudnorm]
The targets for the loudness pass, which How it works
describes. The keys are accepted in upper or lower case.
[soundscape]
These tables hold the prompts for decktalk soundscape, which generates sound with
ElevenLabs. Ambience and music write to the ambience and underscore paths named in
[mix]. When [mix] names none, they write to build/sfx/ambience.mp3 and
build/music/underscore.mp3. Each effect writes to build/sfx/<name>.mp3 unless its
out key says otherwise.
[soundscape.ambience]
[soundscape.sfx.<name>]
[soundscape.music]
Tuning tables
Any settings section can be overridden per project with a table of the same name, such as[video] or [record], or per shell with a DECKTALK_<SECTION>_<FIELD> variable.
Configuration lists every field with its default.