N.O.V.A v2 / documentation
Settings (.env)
Every voice and engine option in config/.env, with defaults and what each one does.
The settings file
N.O.V.A reads its voice and engine settings from config/.env. Relative paths are resolved from the project root, so they work wherever you launch it from. Settings are read once at startup, so restart N.O.V.A after changing them.
NOVA_TTS=xtts
NOVA_VOICE_SAMPLE=ai-models/voices/my-voice.wav
NOVA_SPEED=1.2
NOVA_SEMITONES=0
NOVA_VOICE=Hazel
TTS_HOME=D:\Coding\N.O.V.A\ai-models\tts
HF_HOME=D:\Coding\N.O.V.A\ai-models\hfReference
| Setting | Default | Meaning |
|---|---|---|
NOVA_TTS | pyttsx3 | xtts for the cloned voice, pyttsx3 for a Windows voice. If XTTS can't load, N.O.V.A falls back to pyttsx3 |
NOVA_VOICE_SAMPLE | set it explicitly | Path to the reference WAV used by XTTS. Relative paths start from the project root |
NOVA_SPEED | 1.0 | Speaking tempo for XTTS. About 1.1 to 1.3 sounds natural. Pitch is unchanged |
NOVA_SEMITONES | 0 | Pitch shift applied after generation. Positive raises, negative lowers. Stay within about 3 |
NOVA_VOICE | system default | Windows voice for the pyttsx3 engine, matched on any part of the name, such as Hazel |
NOVA_TTS_DEVICE | automatic | cuda or cpu for XTTS. Left unset, it uses the GPU when one is available |
TTS_HOME | OS default | Where XTTS model files are downloaded (about 2 GB). Use an absolute path |
HF_HOME | OS default | Where the Hugging Face cache lives. Use an absolute path |
GPU memory
XTTS and a local language model draw on the same GPU memory. On a card with about 4 GB, running both can cause out-of-memory errors or slow replies. Two ways out:
- Set
NOVA_TTS_DEVICE=cpu. Speech is slower, but the GPU stays free for the language model - Use a smaller language model through Ollama
Tip
Use absolute paths for TTS_HOME and HF_HOME, and point them at the drive with the most free space. Model files are large and won't be re-downloaded once they are there.