> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voice.wixzel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Voice engines

> Compose a pipeline from named models, or hand the whole turn to one.

A `voice` configuration takes one of two shapes. Never both.

## Composed

Three named `provider/model` pairs, wired together for you:

```json theme={null}
"voice": {
  "stt": { "model": "deepgram/nova-3", "language": "en-US" },
  "llm": { "model": "openrouter/gpt-4o-mini", "temperature": 0.7 },
  "tts": { "model": "elevenlabs/eleven_turbo_v2_5", "voice": "21m00Tcm4TlvDq8ikWAM" }
}
```

All three stages are required. Defaulting a missing one would silently bill you
for a model you never chose.

## Realtime

One model that does the whole conversation — audio in, audio out, with the
reasoning inside the provider:

```json theme={null}
"voice": {
  "realtime": { "model": "google/gemini-live", "voice": "Charon" }
}
```

<Note>
  These two shapes are mutually exclusive. A realtime model has no separate
  speech-to-text step to name, so asking you to supply one would mean inventing
  model ids that do not exist.
</Note>

## What a call costs

Prices below are for a typical five-minute call, including the flat \$0.012 per
connected minute orchestration fee. Telephony is not included and not marked up.

| Engine           | Pipeline                            | Per minute |
| ---------------- | ----------------------------------- | ---------- |
| `classic`        | Deepgram + GPT-4o-mini + ElevenLabs | \$0.055    |
| `sarvam`         | Sarvam, Indian languages end to end | \$0.042    |
| `gemini_live`    | Gemini Live native audio            | \$0.044    |
| `deepgram_agent` | Deepgram Voice Agent                | \$0.151    |

## Discovering what is available

Call [`GET /v1/engines`](/api-reference/engines) rather than hardcoding model ids.
An engine whose provider is degraded disappears from that list **before** your
calls start failing, which turns a runtime outage into a visible capability
change.

## Turn taking

```json theme={null}
"turn_taking": {
  "interrupt_sensitivity": "normal",
  "silence_wait_ms": 500
}
```

`interrupt_sensitivity` governs how readily the agent stops talking when your
caller speaks. `high` makes it deferential and easy to talk over; `low` makes it
finish its sentence. Short acknowledgements like "yes" or "mm-hm" never interrupt
at any setting — they are queued and answered when the agent finishes.
