Microsoft Azure ASR
Utterance Splitting — Speech Split into Multiple Parts
Symptom A continuous user utterance arrives as multiple separate inputs. For example,Hello, I want to check my balance is received as two turns: Hello then I want to check my balance. This causes intent mismatches, loop behavior, or responses to partial input.
Root Cause
Azure Speech uses AzureSegmentationSilenceTimeoutMs to detect end-of-speech. Natural pauses of 300 ms or more between words can trigger a premature commit. The default value is too aggressive for conversational IVR use cases.
Fix
Add a Script node at the start of your Experience Flow:
For more details, refer to Speech Customization
Digit and Number Misinterpretation
Symptom Numbers are misinterpreted by the ASR engine. Common patterns include:- Spoken Hindi numbers such as
ekcombined with 22,000 becoming 1,202,000. - Card numbers with repeated digits being truncated or garbled.
- Confidence scores above threshold (for example, 75.7%) but transcription is incorrect.
Widespread ASR Failure-Outage or Concurrency Breach
Symptom All IVR calls fail simultaneously. The bot responds with the default error message and no speech is recognized across any bots. An Azure region outage typically causes a concurrency limit breach or expired API credentials. Immediate Recovery Steps- Verify the affected Azure region at Azure Status. Confirm whether the issue is a full outage or a concurrency limit breach.
- Switch active calls to the fallback ASR label configured in your Voice Gateway settings.
- If the issue is caused by expired API credentials, update the Azure Speech key in the platform channel configuration and save the changes.
- Place a test call and confirm that speech recognition resumes before you re-enable production traffic.
Always configure fallback ASR/TTS before going to production. Use the same vendor but a different region for optimal compatibility. For vendor-level fallback, configure a secondary vendor (for example, Deepgram as a fallback for Azure).
Microsoft Azure TTS
Mispronounced Words-SSML Phoneme and Say-As Tags
Symptom Azure Neural Voice mispronounces product names, currency amounts, acronyms, or non-English terms. Digits may be read as words — for example,6987 spoken as Che Nau Sath Aath Feet when using a mismatched voice.
Fix
Use SSML tags in your Message nodes:
TTS Reading Newlines from LLM or Agentic Responses
Symptom When using LLM or Agentic app responses in voice flows, the TTS engine reads literal newline characters aloud — saying'backslash n backslash n' instead of pausing. This occurs because LLM outputs contain formatting characters (\n, markdown bold, bullet points) that TTS can’t interpret.
Fix
Add a Script node before the Message node to sanitize the LLM output:
Hindi TTS Failure-Voice-Language Mismatch
Symptom On mid-call language switch to Hindi, TTS throws a'synthAudio requires language' error. Logs show 'language: undefined' and 'voice: undefined'. Digits may be spoken incorrectly when an English voice receives Devanagari numerals.
Root Cause
The voice name and language code don’t match. For example, using language=hi-IN with voice=en-IN-AartiIndicNeural (an English-Indian voice, not a Hindi voice).
Fix
Add a Script node before the first Hindi message node:
The system doesn’t validate voice-language matching during configuration. Manually verify that the
voiceName language prefix matches the ttsLanguage code.Configured Voice Not Applying
Symptom The voice configured in Voice Preferences (for example,hi-IN-SwaraNeural) isn’t applied during live calls. The bot uses the default English voice instead, and no error displays.
Root Cause
TTS initializes at the first message node. If automation or a script runs first, TTS uses defaults before the voice configuration loads.
Resolution Options
Deepgram ASR / TTS
Utterance Splitting — utteranceEndMs Tuning
Symptom A user says a long sentence, but Deepgram commits mid-sentence due to natural pauses. SettingdeepgramUtteranceEndMs to 3000 or 4000 ms results in splits.
Root Cause
deepgramUtteranceEndMs alone is insufficient. It must be paired with deepgramEndpointing to handle micro-pauses within sentences. The endpointing parameter controls Voice Activity Detection (VAD) sensitivity for short gaps; utteranceEndMs controls the final silence window.
Fix
Why smaller
utteranceEndMs works better: endpointing=500 handles micro-pauses within speech. utteranceEndMs=1500 handles the longer gap at the end. Setting utteranceEndMs=3000-4000 delays the final commit but doesn’t fix mid-sentence splits.Digit and RX Number Recognition
Symptom The bot is collecting multi-digit numbers (for example, 5-7 digit prescription or account numbers). Callers pause between digits. The bot splits the utterance or misses digits. Production-Tested ConfigurationGoogle ASR & TTS
16-Digit Card Number — Repeated Digit Failure
Symptom Google ASR fails on sequences with 8 or more consecutive identical digits (for example,509099999999990002). The bot may barge in early. This is a known Google ASR limitation.
Fix
No Credentials for Google
Symptom TTS fails with:'No text-to-speech service credentials for Google with labels: undefined'. This occurs even after setting ttsLabel in the Voice Preferences.
Root Cause
The ttsLabel configured in the Voice Preferences UI doesn’t propagate to the TTS engine at runtime in some configurations. The label must be set using a Script node.
Fix
Add a Script node at the start of your Experience Flow:
Background Streaming-Prompts Not Played
Symptom When using Google TTS with Chirp voices and Background Streaming enabled at the Experience Flow level, follow-up prompts (for example,Is there anything else?) are logged as synthesized successfully, but no audio is delivered to the caller.
Fix Options
Google Chirp voices aren’t compatible with Background Streaming.
Sarvam TTS
TTS Fails on Currency, Commas, Special Characters
Symptom Sarvam TTS fails on messages containing the₹ symbol, commas in Indian number format (3,40,650.23), or mixed punctuation. The Sarvam API doesn’t handle Unicode currency symbols or Indian number formatting natively.
Fix
Pre-process text in a Script node before passing to Sarvam TTS:
Background Streaming — Audio Not Played
Symptom When Background Streaming is enabled at the Experience Flow level with Sarvam TTS, audio synthesis is logged as successful in Interactions, but zero audio plays to the caller. Fix Disable Background Streaming when using Sarvam TTS. Steps: Go to Experience Flow > Edit > Background Streaming > Disabled.Sarvam TTS isn’t compatible with Background Streaming. A platform fix is being tracked. Until resolved, Background Streaming must be disabled for any flow using Sarvam TTS. No configuration workaround is available.
Call Flow — Barge-in, Transfer & Transcription
Aggressive Barge-in — Bot Interrupts User Mid-Speech
Symptom The bot plays filler music in under 3 seconds, interrupting the user’s utterance. TheActionHookDelayProcessor fires too early, especially when there is a language mismatch between TTS text and the voice configuration.
Fix
Transfer Fires Before TTS Message Completes
Symptom Agent transfer fires before the farewell or transfer message finishes playing. The caller hears a partial message before being transferred. Root Cause A direct Agent Transfer node placed after a Message node creates a race condition — the transfer may execute before TTS playback completes. Fix UsequeueCommand: true in a Script node to ensure TTS completes before transfer executes:
The
queueCommand: true parameter instructs the Voice Gateway to wait until current TTS playback is fully complete before executing the transfer. Use this for any action that follows a voice prompt.For additional information, refer to Utility Functions in Voice Gateway
Transcription Not Displaying (Twilio / ASR Timeout)
Symptom The Transcripts tab is empty after completed calls. Diagnosis & FixQuick Reference-All Parameters
All parameters are set usinguserSessionUtils.setCallControlParam('paramName', value).