Alexander Whitestone
|
317669a21e
|
feat: add Mumble voice bridge for Alexander–Timmy co-play audio (#858)
Tests / lint (pull_request) Failing after 32s
Tests / test (pull_request) Has been skipped
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>
|
2026-03-23 22:18:01 -04:00 |
|