OpenAI voice provider

Copy Markdown View Source

Parlora.Providers.OpenAI connects to gpt-live-1 over WebSocket with client backend delegation. The application supplies credentials explicitly:

provider: {Parlora.Providers.OpenAI,
  api_key: key,
  voice: "marin"}

The adapter supports mono PCM16LE at 24 kHz and G.711 μ-law at 8 kHz. Session instructions and history are supplied through Parlora.start_session/1. The supported model is gpt-live-1; other OpenAI model IDs are rejected.

Voice selection

The default named voice is "marin". Use a different named voice, such as voice: "cedar", or a saved custom voice:

provider: {Parlora.Providers.OpenAI,
  api_key: key,
  voice: %{id: saved_voice_id}}

%{"id" => saved_voice_id} is also accepted. A custom voice map contains only id, with a nonempty string value. The provider validates project access to the voice; Parlora does not substitute a named voice if the selection is rejected.

Create and store the voice in your application or OpenAI's voice Playground. Voice creation is separate from session startup. For voices generated from prompts, include the original description in the session's instructions. Start a new session to change voice. Output recovery preserves the selected voice and instructions.

Audio and context delivery

The provider has a two-second receive reservoir with a three-second local residence limit. start_session/1 applies these defaults in the pipeline's format. This storage absorbs bursts of generated audio; it does not add a two-second startup wait. Channel playback buffering is configured separately.

Context acknowledgments confirm provider acceptance, not speech or playback. The command_ack_timeout_ms: option defaults to 30,000 ms. If a pending command remains unacknowledged, the provider fails and closes; uncertain commands are not automatically replayed. This timeout does not apply to ordinary caller silence.

Output overflow or stale generated audio can trigger bounded replacement of the voice transport while retaining the caller channel and backend work. The caller may need to repeat speech during that interval. See output recovery for application behavior and failure handling.

Credentials and diagnostics

Load the key in your host's runtime configuration and pass api_key: explicitly. An opt-in diagnostic_sink: pid receives bounded reports about provider connection closure. These reports can include caller audio and text. It is disabled by default; keep that receiver and its data private.