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.
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 | reference | reference |
| 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.
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.
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
- Level and clipping
- Packet loss
- Echo: in preparation
- Noise and SNR
- A competing voice
- Scene measures and content type
- Speech detection
- Cut-off at the start and end
- Room and reverberation
- Do audio measures predict errors?
- A cleaning step, before and after: in preparation
- Where we were wrong