Skip to content

Commit da6a176

Browse files
committed
docs: add learning on Vapi-branded voices as a provider abstraction
1 parent 407ee76 commit da6a176

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

docs/learnings/assistants.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,36 @@ Despite being a configurable field, this setting currently has **no effect** on
2828

2929
## Voice Configuration
3030

31+
### Vapi-branded voices (`provider: 'vapi'`) need only a name
32+
33+
**What you might expect:** Like other voice providers, you'd need to specify a model, a long opaque voice ID, and possibly tune stability/similarity/speed knobs.
34+
35+
**What actually happens:** Vapi-branded voices are an abstraction. The complete config is just two fields:
36+
37+
```yaml
38+
voice:
39+
provider: vapi
40+
voiceId: Elliot # or any other Vapi voice name (Kylie, Clara, Spencer, etc.)
41+
```
42+
43+
No model selection, no opaque voice ID, no chunk plan tuning required. The platform handles routing and automatically activates failover if the primary path errors mid-call.
44+
45+
**Recommendation:** When you don't have a hard requirement for a specific third-party voice, prefer a Vapi-branded voice. You get:
46+
47+
- A simpler, more readable yaml (one human-readable name)
48+
- Automatic resilience — calls keep flowing through provider-side blips
49+
- Forward-compatibility — voice quality improvements ship without yaml changes
50+
51+
**Optional knobs** (all default to sensible values):
52+
53+
| Field | Range | Notes |
54+
|---|---|---|
55+
| `speed` | 0.25–2 (default 1) | Effective range is clamped narrower than the input range; extreme values may not perceptibly differ from the limits |
56+
| `language` | ISO 639-1 codes | Defaults to `en-US` |
57+
| `pronunciationDictionary` | array of `{ pronunciationDictId, versionId? }` | Same dictionary IDs you'd attach to a direct-provider voice (see [Pronunciation dictionaries](#pronunciation-dictionaries-tts-level)) |
58+
59+
**Gotcha:** voice names are case-sensitive — `voiceId: 'elliot'` (lowercase) returns a 400 at config validation. The full list of valid names is visible in the Vapi dashboard's voice picker.
60+
3161
### `chunkPlan.enabled: false` can reduce latency
3262

3363
Disabling the chunk plan skips text formatting/preprocessing before TTS. This gives you raw LLM text (potentially with markdown or formatting artifacts) but lower latency.

0 commit comments

Comments
 (0)