Hold a key → speak → AI agent reasons with tools → speaks back.
Stack: Parakeet TDT (ONNX, local) → Qwen3-6-27b agent → KittenTTS
python QV.py --loop # hold F9 to record, release to stop, repeats
python QV.py # one shot
python QV.py --hotkey F12 # different hotkey
python QV.py -q "how much RAM do I have" # text input[F9 hold] → [mic] → [Parakeet STT] → [Qwen3 agent + tools] → [KittenTTS] → [speaker]
- STT — Parakeet TDT 0.6B INT8 ONNX, runs fully offline, records at native device rate and resamples to 16kHz
- Agent — Qwen3-6-27b on local GPU via vLLM, agentic loop with 7 tools
- TTS — KittenTTS nano, Bella voice
bash · read_file · write_file · grep · glob · web_search · web_fetch
| File | Run standalone |
|---|---|
stt.py |
python stt.py — hold F9, get transcript |
kivi.py |
python kivi.py "question" |
tts.py |
python tts.py "say this" |
QV.py |
python QV.py --loop |
test_all.py |
python test_all.py |
uv pip install onnxruntime sounddevice scipy pynput openai ddgs scrapling kittenttsParakeet model dir: ~/.local/share/com.pais.handy/models/parakeet-tdt-0.6b-v3-int8/