Before you start: create your Nova folder

Put everything inside one folder in your Documents, like: C:\Users\YourName\Documents\Nova Desktop\

You can create this folder in Windows (right-click → New folder) or using Command Prompt:

cd %USERPROFILE%\Documents mkdir "Nova Desktop"
Your Nova folder should contain: nova_cli.py, face_tracking_0.3.py, and an animations folder. (These come from the download pack.)

1) Install Python

Install Python 3.10 (64-bit) (recommended for best compatibility).

Verify in Command Prompt:

python --version pip --version

If python doesn’t work, try py instead:

py -3.10 --version

2) Install required libraries

These cover nova_cli (speech + LLM + audio) and face tracking (camera + tracking + UDP).


Core (Nova CLI)

pip install numpy sounddevice simpleaudio ollama faster-whisper pygrabber

Face tracking (RealSense + tracking)

pip install opencv-python mediapipe pyrealsense2

Common extras

pip install requests

If you’re using a RealSense camera, you may also need Intel’s RealSense drivers installed on Windows.

3) Install / run Ollama

Install Ollama for Windows and confirm it runs.

Requires Windows 10 or later.

ollama --version ollama pull nova-phi4-mini ollama list ollama run nova-phi4-mini
Verify the model name in your script matches what you pulled (example: nova-phi4-mini). If your model name is different, update MODEL_NAME in your Python scripts.

Nova Modelfile (required for “Nova” behaviour + animations)

Nova uses a custom Modelfile so Ollama responds in Nova’s format (including animation/emotion tags). You’ll find the Modelfile in your download pack.

Copy the file named Modelfile into your Windows home folder (your user directory): C:\Users\YourName\Modelfile (same as %USERPROFILE%\Modelfile).

Then create the Nova model from that file:

cd %USERPROFILE% ollama create nova-phi4-mini -f Modelfile
After that, ollama run nova-phi4-mini should behave like Nova, and your scripts can use MODEL_NAME = "nova-phi4-mini" for the correct responses.
Modelfile errors? Make sure the file is named exactly Modelfile (no .txt), and re-run the create command.

4) Install Piper (TTS) (Windows)

Piper is Nova’s text-to-speech engine. nova_cli.py expects Piper in these exact locations by default:

This means you don’t need to add Piper to PATH — the script calls it by full path.


A) Create the Piper folders (Command Prompt)

mkdir C:\piper mkdir C:\piper\models

B) Download Piper (zip) + extract to C:\piper\

Download the Windows release zip from the official Piper releases page and extract it into: C:\piper\

After extracting, you should have piper.exe directly inside C:\piper\. If the zip extracts an extra folder layer, move the contents so that piper.exe sits directly in C:\piper\.


C) Test Piper (Command Prompt)

C:\piper\piper.exe --help

D) Download a voice model (put it in C:\piper\models\)

Piper needs a voice. Download both files for a voice: .onnx and the matching .onnx.json, and put them in: C:\piper\models\

Example: if you choose en_GB-cori-high, you’ll typically download: en_GB-cori-high.onnx and en_GB-cori-high.onnx.json and place both into C:\piper\models\.


E) Generate a test WAV

Replace the voice filename with the one you downloaded:

echo Hello, I am Nova. | C:\piper\piper.exe --model "C:\piper\models\en_GB-cori-high.onnx" --output_file "C:\piper\test.wav"

F) Confirm nova_cli.py matches your chosen voice

In nova_cli.py, the Piper command looks like this. Make sure the --model path matches the voice you picked:

command = ( f'echo {safe_text} | ' f'"C:\\piper\\piper.exe" ' f'--model "C:\\piper\\models\\en_GB-cori-high.onnx" ' f'--output_file "{wav_path}"' )

If you picked a different voice, change en_GB-cori-high.onnx to your chosen filename. Also make sure the matching .onnx.json file is in the same folder as the .onnx.

Piper errors? Confirm C:\piper\piper.exe exists and your voice .onnx + .onnx.json are inside C:\piper\models\.

5) Audio setup (mic + speaker)

6) RealSense + face tracking setup (Version 1)

Your nova_cli.py launches face tracking automatically. If you moved files/folders, update: FACE_TRACKING_SCRIPT = r"...\\face_tracking_0.3.py"

7) Networking / UDP (Nova servo boards)

ipconfig

If you need to change board IPs, update these in nova_cli.py: ARM_IP, TORSO_IP, and ports.

When the ESP32 successfully connects to your router, the little white status LED will flash on and off.

8) Run Nova

From your Nova folder:

cd "%USERPROFILE%\Documents\Nova Desktop" python nova_cli.py
Your Nova folder should contain: nova_cli.py, face_tracking_0.3.py, and an animations folder.

If you stored Nova somewhere else, update the paths inside nova_cli.py, especially: ANIM_DIR and FACE_TRACKING_SCRIPT.

Trouble?