Discover and explore top open-source AI tools and projects—updated daily.
justLVVoice agent interface for smart speakers
Top 99.3% on SourcePulse
Onju Voice v2 (OnjuClaw) enables multiple Google Home speakers to connect to a Mac Mini for AI agent interaction. It provides an async server pipeline and hardware designs for custom PCBs or the M5Stack ATOM Echo dev kit, facilitating multi-device AI experiences.
How It Works
The system connects ESP32 devices to a Mac server pipeline using mu-law upstream for low-latency ASR and Opus downstream for high-quality, compressed TTS audio over WiFi. It supports pluggable ASR, LLM (OpenAI-compatible), and TTS backends. The "agentic" backend delegates session management and tool execution to an OpenClaw gateway for centralized, multi-device orchestration. The pipeline features sentence-level TTS streaming and agentic tool-calling loops for responsiveness. Server-side VAD with configurable thresholds enables VAD-aware interruption for immediate playback control.
Quick Start & Requirements
Installation: Clone repo, set up Python environment (uv venv, uv pip install -e .), install macOS system libraries (brew install opus portaudio). Configure pipeline/config.yaml. Prerequisites: Python 3.x, arduino-cli (for ./flash.sh firmware flashing), API keys (LLM/TTS). Supported hardware: custom Onjuino PCBs (ESP32-S3) or M5Stack ATOM Echo (ESP32-PICO-D4). Hardware schematics are in hardware/.
Highlighted Details
./flash.sh automates firmware compilation, WiFi credential generation (macOS Keychain), and upload.Maintenance & Community
No specific details regarding maintainers, community channels, or project roadmap were found in the provided README text.
Licensing & Compatibility
Released under the MIT license, permissive for commercial use and closed-source linking.
Limitations & Caveats
Flashing script/WiFi credential generation are macOS-specific. Local TTS quality is noted as potentially lower. OpenClaw agentic backend may buffer the first agent turn until tool execution completes, mitigated by a stall classifier.
3 months ago
Inactive
openinterpreter
vocodedev