Single-page static app that opens a WebRTC voice session against a
self-hosted speech-to-speech load balancer. POSTs `<lb>/session`,
rewrites the returned `connect_url` from `wss://` to `https://`, and
POSTs an SDP offer with `Content-Type: application/sdp`. Audio
streams over the media tracks; events on the `oai-events` data channel
using the OpenAI Realtime JSON protocol.
- vanilla JS + JSDoc, no build step, no node_modules, no proxy
- 9 Qwen3-TTS voices (Aiden, Ryan, Dylan, Eric, Ono_Anna, Serena, Sohee, Uncle_Fu, Vivian)
- forked from `reachy_mini_minimal_conversation`, stripped of all
robot-specific bits (SDK, head wobbler, antennas, move player,
robot picker, OAuth HF, transport pill)
Backend requirement: the compute serving `<lb>` must run the
`feat/webrtc-transport` branch of huggingface/speech-to-speech, which
defines `POST /v1/realtime` with `application/sdp` (lines 360-452 of
`websocket_router.py`). On `main` the same path is WS-only and replies
404 to the SDP POST.
C…