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\hf

Reference

SettingDefaultMeaning
NOVA_TTSpyttsx3xtts for the cloned voice, pyttsx3 for a Windows voice. If XTTS can't load, N.O.V.A falls back to pyttsx3
NOVA_VOICE_SAMPLEset it explicitlyPath to the reference WAV used by XTTS. Relative paths start from the project root
NOVA_SPEED1.0Speaking tempo for XTTS. About 1.1 to 1.3 sounds natural. Pitch is unchanged
NOVA_SEMITONES0Pitch shift applied after generation. Positive raises, negative lowers. Stay within about 3
NOVA_VOICEsystem defaultWindows voice for the pyttsx3 engine, matched on any part of the name, such as Hazel
NOVA_TTS_DEVICEautomaticcuda or cpu for XTTS. Left unset, it uses the GPU when one is available
TTS_HOMEOS defaultWhere XTTS model files are downloaded (about 2 GB). Use an absolute path
HF_HOMEOS defaultWhere 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.