How setup works
A deployment admin connects Voice once from the Integrations page with an OpenAI API key from a project that has GPT-Live access. We recommend a key separate from any key used for task inference, so voice can be billed and revoked on its own. The setup dialog also lets the admin choose any voice supported by GPT-Live and play a short AI-generated preview before saving. Previews use OpenAI’s speech endpoint, so a restricted key needs the Audio model permission (api.model.audio.request) in addition to GPT-Live access; without it, calls
still work and the dialog says what the key is missing. New and previously unset
connections use Marin, one of OpenAI’s recommended voices. Existing voice
selections stay unchanged.
What to expect
Voice is a credential-only integration. Roomote uses the key on the control plane to open GPT-Live calls and to clean up spoken transcripts; agents receive no tools from it, and the key is not sent to task sandboxes. The browser sends its WebRTC connection offer to Roomote and receives only the negotiated answer. Self-hosted operators can instead setR_VOICE_OPENAI_API_KEY. When both are
present the environment variable is used. Roomote’s general OPENAI_API_KEY
is never used for voice, so enabling OpenAI for task inference does not turn
voice on. An environment-managed key cannot be edited or disconnected on the
Integrations page and uses Marin because it has no stored voice selection,
but a deployment admin can still turn Voice off and back on for the deployment
from the Voice card. A key saved on the Integrations page is kept while
Voice is off.