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 either in Windows (right-click → New folder) or using Command Prompt:

cd %USERPROFILE%\Documents mkdir "Nova Desktop"
Your Nova folder should contain: nova_app_launcher.py, nova_cli.py, face_tracking.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 (camera + tracking)

pip install opencv-python mediapipe

Common extras

pip install requests
Version 2 uses a USB camera (not RealSense), so you don’t need pyrealsense2 or Intel drivers.

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 run the create command again.

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 (common), just 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, just 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) USB camera + face tracking setup (Version 2)

The Nova App Launcher starts face tracking automatically. If you moved files/folders, update the face tracking path in nova_app_launcher.py / nova_cli.py (depending on your pack version), for example: FACE_TRACKING_SCRIPT = r"...\\face_tracking.py"
If your camera index is wrong (common): update the camera selection inside your face tracking script (usually cv2.VideoCapture(0) → try 1 or 2).
Nova App Launcher GUI — screenshot 1
Nova App Launcher — thumbnail 1
Nova App Launcher — thumbnail 2
Nova App Launcher — thumbnail 3

Click the big image or any thumbnail to expand (3 screenshots). (Add images here if you want.)

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 (App Launcher)

From your Nova folder:

cd "%USERPROFILE%\Documents\Nova Desktop" python nova_app_launcher.py
The App Launcher opens a simple GUI. Press Start to begin: it launches face tracking + the Nova voice/AI script together. Press Stop to end the session cleanly.
Your Nova folder should contain: nova_app_launcher.py, nova_cli.py, face_tracking.py, and an animations folder.

If you stored Nova somewhere else, update the paths inside nova_app_launcher.py / nova_cli.py, especially: ANIM_DIR and any face tracking script path.

Trouble?