N.O.V.A v2 / documentation
Stack & Tools
Every component in the prototype, and the reasoning behind picking it.
The stack
| Part | Tool | Why this one |
|---|---|---|
| Language | Python 3.11 | Best ecosystem for audio and ML |
| Mic capture | sounddevice | Simple streaming in small frames |
| System audio | PyAudioWPatch | WASAPI loopback for the other side of calls |
| Wake word | openWakeWord | Free, light, trainable |
| Speech detection | Silero VAD | Finds where a command ends |
| Speech-to-text | faster-whisper | Accurate offline transcription with timestamps |
| Speaker labels | pyannote.audio | Separates multiple remote speakers |
| Local LLM | Ollama — Qwen2.5 7B / Llama 3.2 3B | Simple local API, JSON tool output |
| Voice reply | Piper | Fast, natural offline voices |
| Cloned voice (trial) | XTTS-v2 (coqui-tts) | Speaks in a voice cloned from a recording; Piper is the fallback if GPU memory is tight |
| Storage | SQLite + WAV | One-file database, easy to search later |
| Interface | pystray + FastAPI | Tray status and a local transcript viewer |
Hardware guidance
16 GB RAM is comfortable — a 7B model at 4-bit uses roughly 5 GB. Without a GPU, use the 3B model and Whisper's small variant to keep replies fast.