Profiles
Manage multiple timing and delivery configurations for different use cases.
What are Profiles?
Profiles let you define named sets of pacing, delivery, and timing settings that can be switched at render time. They're useful for keeping different timing tolerances for tutorials vs marketing videos, or different delivery instructions for different products.
Note: Voice and model are not per-profile. They live under providers.tts at the top of the config. If you need different voices for different content, maintain separate config files and pass them with --config, or override the voice via the DEMOVOICE_PROVIDERS_TTS_VOICE environment variable.
Defining Profiles
Add profiles to your demovoice.yaml:
profile: default # Active profile
providers:
tts:
provider: openai
model: gpt-4o-mini-tts
voice: alloy
profiles:
default:
pace: original
emotion: neutral
preserve_timing: true
max_segment_stretch: 1.12
max_segment_compress: 0.88
max_tempo_delta: 0.05
max_forced_tempo: 1.3
tutorial:
pace: slow
emotion: friendly
voice_instructions: "Speak clearly and patiently, as if teaching a beginner."
preserve_timing: true
max_segment_stretch: 1.20
max_segment_compress: 0.90
marketing:
pace: original
emotion: excited
voice_instructions: "Sound enthusiastic and energetic."
preserve_timing: true
max_segment_stretch: 1.08
max_segment_compress: 0.88Profile Options
See Configuration for the full list of profile fields and their defaults. Commonly tuned ones:
| Option | Description |
|---|---|
| pace | Suggested speaking pace passed to the TTS model. |
| emotion | Suggested emotional tone passed to the TTS model. |
| voice_instructions | Freeform instructions to steer delivery. |
| preserve_timing | Match original segment durations. |
| max_segment_stretch | Max stretch factor for timing alignment. |
| max_segment_compress | Max compress factor for timing alignment. |
| max_forced_tempo | Worst-case tempo fallback ceiling. |
| rewrite_max_retries | How many minimal text-fit retries to attempt before falling back to tempo adjustment. |
| segment_concurrency | Parallel TTS generation per render. |
Using Profiles
Select a profile when rendering:
# Use default profile
demovoice render demo.mp4 --output demo.demovoice.mp4
# Use the tutorial profile
demovoice render demo.mp4 --profile tutorial --output demo.demovoice.mp4
# Use the marketing profile
demovoice render demo.mp4 --profile marketing --output demo.demovoice.mp4Setting the Default Profile
Change the default profile in your config or via environment variable:
# In demovoice.yaml
profile: tutorial
# Or via environment variable
export DEMOVOICE_PROFILE=tutorialTip: Use --preview-duration 20swhen iterating on a profile's timing settings — it renders only the first 20 seconds so you can compare voice choices and tolerances quickly.