Voice and language
Voice configuration overview
Language configuration
Fillers (natural speech)
Adding a language
Basic configuration
The add_language method configures Text-to-Speech and Speech-to-Text for an agent:
Voice format
The voice parameter uses the format engine.voice:model where model is optional:
Always name the engine. A voice name on its own — "en-US-Neural2-F" — is resolved against a
default engine, and that default can change. Pass the engine in the voice string, or set the
engine parameter alongside a bare voice name:
Available TTS engines
Filler phrases
Add natural pauses and filler words:
Speech fillers: Used during natural conversation pauses
Function fillers: Used while the AI is executing a function
Multi-language support
Set the language code to multi to have speech recognition transcribe whichever of its supported languages the caller speaks. The agent still answers in that entry’s single voice, so choose a voice that can speak the languages you expect. To answer each caller in their own language with a voice per language, use multilingual configuration instead.
For more control over individual languages with custom fillers:
Pronunciation rules
Fix pronunciation of specific words:
Set multiple pronunciations
Voice selection guide
Choosing the right TTS engine and voice significantly impacts caller experience.
Use case recommendations
Choosing an engine
Providers differ in latency, quality, cost, and language coverage. For a comparison of all supported providers and guidance on choosing between them, see Voices and languages — then audition candidate voices with the voice widget on each provider’s page.
Testing and evaluation process
Before selecting a voice for production:
- Create test content with domain-specific terms, company names, and typical phrases
- Test multiple candidates from your shortlisted engines
- Evaluate each voice: Pronunciation accuracy, natural pacing, emotional appropriateness, handling of numbers/dates/prices
- Test with real users if possible — internal team members or beta callers
- Measure latency in your deployment environment
Dynamic voice selection
Change voice based on context:
Language codes
The language code tells speech recognition which language to listen for. By default, SignalWire uses Deepgram’s Nova-3 model, so use a code from Deepgram’s Nova-3 language table, or multi for multi-language support. If you select a different speech recognition engine, use a code that engine supports. See ai.languages for how codes are applied.
The voice is chosen separately. Each provider’s supported languages are listed in Voices and languages.