Connic Voice
Connic Voice integrates native voice models with the familiar Connic agent configuration.
On this page
Native voice models process audio directly and respond with speech. Select one through model and add voice_config for voice, greeting, and conversation settings. Configure prompts and tools as with any other agent.
Configure an agent
version: "1.0"
name: voice-assistant
type: llm
model: openai/gpt-realtime
description: "A helpful voice assistant"
system_prompt: |
Keep replies short and natural. Reply in the user's language.
Before using a tool, briefly say what you are checking,
then call the tool in the same response.
Say goodbye before ending the conversation.
voice_config:
transcription_model: gpt-realtime-whisper
greeting: "Hi! How can I help?"
thinking_sound: trueDeploy the agent, then link a connector that supports voice. An empty voice_config: {} also enables voice with defaults; without a greeting, the user speaks first.
Voice configuration
All settings belong inside voice_config. This example uses an OpenAI voice; choose a voice supported by your model provider. The table lists the defaults when a setting is omitted.
model: openai/gpt-realtime
voice_config:
voice: alloy
language: en
transcription_model: gpt-realtime-whisper
greeting: "Hi! How can I help?"
thinking_sound: true
hang_up_allowed: true
turn_detection:
silence_ms: 500
interruptions:
enabled: true
idle_timeout_seconds: 60| Field | Type | Status | Description |
|---|---|---|---|
| voice | string | Optional | Voice ID accepted by the selected provider. Omit to use its default voice. |
| language | string | Optional | Preferred spoken language, such as en or de-DE. Added to the model instructions and used as a transcription hint where supported; it does not force recognition into that language. |
| transcription_model | string | Optional | OpenAI model name for transcribing user speech, or an existing transcription deployment name in the same Azure resource. Omit to disable user transcription for OpenAI and Azure. Gemini and Vertex AI use native transcription without this setting. |
| greeting | string | Optional | Opening greeting requested from the model. Omit to let the user speak first. |
| thinking_sound | boolean | Optional | Play a quiet repeating tone during tool waits or provider-reported background work. Pauses while the user or agent speaks.Default: true |
| hang_up_allowed | boolean | Optional | Allow the agent to end the conversation itself. A spoken farewell plays in full before the conversation ends. Set false to disable this ability.Default: true |
| turn_detection | object | Optional | Control detection of when the user has finished speaking. |
| silence_ms | integer | Optional | Silence duration in milliseconds before ending the user's turn. Must be greater than zero. Omit to use the provider default. |
| interruptions | object | Optional | Control whether user speech interrupts the spoken response. Interruptions are enabled when this object is omitted. |
| enabled | boolean | Required | Whether the user can interrupt the agent. Required when interruptions is present. |
| idle_timeout_seconds | integer | Optional | End the voice session after this many seconds of conversational inactivity. Tool execution and provider-reported background work keep the session active. Must be greater than zero. Omit for no voice-specific idle timeout; the run timeout still applies. |
Every option is optional, except interruptions.enabled when the interruptions object is present.
Models and providers
| Provider | Models |
|---|---|
| OpenAI | OpenAI Realtime models (e.g. openai/gpt-realtime) |
| Azure OpenAI | OpenAI Realtime models on Azure (e.g. azure/gpt-realtime-2.1) |
| Google Gemini | Gemini native audio models (e.g. gemini/gemini-3.1-flash-live-preview) |
| Google Vertex AI | Gemini native audio models on Vertex AI (e.g. vertex_ai/gemini-live-2.5-flash-native-audio) |
Use openai/, azure/, gemini/, or vertex_ai/ followed by the model or Azure deployment name. The provider checks whether it is available and supports realtime audio. Voice names depend on the provider; omitting voice keeps its default.
Set reasoning_effort on the agent to request a reasoning level. Connic passes the setting to the provider, which rejects unsupported settings or values. Omit it or use auto for the model default. For example, gemini/gemini-3.8-live-extended-thinking supports low, medium, and high.
Tools and conversation flow
Voice agents use the existing tool execution path: Python tools, retrieval, MCP servers, conditional tools, discoverable tools, tool hooks, and delegation. Middleware runs around the whole run.
A short spoken acknowledgement before a tool call helps explain a wait. By default, a quiet repeating tone plays during tool waits or provider-reported background work and pauses while either participant speaks. Set thinking_sound: false to disable it.
The run details show agent speech and, when transcription is enabled, user speech as text. Transcription failures appear there as errors while the conversation continues. The traces show which tools the agent used and how long each step took, along with reasoning summaries when the provider returns them.
Ending a conversation
The agent can end the conversation itself. A spoken farewell plays in full before the conversation ends. The prompt can describe when the agent should end the conversation. To disable this ability:
voice_config:
hang_up_allowed: falseCurrent limitations
Voice requires type: llm and an OpenAI, Azure OpenAI, Google Gemini, or Google Vertex AI model. Managed connic/* voice models are not supported. Input and output guardrails, human approvals, structured output (output_schema or output_schema_dict), fallback_model, and context_compression are rejected for voice agents. Audio reaches the model and user as it streams, so those guardrails cannot inspect it before delivery.
Automated agent tests do not support voice sessions yet. Test the deployed agent in a live conversation.