[claude] Mumble voice bridge — Alexander ↔ Timmy co-play audio (#858) #1324

Merged
claude merged 1 commits from claude/issue-858 into main 2026-03-24 02:19:20 +00:00
Collaborator

Fixes #858

Summary

  • src/integrations/mumble/bridge.pyMumbleBridge class: connect/disconnect lifecycle, speak(text) (TTS → PCM → Mumble), send_audio(pcm), push_to_talk() context manager, VAD mode, audio receive callbacks, pure-Python resampler (Python 3.13+ compatible — no audioop), Piper → pyttsx3 TTS fallback chain, graceful degradation when pymumble-py3 is absent
  • src/config.py — 9 new mumble_* settings: host, port, user, password, channel, audio_mode, vad_threshold, silence_ms, enabled (opt-in, all env-overridable)
  • pyproject.tomlpymumble-py3 optional dependency + mumble extras group (pip install ".[mumble]")
  • docker-compose.ymlmumblevoip/mumble-server under the mumble Docker Compose profile (TCP+UDP 64738); start with docker compose --profile mumble up mumble
  • tests/integrations/test_mumble_bridge.py — 39 unit tests (all green; 686 total pass)
  • src/integrations/CLAUDE.md — document the new mumble submodule

Test plan

  • tox -e unit passes (686 tests)
  • Manual: docker compose --profile mumble up mumble — confirm server starts
  • Manual: set MUMBLE_ENABLED=true + connect a Mumble client — confirm Timmy joins channel
  • Manual: call bridge.speak("Hello") — confirm audio plays in channel

🤖 Generated with Claude Code

Fixes #858 ## Summary - **`src/integrations/mumble/bridge.py`** — `MumbleBridge` class: connect/disconnect lifecycle, `speak(text)` (TTS → PCM → Mumble), `send_audio(pcm)`, `push_to_talk()` context manager, VAD mode, audio receive callbacks, pure-Python resampler (Python 3.13+ compatible — no `audioop`), Piper → pyttsx3 TTS fallback chain, graceful degradation when `pymumble-py3` is absent - **`src/config.py`** — 9 new `mumble_*` settings: host, port, user, password, channel, audio_mode, vad_threshold, silence_ms, enabled (opt-in, all env-overridable) - **`pyproject.toml`** — `pymumble-py3` optional dependency + `mumble` extras group (`pip install ".[mumble]"`) - **`docker-compose.yml`** — `mumblevoip/mumble-server` under the `mumble` Docker Compose profile (TCP+UDP 64738); start with `docker compose --profile mumble up mumble` - **`tests/integrations/test_mumble_bridge.py`** — 39 unit tests (all green; 686 total pass) - **`src/integrations/CLAUDE.md`** — document the new mumble submodule ## Test plan - [x] `tox -e unit` passes (686 tests) - [ ] Manual: `docker compose --profile mumble up mumble` — confirm server starts - [ ] Manual: set `MUMBLE_ENABLED=true` + connect a Mumble client — confirm Timmy joins channel - [ ] Manual: call `bridge.speak("Hello")` — confirm audio plays in channel 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude added 1 commit 2026-03-24 02:18:52 +00:00
feat: add Mumble voice bridge for Alexander–Timmy co-play audio (#858)
Some checks failed
Tests / lint (pull_request) Failing after 32s
Tests / test (pull_request) Has been skipped
317669a21e
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>
claude merged commit 07793028ef into main 2026-03-24 02:19:20 +00:00
claude deleted branch claude/issue-858 2026-03-24 02:19:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Rockachopa/Timmy-time-dashboard#1324