Skip to content
All articles

Voice AI · Audio

Why a phone call mixes up F and S

On a phone line sampled at 8 kHz, the sound that best separates S from F sits above what the channel can carry. A better model cannot recover it; a better design works around it.

· 4 min read

A frequency chart from 0 to 8 kHz. A wideband call sampled at 16 kHz carries up to 8 kHz. A phone call passes a 300–3,400 Hz band, and its 8 kHz sampling allows nothing above 4 kHz, because 4 kHz is 8,000 divided by 2. In speech, pitch sits at 85–255 Hz, below the phone band; vowels at 300–3,000 Hz sit inside what a phone carries; the /s/ and /z/ energy at 4,000–8,000 Hz is gone on a phone call. No model makes spelling reliable enough to skip confirmation, so design around it: a spelling alphabet, keypad entry for codes, a secure link to a screen, or reading back the value.

Phone callers keep having "F" heard as "S", and the first instinct is to try a better recognition model. It will not fix it, because on a narrowband call the main acoustic cue that separates the two letters never reaches the model.

Nyquist sets the ceiling

A sample rate R can represent frequencies up to R/2, and that one rule sets each channel's ceiling:

ChannelSamplingRepresents up to
Telephony8,000 Hz4,000 Hz
Wideband16,000 Hz8,000 Hz
WebRTC48,000 Hz capable24,000 Hz

Now put speech on the same axis. The vowel formants, around 300–3,000 Hz, sit comfortably inside the 300–3,400 Hz band a phone line passes; the fundamental pitch of a voice, around 85–255 Hz, sits below it. The /s/ and /z/ sibilants carry most of their energy between 4,000 and 8,000 Hz, above the telephony ceiling, while /f/ and /th/ are weak sounds with a flat spectrum. On an 8 kHz channel, the strongest cue separating S from F is simply not in the signal. Weaker cues remain and context helps, but no model makes spelled letters reliable enough to skip confirmation. This is Nyquist, not accuracy.

So it is a design problem

Any workflow that asks a caller on a narrowband line to spell a name, read an alphanumeric order code or confirm an email address is asking the channel for information it cannot carry reliably. Every fix is a product decision:

  • a spelling alphabet ("S as in Sam");
  • keypad (DTMF) entry for codes;
  • a secure link that moves the step to a screen;
  • reading back the interpreted value, rather than the letters, for confirmation.

Engineering Insight

Treat the channel as an input slice, not one quality score. A laptop microphone in an office, a speakerphone two metres away and a car with the windows down each degrade something different first, while a headset in a quiet room degrades nothing. A café full of other voices is the hardest case: generic noise suppression is trained to remove sounds that are unlike speech, and a nearby conversation is speech.

Measure the channel you actually have

Do not assume a studio sample represents a phone call in a car. Record the processing state of every session: whether echo cancellation is on, the noise-suppression level, gain control, the codec, the sample rate and the device type. Those settings change the meaning of every metric downstream. A word-error regression that lines up with one browser version is usually a change in the processing chain, not in the model.

Get one diagram a week

A short article built around one engineering diagram, from the same library as these courses.

One diagram-led article a week on AI and systems engineering. We email you once to confirm, and every newsletter has an unsubscribe link. Privacy policy