№ 0103GitHub★ Pick
Tarquin: StackChan robot butler on Muse Spark
Custom firmware and a Go server that turn an M5Stack StackChan into Tarquin, a voice-driven robot butler with wake word, face tracking and on-device speech, using Muse Spark 1.3 via the Meta Model API as its brain.
# Otter-chan / Tarquin Custom firmware and server for the **M5Stack StackChan** (CoreS3, ESP32-S3) that turns it into *Tarquin*: a Victorian butler with a dry wit, a British male voice, a camera that follows you, and a bridge to your Grok bots. ``` StackChan (firmware/) ── WiFi/WebSocket ──► Tarquin server (server/, Go) ──► Muse Spark 1.3 (Meta Model API) mic → VAD → PCM ├─ parakeet-server (STT, ggml) ◄── Grok bots (REST, bearer) speaker ◄ TTS PCM └─ otter-vox (Audio8 TTS, ggml) camera → motion + face assist servos, LEDs, face on screen ``` No Python at runtime. Speech runs on CPU via ggml (parakeet.cpp for STT, otter-vox for TTS). ## Features - **Side button**: click = open mic until you stop talking; click again = close mic; double-click = hard mute (wake word off); hold = sleep / wake. The bottom button is the hardware reset line and cannot be intercepted by software (it reboots), so sleep lives on the side button hold and on `/api/sleep`. - **Wake word "tarquin"** (hands-free, on-device): a microWakeWord streaming model trained here (`tools/wakeword/`) runs on the ESP32-S3 via tflite-micro, ~1 % CPU, no network. Falls back to shipping short clips for server-side matching if no model is compiled in. - **Butler**: Muse Spark 1.3 (contributor tier by default) with tools: message bots, read bot status, take and look at a photo (multimodal), timers, notes/memory, gestures, lights, volume, sleep, tracking. - **TTS**: piper by default (native, ~25× real time on CPU, British male voices `en_GB-alan-medium` / `en_GB-northern_english_male-medium`), or `OTTER_TTS_ENGINE=vox` for the Audio8 zero-shot "tarquin" clone (needs a strong GPU to be quick). Sentence streaming starts speech while the model is still writing. - **Screen**: animated robot face (blinks, gaze follows you, mouth syncs to speech, expressions from the LLM) plus live cards for each Grok bot's activity (coding cursor, browsing globe, thinking dots…). - **Tracking**: camera motion centroid on-device + server face detection (pure Go, pigo) → head follows you; returns home when you leave. - **Fun**: head-touch tap = happy nod, swipe = volume, hold = hearts; shake it = "I am not a cocktail"; screen tap = wink, hold = IP/battery; idle fidgets; LED patterns per state; dance gesture; timers spoken aloud.



ChatForm
Tgmlabs