Narova + ElevenLabs
This skill is an optional external TTS provider for Narova. It owns all
ElevenLabs API details and speaks the generic narova-tts-provider/v1 JSONL
protocol over stdin/stdout. Narova owns sentence caching and every downstream
audio/video stage.
Setup
Install the standalone Narova CLI as described by the
narovaskill, then installnarovaandnarova-elevenlabsas independently selected skills fromammar-hasan/narova.Locate this installed skill from the directory containing this
SKILL.md; call that absolute directory<narova-elevenlabs-skill-dir>.Verify this worker:
bash <narova-elevenlabs-skill-dir>/tool/setup.shSet the key in the environment used to run Narova. Never put it in
reel.config.mjs:export ELEVENLABS_API_KEY="..."Explicitly register this installed worker:
narova providers add \ <narova-elevenlabs-skill-dir>/tool/provider.jsonVerify registration and authentication:
narova providers doctor elevenlabs narova voices list --backend elevenlabs
Read references/configuration.md before writing the voice block. It documents supported provider options, synthesis, errors, security, billing, and removal.
When a brief needs a voice that does not exist yet, use
references/voice-design.md and
tool/design.py to design previews from a description, audition them,
and create the permanent voice — the resulting voice ID slots into the
normal voice block.
Operating rules
- Treat
speakeras an ElevenLabs voice ID, not a display name. - Keep
ELEVENLABS_API_KEYonly in the process environment or a user-managed secret store. - Do not add ElevenLabs packages to Narova's venv or modify Narova's setup.
- Do not copy this worker into the Narova skill. Registration composes the two independently installed skills.
- Voice listing and synthesis are network operations and may be subject to account permissions, rate limits, and charges.
- Do not automatically retry synthesis failures. A response may have been billed even when the connection failed before Narova received it.
- Narova's sentence cache avoids billing again for unchanged sentences. A
change to text, voice ID, language, tempo, gain, provider version, or
providerOptionsinvalidates the relevant cache entry.