Skip to content
Sign in

Voice AI / evidence

Codecs and bandwidth: what AudioLab reads, and what it costs

Does a speech codec cost a recogniser anything, and can AudioLab tell the band of a recording and spot a codec?

The measures involved

5 measures: 5 Validated

Show the measures
01 · The test

What we did

The same 24 English read sentences through seven speech codecs and back to 16 kHz, with ffmpeg: A-law (300 to 3400 Hz at 8 kHz), AMR narrowband at 4.75 and 12.2 kbit/s, AMR wideband at 12.65 kbit/s, GSM 6.10, and Opus in voice mode at 8 and 16 kbit/s. Two open recognisers, Whisper small and Whisper large-v3-turbo. The conditions were registered on 15 October 2026, before the first transcription.

AudioLab's own measures were read on the same files afterwards, without knowing a recogniser result. That reading was exploratory: it had no pass criteria and it is not a pre-registered test.

02 · What came out

The result

What it costs a recogniser: no clear difference for any codec, for either model. The largest change was AMR narrowband at 4.75 kbit/s for Whisper small: +1.8 points, with an interval of +0.0 to +4.5.

Codec Bandwidth AudioLab reads, Hz (median, range) Lossy source label Change in WER, points: Whisper small Whisper large-v3-turbo
Not coded (reference) 7,992 (6,297 to 7,992) 24 lossless, 0 lossy referencereference
A-law, 8 kHz 4,227 (4,047 to 4,453) 14 lossless, 10 unknown, 0 lossy +0.0 (+0.0 to +0.0), no clear change−0.9 (−2.0 to +0.0), no clear change
AMR narrowband, 4.75 kbit/s 3,965 (3,773 to 4,469) 22 lossless, 2 unknown, 0 lossy +1.8 (+0.0 to +4.5), no clear change−0.7 (−1.8 to +0.0), no clear change
AMR narrowband, 12.2 kbit/s 4,133 (3,797 to 4,477) 19 lossless, 5 unknown, 0 lossy +1.1 (+0.0 to +3.1), no clear change−0.7 (−1.8 to +0.0), no clear change
GSM 6.10 4,223 (4,016 to 4,492) 15 lossless, 9 unknown, 0 lossy +0.5 (−1.3 to +2.8), no clear change−0.9 (−2.0 to +0.0), no clear change
Opus, 8 kbit/s 4,613 (4,328 to 4,914) 23 lossless, 1 unknown, 0 lossy +0.2 (+0.0 to +0.8), no clear change−0.9 (−2.0 to +0.0), no clear change
AMR wideband, 12.65 kbit/s 7,273 (6,242 to 7,672) 24 lossless, 0 lossy −0.5 (−1.6 to +0.5), no clear change−0.5 (−1.1 to +0.0), no clear change
Opus, 16 kbit/s 7,633 (6,125 to 7,992) 24 lossless, 0 lossy −0.5 (−1.6 to +0.5), no clear change+0.0 (+0.0 to +0.0), no clear change

24 sentences per row. The label counts are over the 24 recordings. A change is clearly worse or better only when its 95% interval lies fully on one side of zero and it is at least 2 points; none was.

What AudioLab reads: the band, not the codec. The bandwidth separates narrowband from wideband audio completely. The five narrowband conditions (A-law, both AMR narrowband, GSM and Opus at 8 kbit/s) read 3.8 to 4.9 kHz, with medians between 4.0 and 4.6 kHz; the two wideband codecs and the sentences that were not coded read 6.1 to 8.0 kHz. Over 120 narrowband and 72 other recordings the area under the curve is 1.000. Opus at 8 kbit/s counts as narrowband: that is what the engine reads for it, and we confirmed it by measuring the energy above the band, which is almost none.

What it does not read: that a codec was used. The lossy source label never said lossy on these 168 recordings: 141 read lossless and 27 unknown. Lossless here means that no wall of a music codec was found, not that no codec was used. The label for audio that was stretched from a lower sampling rate found the 8 kHz origin in 4 of 96 recordings through the four 8 kHz codecs, and the effective bit depth read 16 everywhere, because the output is 16-bit audio whatever happened before.

So: AudioLab can tell you the band your audio really has, which is what a narrowband line does to a recording. It cannot tell you that a codec was involved. And for these two models no codec cost anything we could show; whether it matters for your recogniser, you have to test with it.

03 · The reach

How far this reaches

Real encoders run through ffmpeg on read English speech, 16 kHz, 24 sentences per codec, Whisper small and large-v3-turbo on a CPU. The intervals are wide: a change smaller than about 2 points cannot be told from no change.

04 · The limits

What we have not tested

  • Real phone calls: these are files put through an encoder, with no network, no echo and no second leg.
  • Codecs that conceal lost packets, and the loss itself (see the page on packet loss).
  • Other codecs and bitrates, and chains of several codecs.
  • Other recognisers, streaming recognisers and other languages.
  • We wrote down in advance that AMR narrowband at 4.75 kbit/s would be worse than at 12.2 kbit/s. The direction was right, inside the noise.

Sources and next steps

Studies in our register: stress test v0.3, V03-ENG. The status of every measure is on /lenses, and how we test is on /methodology.

Other evidence