Audio and speech recognition

The phone line throws away half your voice

The demo understood everything. Then the agent went onto a phone number, and now it can't tell an F from an S. The model is the same one – the audio reaching it is not.

A woman in a dark padded jacket stands in an apartment building's lift lobby with a mobile phone to her ear and her free hand raised as she repeats herself, seen through the glass wall from the entrance, while a man in a dark coat waits out of focus by the lift doors behind her

The demo sounded perfect. The agent understood everything, answered quickly, read the email address back without a single error.

Then it went onto a phone number. Now it hears "F" as "S", and it can't tell a Norwegian caller's "Kjell" from "skjell".

The obvious conclusion is that the model isn't good enough. Usually the model is exactly the one that was in the demo. What changed is the audio going into it – and neither of those errors is random. They sit at opposite ends of what the phone line throws away.

The line is a filter, not a pipe

Ordinary telephony encodes audio as what is called narrowband: 8,000 samples per second, across a frequency band running from roughly 300 to roughly 3,400 hertz. Everything above and below that is gone.

The standard is inherited from the analogue era, and it was set low deliberately. It had to carry just enough for one person to understand another, and no more, because bandwidth cost money.

For a human, it is plenty. The ear guesses the rest. This is not a new observation: the reason spelling alphabets exist at all – "S as in Sierra, F as in Foxtrot" – is that s and f become genuinely hard to tell apart once a phone line has removed the high frequencies that separate them.

A speech recognition model gets no such help. It gets a signal. And most models are trained on audio sampled 16,000 times per second – wideband. Give one half of what it is used to and it guesses too, but it guesses worse, and it guesses at things a person never would.

What the sound carries Roughly where Survives narrowband?
The fundamental of the voice – intonation, pitch accent 80–250 Hz No, it sits below the 300 Hz cut
Vowels 300–2,500 Hz Yes
s, sh and other sibilants 3,000–8,000 Hz Barely, or not at all
The burst in t, k and p 2,000–6,000 Hz Partly

The Nordic languages use both ends at once

English loses something to narrowband. Norwegian, Swedish and Danish lose something at both ends of the band simultaneously, and that is a harder problem.

At the top of the band sit the sibilants. Norwegian separates kj from skj – "kjenner" from "skjenner", the name "Kjell" from "skjell" – and Swedish separates its tje-sound from its sje-sound, as in "tjära" and "skära". Both contrasts are carried mainly by energy above 3,000 hertz. So is the release burst on a final t or k, which is what Danish leans on to keep "tak" apart from "tag". Narrowband cuts straight through that region. For a proportion of callers there is a second filter stacked on top of that one, in exactly the same frequency range.

At the bottom of the band sits the fundamental frequency of the voice. Norwegian and Swedish are pitch-accent languages: "bønner" (beans) and "bønder" (farmers) are told apart by tone alone, as are Swedish "anden" (the duck) and "anden" (the spirit). Danish does the equivalent job with stød, a brief creak in the voice that separates "hun" from "hund". All of it lives in the fundamental, which for most adults sits between 80 and 250 hertz – below the 300 Hz cut. The human ear reconstructs the fundamental from its overtones, so a person hears these distinctions on the phone without difficulty. A model asked to track pitch in a signal whose fundamental has been filtered out has a substantially harder job.

The Nordic languages are therefore unlucky at both ends at once: they use the top of the spectrum to separate consonants and the bottom to separate words, and the phone line takes some of each. It is a related reason why numbers are the hardest thing a voice agent hears – there the problem is how the numbers are counted, here it is acoustics, but they hit the same call.

Want to talk it through with someone who has done this before?

Fifteen minutes on a call. We will tell you honestly whether a voice agent fits your setup – and what has to be settled before it goes live.

15 minutes · no obligation · pick your own time

Where the bandwidth actually goes

The good news is that it does not have to go anywhere.

G.722 and Opus are widely deployed wideband codecs. They sample 16,000 times per second and carry up to around 7,000 hertz. When a customer calls from a modern mobile over VoLTE, the call usually leaves the handset in wideband.

The problem is that calls rarely travel in a straight line. The weakest link sets the quality for the whole path. If the call passes through a single leg that only speaks narrowband – an older PBX, a SIP trunk configured with G.711 as the only option, a gateway to the legacy fixed network – the whole call is transcoded down there. The bandwidth does not come back afterwards. Audio that has been discarded is gone.

