We configured a custom speech analytics topic to detect the keyword ‘cancellation’, but it is returning zero results despite hundreds of calls where customers explicitly say the word.
We also use Bold360 for chat, and the text analytics engine detects ‘cancellation’ flawlessly in chat transcripts. Why would the voice analytics miss an exact keyword match that the text engine catches?
The voice analytics engine does not perform a simple text search against the transcription.
Please be aware of the following:
- Phonetic Matching: The speech engine matches against a phonetic model, not a dictionary lookup. If the word ‘cancellation’ is spoken with an accent or mumbled, the acoustic model may not reach the confidence threshold.
- Confidence Score: Topics require a minimum confidence score of 0.6 by default. You can lower this in the topic configuration, but it will increase false positives.
- Channel Isolation: Ensure your recording policy is set to Dual Channel. Mixed recordings make it harder for the engine to isolate the customer’s voice.
This is exactly the same issue I encounter when building NLU intents for chatbots.
The acoustic model works like a probabilistic slot filler - it doesn’t look for the exact character string ‘cancellation’. It looks for the audio waveform pattern that statistically correlates with that phoneme sequence. If the caller says ‘cancel-AY-shun’ versus ‘CAN-sel-ay-shun’, the model may only match one pronunciation variant.
Try adding phonetic variants as additional keywords in your topic definition.
From a deployment perspective, check if your speech analytics program is actually enabled for the queue.
I once customized a Web Messaging widget for a client and assumed that enabling Speech & Text Analytics at the org level would cover all media types. It doesn’t. You have to explicitly assign the analytics program to each individual queue or flow in the admin console.
I tried to write a Python script to pull the speech analytics results via the API, but I’m getting empty responses.
# My code - sorry if this is wrong
result = api.get_speechandtextanalytics_topics()
print(result)
# Returns: {'entities': [], 'page_count': 0}
I think I might be using the wrong endpoint? Sorry for the basic question, but are topics and programs different things in the API?
Yes, topics and programs are distinct objects.
You create Topics (the keyword definitions), then bundle them into a Program, then assign the Program to queues. In our APAC deployment, we discovered that programs assigned to queues in the Sydney region took up to 24 hours to start processing. The analytics pipeline appears to have a regional processing lag that isn’t documented anywhere.