Voice agents demo on a laptop microphone: 48kHz, clean, close-talking. The production path is a phone call — 8kHz, band-limited to roughly 300–3400Hz, compressed by a codec designed in the 1970s, over a network that drops packets.
Word error rates that looked excellent in testing get noticeably worse, and the failures cluster in exactly the places that matter.
What narrowband removes
The fricatives. S, F, TH and their voiced pairs carry most of their energy above 4kHz, which the channel simply does not transmit. That is why “six” and “fix” and “sticks” become genuinely ambiguous on a phone line, and why letter confusions — S versus F, M versus N — are the dominant error class.
Then a lossy codec adds artefacts on top, and packet loss concealment invents plausible audio to fill gaps, which the recogniser dutifully transcribes.
Design the conversation around it
The engineering response is not a better model. It is not asking questions whose answers cannot survive the channel.
Do not ask callers to spell things. Alphanumeric references read aloud over 8kHz audio have an error rate that makes them useless. Look up by phone number, offer to send a link by SMS, or confirm against something you already hold.
If you must take digits, take them in groups, confirm each group, and use the phonetic alphabet for letters. Both of these are what human agents already do on bad lines, and for the same reason.
Confirm what is expensive, not everything
Confirming every field turns a thirty-second call into two minutes and people hang up. Confirm what is costly to get wrong — the date of a booking, the amount of a payment — and let the cheap things through, because a wrongly captured preference is a smaller loss than an abandoned call.
Validate with real recordings
Evaluate on audio from the actual channel: sampled at 8kHz, through the actual codec, with real background noise. A test set of clean laptop recordings will tell you the system is fine, and it will be wrong.
Keep the failures. A library of real calls where the agent misheard is the only honest measure of whether a change to the ASR configuration, the prompt, or the question wording actually helped.