Voice Tools

Call Experience Features

Fine-tune how your voice agent sounds and behaves — pace control, silence fillers, backchanneling, greeting variants, pronunciation, business hours, and more.

Call Experience Features

These features control how your voice agent sounds, reacts, and behaves during calls. They're configured via voice settings and inject behavior through the system prompt — no explicit LLM tool calls needed.


Dynamic Speed / Pace Control

Adjusts the agent's speaking speed based on conversation context. When explaining complex topics, the agent slows down. For simple confirmations, it speeds up.

{
  "dynamicPaceEnabled": true
}

The system prompt is injected with provider-specific pacing instructions.


Silence Fillers

When the agent is processing a response (thinking), it speaks natural filler phrases to avoid awkward silence.

{
  "silenceFillersEnabled": true,
  "silenceFillerPhrases": [
    "Let me think about that...",
    "One moment please...",
    "Let me check that for you...",
    "Bear with me..."
  ]
}
SettingTypeDefaultDescription
silenceFillersEnabledbooleanfalseEnable silence fillers
silenceFillerPhrasesstring[]default setCustom filler phrases

Instant Filler Words

Short, natural sounds like "hmm", "aha", or "acchha" that play instantly when the user stops speaking — before the AI starts generating a response. This eliminates the perceived gap between the user finishing and the agent replying, creating a human-like conversational rhythm.

Unlike silence fillers (which are LLM-driven phrases for tool calls), instant filler words are fired at the audio level and don't wait for the LLM.

{
  "fillerWordsEnabled": true,
  "fillerWords": ["hmm", "aha", "um", "okay"],
  "fillerWordsMinChars": 10
}
SettingTypeDefaultDescription
fillerWordsEnabledbooleanfalseEnable instant filler words
fillerWordsstring[]language defaultsCustom filler words. If empty, uses language-appropriate defaults
fillerWordsMinCharsnumber10Minimum user transcript length to trigger a filler. Short replies ("yes", "no") skip fillers

Language defaults:

LanguageDefault Fillers
Hindi"hmm", "acchha", "haan", "theek hai", "ji"
English"hmm", "uh huh", "um", "right", "okay"
Other"hmm", "aha", "um", "okay"

How it works:

  1. User finishes speaking → STT produces final transcript
  2. If transcript is longer than fillerWordsMinChars, a random filler word is spoken immediately via TTS
  3. The filler is interruptible — once the LLM response is ready, it seamlessly takes over
  4. The filler uses the same voice as the agent, so it sounds natural

When to use:

  • Support agents that handle complex queries (user asks a long question → agent says "hmm" while thinking)
  • Sales calls where natural flow matters
  • Indian language agents where conversational fillers are culturally expected

When to skip:

  • IVR-style bots with short yes/no interactions
  • Agents that already respond very quickly (the filler may overlap with the real response)

Backchanneling

The agent interjects brief acknowledgment cues ("uh huh", "got it", "I see") while the caller is speaking, showing active listening.

{
  "backchannelingEnabled": true,
  "backchannelingFrequency": "medium",
  "backchannelingPhrases": ["uh huh", "got it", "I see", "okay", "right"]
}
SettingTypeDefaultDescription
backchannelingEnabledbooleanfalseEnable active listening cues
backchannelingFrequencystringmediumFrequency: low, medium, high
backchannelingPhrasesstring[]default setCustom acknowledgment phrases

Greeting Variants (A/B Testing)

Randomly select from multiple greeting messages for A/B testing.

{
  "greetingVariantsEnabled": true,
  "greetingVariants": [
    "Hi there! How can I help you today?",
    "Hello! Thanks for calling. What can I do for you?",
    "Welcome! I'm here to help. What's on your mind?"
  ]
}

A random variant is selected at the start of each call.


Pronunciation Dictionary

Map words or acronyms to their phonetic pronunciation for the TTS engine.

{
  "pronunciationDictEnabled": true,
  "pronunciationDictionary": {
    "HIPAA": "hip-uh",
    "SQL": "sequel",
    "GIF": "jiff",
    "thinnestAI": "thinnest A I"
  }
}

Before speaking, the agent replaces dictionary keys with their pronunciation values.


Business Hours

Configure operating hours and after-hours behavior. When a call comes in outside business hours, the agent can play a custom greeting, switch to an after-hours prompt, or end the call.

{
  "businessHoursEnabled": true,
  "businessHours": {
    "timezone": "America/New_York",
    "schedule": {
      "monday": { "enabled": true, "open": "09:00", "close": "17:00" },
      "tuesday": { "enabled": true, "open": "09:00", "close": "17:00" },
      "wednesday": { "enabled": true, "open": "09:00", "close": "17:00" },
      "thursday": { "enabled": true, "open": "09:00", "close": "17:00" },
      "friday": { "enabled": true, "open": "09:00", "close": "17:00" },
      "saturday": { "enabled": false },
      "sunday": { "enabled": false }
    }
  },
  "afterHoursGreeting": "Thank you for calling. Our office is currently closed.",
  "afterHoursPrompt": "Take a message and let the caller know we'll return their call on the next business day.",
  "afterHoursAction": "continue"
}
After Hours ActionBehavior
continueUse the after-hours prompt and continue the call
end_callPlay the after-hours greeting and hang up

