Voice listener that transcribes microphone input and talks to OpenClaw through the Gateway, using a dedicated session-id.
openclawinstalled and configured- Gateway running (
openclaw gateway startor foregroundopenclaw gateway run) - Microphone available
cd ~/chat_gateway
uv run voice_listener.py --list
uv run voice_listener.pycd ~/chat_gateway
source ~/.zshrc
uv run voice_listener.py --device 6 --session-id voice-albert-001--device 6 is the pulse input device (usually the most stable choice).
By default, replies are spoken locally via ~/.local/bin/tts (Xiaoxiao voice).
During TTS playback, press Space in the terminal to stop playback immediately.
# Disable local playback
uv run voice_listener.py --device 6 --no-tts
# Use another TTS command path
uv run voice_listener.py --device 6 --tts-command ~/.local/bin/xiaoxiao-tts
# Increase anti-echo cooldown (if TTS still gets re-captured)
uv run voice_listener.py --device 6 --post-tts-cooldown 2.0uv run voice_listener.py --session-id voice-albert-001uv run voice_listener.py \
--session-id voice-albert-001 \
--deliver \
--channel telegram \
--target 1115213761uv run voice_listener.py \
--gateway-port 18790 \
--gateway-token "your_gateway_token"- Without
--session-id, the script auto-generates one session per run. - The script prints both your transcript and parsed OpenClaw reply.