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:

.demovoice/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.88

Profile Options

See Configuration for the full list of profile fields and their defaults. Commonly tuned ones:

OptionDescription
paceSuggested speaking pace passed to the TTS model.
emotionSuggested emotional tone passed to the TTS model.
voice_instructionsFreeform instructions to steer delivery.
preserve_timingMatch original segment durations.
max_segment_stretchMax stretch factor for timing alignment.
max_segment_compressMax compress factor for timing alignment.
max_forced_tempoWorst-case tempo fallback ceiling.
rewrite_max_retriesHow many minimal text-fit retries to attempt before falling back to tempo adjustment.
segment_concurrencyParallel 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.mp4

Setting 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=tutorial

Tip: 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.