Skip to content

keryx voice

Generate voiceover narration with the ElevenLabs voice clone — a faithful port of the blog gen-vo.py (single-line mode). Voice settings default to the reel theme's voice block unless overridden by flags.

keryx voice --text "the line to narrate" [--out vo.mp3]
            [--theme <reel-theme>] [--voice <id>] [--stability x] [--similarity y]
Flag Meaning Default
--text the line to narrate (required)
--out output MP3 path vo.mp3
--theme reel theme supplying the voice defaults the configured reel default
--voice override the clone voice id theme voice.id
--stability override stability theme voice.stability
--similarity override similarity theme voice.similarity

The credential comes from the ELEVENLABS_API_TOKEN environment variable (never config). Add --output json for machine-readable output.

keryx voice --text "I had an AI audit my own code. Overnight." --out vo/01.mp3

Notes

  • Provider-selected via providers.voice (default ElevenLabs) — see Providers.
  • Take management (keryx voice select) and batch narration from a storyboard land with the authoring loop (Phase 1.5).
  • Flag overrides apply only when non-zero/non-empty; otherwise the theme default is used.

Take management

keryx voice select <line> <take> --workspace <slug>

Generate candidate takes into a workspace, then promote one:

keryx voice --workspace <slug> --line <N> --takes <K>   # K candidate takes for line N → vo/takes/
keryx voice select <line> <take> --workspace <slug>      # promote one → vo/NN.mp3 (R-WS-1)

--takes reads line N's vo (or text) from the workspace storyboard and the reel theme's voice settings (plus any per-card voice override). Generation is bounded (max 25) and each call is timed.