Implements a bidirectional Mumble voice bridge so Alexander and Timmy can have voice conversations during co-play sessions, with audio piped to the stream. Changes: - src/integrations/mumble/bridge.py — MumbleBridge class with: - Connect/disconnect lifecycle (graceful degradation when pymumble-py3 absent) - speak(text) — converts Timmy's TTS output to PCM and sends to Mumble - send_audio(pcm) — raw 16-bit 48 kHz mono PCM transmit - push_to_talk() context manager for PTT mode - VAD mode (voice activity detection with configurable RMS threshold) - on_audio callbacks for audio received from Alexander's mic - Pure-Python resampling / stereo-to-mono (no audioop, Python 3.13+ compat) - Piper TTS → pyttsx3 TTS fallback chain - src/config.py — 9 new Mumble settings (host, port, user, password, channel, audio_mode, vad_threshold, silence_ms, enabled) - pyproject.toml — pymumble-py3 optional dep + mumble extras group - docker-compose.yml — mumblevoip/mumble-server under mumble profile (ports 64738 TCP+UDP; start with: docker compose --profile mumble up) - tests/integrations/test_mumble_bridge.py — 39 unit tests - src/integrations/CLAUDE.md — document mumble module Fixes #858 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
484 B
484 B
integrations/ — Module Guide
External platform bridges. All are optional dependencies.
Structure
chat_bridge/— Vendor-agnostic chat platform abstraction (Discord impl)telegram_bot/— Telegram bot bridgeshortcuts/— iOS Siri Shortcuts API metadatavoice/— Local NLU intent detection (regex-based, no cloud)mumble/— Mumble voice bridge (bidirectional audio: Timmy TTS ↔ Alexander mic)
Testing
pytest tests/integrations/ -q