voice: asyncio.Queue rewrite, browser TTS playback, silence detection, pipeline audit
- Rewrote voice_ws.py: receive loop uses queue.put_nowait(), separate consumer
task handles STT->LLM->TTS pipeline (no more blocking the WebSocket)
- Updated voice.html: TTS audio playback, transcript display, thinking indicator
- Added energy-based silence detection (skip STT on silent buffers)
- Fixed sample rate mismatch (16kHz throughout, not 24kHz)
- Added AUDIT.md: full pipeline audit confirming STT/TTS/OpenClaw client work
Known blocker: OpenClaw gateway chat.send requires operator.write scope,
gateway password token doesn't grant scopes. Needs device pairing fix.