Playground/openclaw-hybrid-assistant/README.md
A lightweight Linux voice channel for OpenClaw. Audio is processed locally for voice activity detection, speech recognition, and speech synthesis; requests are sent to OpenClaw over WebSocket. No local LLM is included.
microphone -> VAD -> STT -> OpenClaw WebSocket -> TTS -> speaker
The playground uses the public RunAnywhere component APIs with the Sherpa backend:
Listening is continuous and gated by VAD.
Wake-word activation is not supported: RunAnywhere Commons does not ship an executable wake-word backend.
curl, tar, and bzip2sox to generate the acknowledgment soundFrom the repository root:
bash sdk/runanywhere-commons/scripts/linux/download-sherpa-onnx.sh
bash sdk/runanywhere-commons/scripts/build-linux.sh
cd Playground/openclaw-hybrid-assistant
./scripts/download-models.sh
./build.sh
Alternative model downloads:
./scripts/download-models.sh --whisper
./scripts/download-models.sh --kokoro
./scripts/download-models.sh --whisper --kokoro
Models are stored under ~/.local/share/runanywhere/Models/Sherpa/. The acknowledgment sound is stored under ~/.local/share/runanywhere/Models/ONNX/earcon/.
./build/openclaw-assistant
./build/openclaw-assistant --openclaw-url ws://openclaw-host:8082
Available options:
--list-devices
--input <device>
--output <device>
--openclaw-url <url>
--device-id <id>
--debug-vad
--debug-stt
--debug-audio
--help
Use Ctrl+C to stop the assistant.
The build produces two test executables:
./build/test-components --run-all
./build/test-integration --run-all
Component test options:
--test-vad-stt <wav>
--test-full <wav>
--test-noise <wav>
--run-all
Integration test options:
--test-tts-queue
--test-chime
--test-interruption
--test-sanitization
--test-tts
--test-openclaw-flow [--delay <seconds>]
--run-all
See tests/README.md for the test matrix.
scripts/openclaw-voice.service is an example user service. Update its repository path and gateway URL before installation.
mkdir -p ~/.config/systemd/user
cp scripts/openclaw-voice.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now openclaw-voice.service
sdk/runanywhere-commons/dist/linux/lib and the Sherpa library directory to LD_LIBRARY_PATH../scripts/download-models.sh../build/openclaw-assistant --list-devices and select a device with --input.