CB culture runs on personas: handles, accents, bit characters, and voices that fit the channel vibe. Voice Puppet lets operators perform those voices without a studio chain or a server farm listening to every syllable. You talk normally; the browser transforms your speech locally; keyed transmit carries the persona out to the channel. It is creative tooling embedded in a radio client, not a separate voice app pasted on top.

The problem Cloud voice conversion is easy to demo and hard to trust. Uploading raw speech for every keypress raises latency, privacy questions, and cost at channel scale. Hobbyists want playful voices; serious operators want predictable latency when the floor is hot. A PWA cannot assume GPU servers, unlimited bandwidth, or native plugin ecosystems. Whatever we ship has to run inside mobile memory budgets, survive tab backgrounding, and still feel instant enough for half-duplex conversation.

What GCCR does

  • Local conversion pipeline. Capture → transform → transmit happens on your device. Your raw voice does not need a round trip through our servers to sound different on air.
  • Persona selection. Pick a puppet voice before you key; the UI makes it obvious which character you are transmitting as.
  • Keyed integration. Voice Puppet respects PTT semantics — conversion runs in the speech path you are about to put on channel, not as a disconnected filter toy.
  • Performance guardrails. When the device cannot keep up, the client degrades gracefully rather than freezing the channel or spewing garbled audio.
  • Optional, not mandatory. Plain voice remains the default. Puppet is for operators who opt in to the performance.
Why this is hard in a browser Voice ML in a tab means workers, WASM, shared memory limits, and audio graph glitches on phones that were never designed as inference rigs. Models must load without blocking first key. Inference must stay ahead of real-time speech on mid-tier Android. Bluetooth adds delay on top. GCCR treats voice conversion as a real-time systems problem inside a hobbyist product — not a demo clip on a landing page.