Agent
Custom Transcriber
Bring your own speech-to-text provider when you need a specific language model, an on-prem deployment, or a vendor your compliance team has already approved.
When to bring your own
- Language coverage โ You need a dialect or low-resource language the default transcriber does not handle well.
- Domain vocabulary โ You have a fine-tuned model that already knows your product names and drug or part numbers.
- Data residency โ Audio must stay in a specific region or inside your own cloud account.
- Existing contract โ You are already paying a provider and want one bill.
Configure it
Open Creator โ your agent โ Voice โ Transcriber and switch the provider from Katexs Default to Custom. Store the credential under Settings โ API Keys โ never in the prompt.
{
"transcriber": {
"provider": "custom",
"url": "wss://stt.example.com/v1/stream",
"auth": { "type": "bearer", "secret_ref": "MY_STT_KEY" },
"language": "en-US",
"model": "nova-3-medical",
"sample_rate": 16000,
"encoding": "linear16",
"interim_results": true,
"endpointing_ms": 250,
"keywords": ["Katexs", "Invisalign", "periodontal"]
}
}Protocol requirements
| Requirement | Value |
|---|---|
| Transport | WebSocket, binary audio frames upstream, JSON transcripts downstream. |
| Audio format | 16-bit PCM, mono, 8kHz or 16kHz. |
| Frame size | 20ms recommended; anything over 100ms adds audible latency. |
| Interim results | Required for barge-in. Without them the agent cannot be interrupted naturally. |
| Final marker | Each utterance must emit is_final: true with a stable transcript. |
| Handshake timeout | Must accept the connection within 2s or the call falls back. |
Expected message shape
{
"type": "transcript",
"is_final": true,
"text": "I'd like to book a cleaning next Tuesday",
"confidence": 0.94,
"start_ms": 1240,
"end_ms": 3980
}Tuning endpointing
Endpointing decides when the caller has stopped talking. Too aggressive and the agent interrupts; too slow and it feels sluggish. Start at 250ms for transactional calls and 400ms for calls where people think out loud.
Fallback behavior
If the custom stream fails to connect or drops mid-call, the agent falls back to the default transcriber automatically and the call is tagged transcriber_fallback. Persistent fallbacks show up in Observability โ Monitoring.
