The voice loop echoed the recognised text. Wire the real brain: the Discord voice-turn now runs STT -> ClaudeBrain.respond (with rolling conversation history) -> TTS, so the bot actually thinks and answers. --voice-server builds the brain by default (WSAI_BRAIN=claude, WSAI_BRAIN_MODEL overridable) and gracefully falls back to echo if anthropic/Claude auth is unavailable. A brain error speaks a short apology instead of killing the loop. Verified end-to-end: an utterance wav returns X-Heard plus a distinct Claude X-Reply and a synthesised reply wav on device=cuda. 12 tests pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
30 KiB
30 KiB