Skip to main content
Connic
BuildBeta

Connic Voice

Connic Voice integrates native voice models with the familiar Connic agent configuration.

Last updated

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

agents/voice-assistant.yaml
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: true

Deploy 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.

agents/voice-assistant.yaml
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
FieldTypeStatusDescription
voicestringOptionalVoice ID accepted by the selected provider. Omit to use its default voice.
languagestringOptionalPreferred 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_modelstringOptionalOpenAI 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.
greetingstringOptionalOpening greeting requested from the model. Omit to let the user speak first.
thinking_soundbooleanOptionalPlay a quiet repeating tone during tool waits or provider-reported background work. Pauses while the user or agent speaks.Default: true
hang_up_allowedbooleanOptionalAllow 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_detectionobjectOptionalControl detection of when the user has finished speaking.
silence_msintegerOptionalSilence duration in milliseconds before ending the user's turn. Must be greater than zero. Omit to use the provider default.
interruptionsobjectOptionalControl whether user speech interrupts the spoken response. Interruptions are enabled when this object is omitted.
enabledbooleanRequiredWhether the user can interrupt the agent. Required when interruptions is present.
idle_timeout_secondsintegerOptionalEnd 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

ProviderModels
OpenAIOpenAI Realtime models (e.g. openai/gpt-realtime)
Azure OpenAIOpenAI Realtime models on Azure (e.g. azure/gpt-realtime-2.1)
Google GeminiGemini native audio models (e.g. gemini/gemini-3.1-flash-live-preview)
Google Vertex AIGemini 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:

agents/voice-assistant.yaml
voice_config:
  hang_up_allowed: false

Current 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.