Holiday Calendar

Extend business hours with holiday support. When today matches a holiday date, the agent uses after-hours behavior.

{
  "holidayCalendarEnabled": true,
  "holidays": [
    { "date": "2026-12-25", "name": "Christmas Day", "recurring": true },
    { "date": "2026-01-01", "name": "New Year's Day", "recurring": true },
    { "date": "2026-07-04", "name": "Independence Day", "recurring": true },
    { "date": "2026-11-26", "name": "Thanksgiving", "recurring": false }
  ]
}

Set recurring: true for holidays that repeat every year (matches month/day only).


Barge-In Phrases (Smart Interruption)

Configure specific phrases that immediately interrupt the agent, even if interruption threshold isn't met.

{
  "bargeInEnabled": true,
  "bargeInPhrases": ["stop", "wait", "hold on", "actually", "one second"]
}

Call Whisper / Agent Coaching

A supervisor can send text messages to the agent during a live call. The agent sees the coaching message but the caller doesn't hear it.

{
  "callWhisperEnabled": true,
  "whisperDisplayMode": "overlay"
}

Conversational Memory (Cross-Call)

Remember context from previous calls with the same phone number. The agent receives a summary of past interactions at the start of each new call.

{
  "conversationalMemoryEnabled": true,
  "memoryMaxPreviousCalls": 5,
  "memoryContextTokenBudget": 500
}
SettingTypeDefaultDescription
conversationalMemoryEnabledbooleanfalseEnable cross-call memory
memoryMaxPreviousCallsinteger5Max previous calls to include
memoryContextTokenBudgetinteger500Max tokens for memory context

Real-Time Translation

The agent automatically detects the caller's language and responds in kind.

{
  "realTimeTranslationEnabled": true,
  "translationPrimaryLanguage": "English",
  "translationTargetLanguages": ["Spanish", "French", "German", "Hindi"]
}

Unlike Multilingual Auto-Switch, this doesn't switch the TTS voice — it relies on the LLM's multilingual capabilities.


Voice Cloning

Override the TTS voice with a cloned voice ID for a personalized experience.

{
  "voiceCloningEnabled": true,
  "clonedVoiceId": "your-cloned-voice-id",
  "clonedVoiceProvider": "elevenlabs"
}

Emotion-Aware TTS

Inject provider-specific emotion instructions into the system prompt so the agent adjusts its vocal delivery based on conversation context.

{
  "emotionEnabled": true
}

Works with Cartesia, ElevenLabs, and other providers that support SSML or emotion tags.


Example — Create Agent with Call Experience Features

curl -X POST https://api.thinnest.ai/v1/agents \
  -H "Authorization: Bearer $THINNESTAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Premium Support Agent",
    "model": "gpt-4o",
    "instructions": "You are a premium support agent. Be warm, professional, and helpful.",
    "voiceEnabled": true,
    "transcriber": { "provider": "deepgram", "model": "nova-2-conversationalai" },
    "voice": { "provider": "deepgram", "voiceId": "aura-2-thalia-en" },
    "dynamicPaceEnabled": true,
    "silenceFillersEnabled": true,
    "silenceFillerPhrases": ["Let me check that...", "One moment please..."],
    "backchannelingEnabled": true,
    "backchannelingFrequency": "medium",
    "greetingVariantsEnabled": true,
    "greetingVariants": [
      "Hi there! How can I help you today?",
      "Hello! Thanks for calling. What can I do for you?"
    ],
    "pronunciationDictEnabled": true,
    "pronunciationDictionary": { "thinnestAI": "thinnest A I", "SQL": "sequel" },
    "businessHoursEnabled": true,
    "businessHours": {
      "timezone": "America/New_York",
      "schedule": {
        "monday": { "enabled": true, "open": "09:00", "close": "17:00" },
        "tuesday": { "enabled": true, "open": "09:00", "close": "17:00" },
        "wednesday": { "enabled": true, "open": "09:00", "close": "17:00" },
        "thursday": { "enabled": true, "open": "09:00", "close": "17:00" },
        "friday": { "enabled": true, "open": "09:00", "close": "17:00" },
        "saturday": { "enabled": false },
        "sunday": { "enabled": false }
      }
    },
    "afterHoursGreeting": "Our office is closed. Please call back during business hours.",
    "afterHoursAction": "end_call",
    "conversationalMemoryEnabled": true,
    "memoryMaxPreviousCalls": 5
  }'

On this page