Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ™οΈ NovaVoice β€” Model-Agnostic AI Smart Speaker

The open AI speaker that works with ANY model. Switch between OpenAI, Anthropic, Gemini, Llama (local), or any future model with one click.

✨ Features

  • πŸ”Œ Model-Agnostic β€” Works with OpenAI, Anthropic, Groq, Ollama, Hermes Agent, OpenRouter
  • πŸ”’ Privacy-First β€” Local wake word, physical mic mute, optional cloud
  • 🎀 Voice Control β€” Wake word β†’ Speak β†’ AI responds naturally
  • 🏠 Smart Home β€” MQTT + Home Assistant integration
  • 🌐 Web Dashboard β€” Configure providers, view stats, chat via browser
  • πŸ”§ Open Platform β€” Open-source firmware, community skills

πŸš€ Quick Start

Prerequisites

  • macOS (tested on Apple Silicon)
  • Python 3.9+
  • Microphone + Speaker/Headset

Setup

cd ~/novavoice

# Install dependencies
python3 run.py setup

# Or manually:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Configure

Edit config/default.yaml:

llm:
  default_provider: "openrouter"  # or openai, anthropic, groq, ollama
  
  providers:
    openrouter:
      api_key: "your-key-here"    # Get free key at openrouter.ai
      model: "google/gemma-4-31b-it:free"

Or set environment variables:

export OPENROUTER_API_KEY="your-key"
export OPENAI_API_KEY="your-key"
export GROQ_API_KEY="your-key"

Run

Text Mode (testing without mic)

python3 run.py text

Voice Mode (with mic)

python3 run.py voice

Web Dashboard

cd ~/novavoice
source .venv/bin/activate
uvicorn web.server:app --host 0.0.0.0 --port 8301

Then open http://localhost:8301

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Microphone  │────▢│  Whisper STT │────▢│  LLM Router  β”‚
β”‚  (sounddevice)β”‚     β”‚ (faster-whisper)β”‚   β”‚  (any API)   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                                  β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚   Speaker    │◀────│   Edge TTS   β”‚β—€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚              β”‚     β”‚  (or Piper)  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🎯 Voice Commands

Command Action
"Switch to OpenAI" Switch LLM provider
"Use Claude" Switch to Anthropic
"Use local model" Switch to Ollama
"Clear history" Reset conversation
"Status" Show current provider & stats
"List providers" Show available providers

πŸ“ Project Structure

novavoice/
β”œβ”€β”€ main.py                 # Main application + voice loop
β”œβ”€β”€ run.py                  # Launcher script
β”œβ”€β”€ requirements.txt        # Dependencies
β”œβ”€β”€ config/
β”‚   └── default.yaml        # Configuration
β”œβ”€β”€ audio/
β”‚   β”œβ”€β”€ capture.py          # Microphone input (sounddevice)
β”‚   └── playback.py         # Speaker output
β”œβ”€β”€ stt/
β”‚   └── whisper_stt.py      # Speech-to-Text (faster-whisper)
β”œβ”€β”€ llm/
β”‚   └── router.py           # Model-agnostic LLM router
β”œβ”€β”€ tts/
β”‚   └── edge_tts_engine.py  # Text-to-Speech (Edge TTS)
β”œβ”€β”€ wake/
β”‚   └── wake_word.py        # Wake word detection
β”œβ”€β”€ web/
β”‚   β”œβ”€β”€ server.py           # Web dashboard (FastAPI)
β”‚   └── templates/
β”‚       └── dashboard.html  # Dashboard UI
└── PROJECT_PLAN.md         # Full project plan

πŸ”Œ Supported Providers

Provider Models Free?
OpenAI GPT-4o, GPT-4o-mini Paid
Anthropic Claude Sonnet, Haiku Paid
Groq Llama 3.3 70B, Mixtral Free tier
Ollama Any local model Free
Hermes Hermes Agent Free
OpenRouter 100+ models Free tier

πŸ› οΈ Hardware (Coming Soon)

See PROJECT_PLAN.md for full hardware design:

  • ESP32-S3 based
  • 2x MEMS microphone array
  • 3W speaker with I2S amp
  • WS2812B LED ring
  • Target BOM: <$70 at 100 units

πŸ“„ License

MIT License β€” Open source, use however you want.

About

πŸŽ™οΈ Model-Agnostic AI Smart Speaker β€” Works with OpenAI, Anthropic, Groq, Ollama, Hermes Agent

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages