# EVS Mumble Bridge Single-device UDP-to-Mumble bridge. ## Purpose This service receives PCM16LE mono audio over UDP from one EVS client and forwards it as a dedicated Mumble user. Deploy one container per EVS client so every device appears as its own Mumble user. ## Required ENV - `MUMBLE_HOST`: Mumble server host/IP - `MUMBLE_PORT`: default `64738` - `MUMBLE_USERNAME`: username for this EVS client (example: `EVS-esp32-evs-1`) - `MUMBLE_PASSWORD`: optional - `UDP_LISTEN_PORT`: UDP port this client will stream to ## Optional ENV - `DEVICE_ID`: label for logs (default `esp32-evs-1`) - `MUMBLE_CHANNEL`: move bot to channel name after connect - nested path is supported: `KHNM/EVS` - `MUMBLE_CHANNEL_ID`: move bot by numeric channel ID (takes precedence over `MUMBLE_CHANNEL`) - `MUMBLE_CONNECT_TIMEOUT_SEC`: wait time for ready state (default `30`) - `MUMBLE_CONNECT_STRICT`: `true|false` (default `false`) - `false`: continue even if `is_ready()` does not become true in time - `true`: fail and reconnect on timeout - `INPUT_SAMPLE_RATE`: default `16000` - `MUMBLE_SAMPLE_RATE`: default `48000` - `MUMBLE_FRAME_MS`: default `20` - `MUMBLE_AUDIO_GAIN`: default `1.0` ## Example docker compose service ```yaml services: evs-mumble-esp32-1: image: git.khnm-zimmerling.de/kai/evs-mumble-bridge:latest container_name: evs-mumble-esp32-1 restart: unless-stopped ports: - "5004:5004/udp" environment: DEVICE_ID: "esp32-evs-1" UDP_LISTEN_HOST: "0.0.0.0" UDP_LISTEN_PORT: "5004" INPUT_SAMPLE_RATE: "16000" MUMBLE_HOST: "10.100.3.50" MUMBLE_PORT: "64738" MUMBLE_USERNAME: "EVS-esp32-evs-1" MUMBLE_PASSWORD: "" MUMBLE_CHANNEL: "Bots" ```