Nerminal is a lightweight offline voice assistant written in Python.It listens for the wake phrase "hey nerminal", then executes simple system commands like opening a web browser. The project uses the Vosk speech recognition engine to convert microphone audio into text and trigger commands locally. No internet connection is required.
Important
- Offline speech recognition (Vosk)
- Wake phrase activation ("hey nerminal")
- Local quantized LLM integration
- Text-to-speech responses
- Simple command execution system
- Open applications via voice commands
- Fuzzy wake-word detection (tolerates STT mistakes)
- Cross-platform support (Linux & Windows)
- Lightweight and efficient Python implementation
- Fully offline capable
Speak the wake phrase:
hey nerminal
Then give command:
open firefox
Ask something conversational:
what is a black hole
Nerminal will respond using the local LLM and speak the answer.
├── library
│ ├── __init__.py
│ ├── llm.py
│ ├── stt.py
│ └── tts.py
├── main.py
├── model
│ ├── mosaicml-mpt-7b-instruct-Q4_K_M.gguf
│ ├── piper
│ │ └── hfc_female
│ │ ├── en_US-hfc_female-medium.onnx
│ │ └── en_US-hfc_female-medium.onnx.json
│ └── vosk-model-en-us-0.42-gigaspeech
├── nerminal.py
├── pyproject.toml
├── README.md
├── requirements.txt
└── uv.lock
Nerminal requires three offline models.
for Windows user download latest espeak-ng from here
To install precompiled package of eSpeak NG on Linux, use standard package manager of your distribution. (Probably is very high, eSpeak NG will be included in package repository).
E.g. for Debian-like distribution (e.g. Ubuntu, Mint, etc.) execute command:
sudo apt-get install espeak-ng
For RedHat-like distribution (e.g. CentOS, Fedora, etc.) execute command:
sudo yum install espeak-ng
For ArchLinux-like distribution (e.g. SteamOS, EndeavourOS, etc.) execute command:
sudo pacman -S espeak-ng
Download from here & Extract it into:
model/vosk-model-en-us-0.42-gigaspeech
Download from rhasspy/piper-voices huggingface repo
Example voice used in this project:
model/piper/hfc_female/
Download the quantized GGUF model from maddes8cht/mosaicml-mpt-7b-instruct-gguf huggingface repo Place it inside:
model/
Nerminal uses uv to manage the Python environment and dependencies. Install it with:
pip install uv
or on Linux/macOS:
curl -Ls https://astral.sh/uv/install.sh | sh
git clone https://github.com/lemonadeforlife/nerminal.git
cd nerminal
This will automatically create a virtual environment and install all dependencies defined in pyproject.toml.
uv sync
Start the assistant with:
uv run main.pyOnce running, say the wake phrase:
hey nerminal
- More voice commands
- Application launcher
- Plugin system for custom commands
- Improved wake-word detection
- GUI interface
- Implement small scaled qunatized LLM
- Better conversation memory
- Smarter command routing (LLM + rules)
- More system integrations
- Performance improvements for low-power machines