This is worth knowing, because it connects to something people do without thinking about audio at all. Call forwarding adds another leg to the path a call takes, and every leg is a fresh opportunity to transcode down. A setup that worked well when the agent sat directly on the number can get noticeably worse once the call has to pass through a corporate phone system first.

This is where Threll.ai has made a choice that bears directly on it. We run on Telenor's SIP trunk, integrated directly against the operator network, which removes one of the legs that would otherwise force the audio down to narrowband: the call can be carried in wideband with G.722 all the way to the agent, for handsets that support it. It does nothing for a customer calling from a legacy fixed line, and nothing if the call has already been transcoded down inside a corporate phone system we do not touch. But it is the leg we can actually do something about.

The numbers, and the caveat that comes with them

There is no good public figure for what narrowband costs in accuracy on Norwegian, Swedish or Danish. The closest thing available is in English.

Voicegain, a speech recognition vendor, published a benchmark in August 2025 across 40 call centre recordings in 8 kHz narrowband, drawn from eight different customers in different industries. The most accurate model in the test got 87.67 per cent of the words right. The weakest got 68.38 per cent. That is a spread of nearly twenty percentage points between models that are all considered good.

The caveats are real and should stay attached: this is American English, it is 40 files, and it is the vendor's own curated set – they have an obvious interest in this category of audio looking difficult. The numbers say nothing precise about any Nordic language.

What they do say something about is that the choice of model matters far more on narrowband than on clean audio, and that differences invisible in a demo become large in production. It is the same reason the figures a new model launches with say little about your own line.

Three things worth doing

Find out which codec your calls actually run on. The question goes to whoever owns the telephony, not to the vendor of the agent. The answer should be a name: G.711, G.722, Opus, AMR-WB. If you do not get a name, the answer is G.711 in practice.

Test on the real path in. Not in a browser, not over a headset in the office. Call the number from outside, from a mobile, through the whole setup the way a customer would. It is the same reason the demo does not survive the telephone, and it belongs in a pilot built to actually reveal something.

Do not buy a bigger model to solve an audio problem. If the errors cluster around sibilants, short words and names, that points at bandwidth rather than at language understanding. A more expensive model on the same poor audio just gives you a more expensive error. And for some callers the problem is not the line at all, but that their speech sits a long way from what the model was trained on.

Threll.ai builds voice agents in Norwegian, Swedish and Danish. Most of the work of getting an agent to hear correctly is not in the model. It is in how much of the sound is left by the time it arrives.

Frequently asked questions

Assume G.711 and test the outcome rather than chasing the answer. Call the number from outside on a mobile, the way a customer would, and read out a few words that differ only in a sibilant, plus a pitch-accent pair if you serve Norwegian or Swedish. If the agent hears the difference, some wideband is getting through; if it does not, the line behaves like narrowband whatever anyone claims. You need no access to the network to measure the result.

Only if the whole path carries it, and the gain shows up first at the top of the band where the sibilants live. The weakest link sets the quality for the entire call: the caller's handset, every leg along the way and a corporate phone system you do not control can each transcode down, and the bandwidth does not come back afterwards. An upgrade on your side stays invisible to someone calling from a legacy fixed line.

Bare letter names move the problem rather than solving it, because letters are short words separated by exactly the frequencies the line discarded, so b and p, t and d, e and i each become as hard as the whole name was. That is why spelling alphabets exist at all: a full code word like Sierra or Foxtrot carries enough redundancy to survive the filter where a single letter does not. Better still, have the agent read back what it thinks it heard and let the caller correct it, since a confirmation carries context that spelling does not.

Half of it does. Narrowband still removes the top of the band, so sibilants and the release burst in t, k and p suffer the same way, which is why s and f are genuinely hard to tell apart on a phone line. What you avoid is the second problem at the bottom of the band, because English does not separate words by pitch accent or by stød the way the Nordic languages do. The one benchmark quoted here is American English, and it still showed nearly twenty percentage points between models, so the choice of model matters regardless.

Pull out the calls where the agent asked for a repeat and look at what was actually misheard. If the errors cluster around names, short words and sibilants, that points at bandwidth. If whole sentences and the meaning of a request are what slips, that is understanding. The two need different fixes, and a bigger model only helps the second one.