Evalgent
Back to Blog
Voice AI Evaluation

How to Test STT Under Background Noise

Deepesh Jayal
12 min read
How to Test STT Under Background Noise

# How to test STT under background noise

> Quick answer: To test STT background noise for voice agents, build a test set that layers real noise types (cars, call centers, TVs, wind, crosstalk) onto known speech at fixed signal-to-noise levels. Measure word error rate against a clean baseline, then set a pass bar at realistic contact-center noise.

Real calls are noisy. Customers phone from cars, kitchens, open-plan offices, and crowded sidewalks. A speech-to-text engine that transcribes a studio recording perfectly can still miss half the words when a television plays in the background. That gap between clean-audio scores and field performance is where voice agents quietly fail.

This guide shows how to measure that gap on purpose. You will build a noise-robustness test set, layer controlled noise onto known speech, and quantify how much accuracy degrades. The goal is a defensible pass bar for the noise your callers actually bring, not a vendor demo recorded in a quiet room.

Why clean-audio STT scores mislead you

Most published accuracy numbers come from clean read speech. That is the easiest possible condition. It tells you almost nothing about a caller shouting over highway noise.

Speech recognition systems degrade as the target voice competes with other sound. The measure that matters is the signal-to-noise ratio, or SNR: the level of the speech relative to the level of the noise, in decibels. High SNR means a clear voice. Low SNR means the voice is buried.

Clean benchmarks usually sit above 30 dB SNR. A real contact-center call often lands between 5 and 20 dB. That is a large distance. An engine tuned for the clean end can lose accuracy fast as SNR drops, and the loss is rarely linear. Below a threshold, transcripts can fall apart.

The failure is worse than a few wrong words. When background noise corrupts a transcript, every downstream step inherits the error. Intent detection misfires. Slot filling grabs the wrong number. The agent asks the caller to repeat, and containment drops. Noise robustness is not a nice-to-have. It is a precondition for the whole pipeline.

The metric that captures degradation

The standard accuracy metric is word error rate, or WER. It counts substitutions, insertions, and deletions against a reference transcript, divided by the number of reference words. Lower is better.

For noise testing, the most useful number is not absolute WER. It is WER degradation: how much error grows from your clean baseline as noise rises. An engine at 6% clean WER that climbs to 9% at 10 dB is very different from one that climbs to 28%. Both looked identical in the marketing sheet.

For deeper background on the accuracy metrics and where character-level error fits, see our guide on WER versus CER.

What "noisy" actually means on real calls

Not all noise hurts equally. Steady, broadband noise is easier for an engine to model than sudden, speech-like interference. Understanding the categories tells you what to test.

  • Stationary noise stays roughly constant: an air conditioner, road hum, a fan. Engines adapt to it more easily.
  • Non-stationary noise changes moment to moment: a barking dog, a passing siren, a dropped pan. It is harder to separate from speech.
  • Babble is the sound of other people talking. Because it shares the spectral shape of the target voice, it is one of the hardest conditions to transcribe.
  • Reverberation is the smearing of sound in a room. Far-field callers on speakerphone add echo that blurs word boundaries.
  • Crosstalk is a second speaker close to the mic, such as a colleague or a family member interjecting.

Community threads from teams shipping voice agents repeat the same complaint: the agent worked in the demo, then a real customer called from a car and the transcript turned to noise. That car case is not exotic. It is the median call for many US contact centers.

The comparison table: noise types and how to test each

Each noise type stresses the engine differently and needs a different test approach. Use this to decide what to include in your set.

Noise typeWhy it is hard for STTHow to test it
Babble (call center, restaurant)Overlaps the frequency range of speech, so the engine cannot easily tell target from interferenceMix multi-talker babble noise at 5, 10, and 15 dB SNR over your reference utterances
Road and car noiseSteady low-frequency energy plus wind gusts and turn-signal clicks masks vowels and plosivesLayer recorded in-car audio; test with windows open and closed variants
Television or radioContains intelligible speech that the engine may transcribe instead of the callerAdd broadcast audio behind the caller; check for inserted phantom words
Wind and outdoorBroadband bursts saturate the microphone and clip the signalUse outdoor recordings; include high-wind clips that push SNR near 0 dB
Reverberation (speakerphone)Echo smears word boundaries and confuses endpointsConvolve clean speech with room impulse responses at varied distances
Crosstalk (second speaker)A nearby voice competes directly and triggers wrong diarizationInsert a close second talker over parts of each utterance

How to run a background-noise STT test

Follow these steps to build and run a repeatable noise-robustness test for your voice agent's STT.

1. Assemble a clean reference set. Collect 100 to 300 utterances that reflect your real call flows, each with a verified ground-truth transcript. Include the entities your agent depends on: names, addresses, order numbers, and dates.

2. Record your clean baseline WER. Run the reference set through each candidate STT engine with no added noise. This number anchors every later comparison.

3. Gather realistic noise sources. Pull real ambient recordings that match your callers: car interiors, call-center floors, kitchens, sidewalks. Public sets like the MUSAN corpus supply categorized noise if your own recordings are thin.

4. Mix noise at fixed SNR levels. Using data augmentation, layer each noise type onto the clean utterances at controlled SNR steps, for example 20, 15, 10, 5, and 0 dB. Keep the speech identical so only the noise changes.

5. Anchor one point to your real SNR. Measure the SNR of a sample of your actual recorded calls and make sure your test includes that level. Do not just test convenient numbers.

6. Run every condition and log WER. Transcribe each noisy version and compute WER against the same ground truth. Track results per noise type and per SNR, not as one blended average.

7. Chart WER degradation. Plot WER against SNR for each engine. The slope shows how gracefully each one degrades. A flatter curve is more robust.

8. Set a pass bar for noisy conditions. Define a maximum acceptable WER at your realistic contact-center SNR, plus a maximum degradation from clean. Reject engines that clear the clean bar but fail the noisy one.

For the broader testing workflow that this noise test slots into, see our voice agent evaluation overview and the deeper STT evaluation guide.

Record real noise or augment it: which to choose

You have two ways to get noisy test audio, and both belong in a serious test set.

Recording real noisy calls gives the highest fidelity. The noise, the microphone, the codec, and the caller behavior all match production. The cost is that you cannot control SNR, and you need clean ground-truth transcripts, which is labor.

Augmenting clean speech with separately recorded noise gives control. You fix the utterance, sweep the SNR, and isolate each noise type. The tradeoff is realism: mixed audio can differ subtly from natively noisy recordings.

Use both. Augmentation gives a clean, repeatable curve of WER versus SNR. A held-out set of genuine noisy call recordings validates that the augmented curve predicts real performance. If the two disagree, trust the real calls and investigate the mixing.

Anchor the test to your own data

The most common mistake is testing at generic SNR levels that do not match your callers. A test at 20 dB looks reassuring and means little if your median call is 8 dB.

Sample your production recordings, measure their SNR distribution, and make your test bar reflect it. Testing on the noise profile of your own traffic is the point of benchmarking voice agents on your own data. A generic leaderboard cannot tell you how an engine handles your drive-through, your clinic lobby, or your call-center floor.

Where entity errors hide inside noise

Aggregate WER can look acceptable while the words that matter are wrong. Noise does not damage all words equally. Function words survive; rare, high-value tokens do not.

A caller's name, an account number, or a street address carries most of the business value in a call. These are exactly the tokens noise corrupts, because they are long, uncommon, and often spelled out. An engine can hold a respectable overall WER while missing the one number the whole call depended on.

Test entity accuracy separately under noise, not just global WER. Our guide on STT entity accuracy for voice agents covers how to score names, IDs, and addresses on their own. Under noisy conditions, that separate score often tells the real story.

Setting a defensible pass bar

A pass bar has two parts. First, a maximum absolute WER at your realistic SNR. Second, a maximum degradation from your clean baseline across the noise types you care about.

Set the absolute bar from downstream tolerance. If intent detection stays reliable up to a given WER, that is your ceiling at production SNR. Set the degradation bar to catch engines that are brittle: a small clean-WER edge is worthless if it collapses at 5 dB.

Document the bar, the noise types, the SNR levels, and the sample. A pass bar is only defensible if someone else can rerun it and get the same answer. That reproducibility is what separates a real audit from a demo. For how third parties formalize this, see independent voice AI evaluation.

How Evalgent tests noise robustness

Evalgent is an independent, third-party evaluation platform for AI voice agents. We build noise-robustness test sets from realistic audio, including noise drawn from your own calls, and measure WER degradation across noise types and SNR levels rather than a single clean score.

Because the evaluation is independent, the numbers are not tuned to make any engine look good. We report how each candidate degrades at your real contact-center SNR and set a pass bar you can defend to procurement and compliance. This is the same rigor described in our voice agent accuracy audit approach and the broader noise robustness guide.

Frequently asked questions

How do you test STT under background noise?

Build a reference set of utterances with verified transcripts, then layer real noise types over them at fixed signal-to-noise levels. Transcribe each noisy version and compute word error rate against the clean ground truth. Compare each engine's degradation from its clean baseline, and set a pass bar at your realistic call SNR.

What SNR should you test a voice agent at?

Test a range, then anchor to your own traffic. A sweep of 20, 15, 10, 5, and 0 dB reveals the degradation curve. But the level that matters is the median signal-to-noise ratio of your actual recorded calls, which for many US contact centers sits between 5 and 20 dB. Include that point explicitly.

Why does STT accuracy drop in noisy calls?

Background noise competes with the target voice, lowering the signal-to-noise ratio. Speech-like interference such as babble or a television overlaps the frequency range of speech, so the engine cannot cleanly separate the two. Rare words like names and numbers suffer most, because they carry the least redundancy for the model to recover from.

How do you build a noise-robustness test set?

Start with clean utterances and verified transcripts that mirror your call flows. Collect real noise recordings matching your callers, or use a categorized noise corpus. Mix noise onto the speech at controlled SNR steps using data augmentation, keeping the speech fixed. Add a held-out set of genuinely noisy recordings to validate that the mixed audio predicts real performance.

How much does background noise increase word error rate?

It depends on the engine, the noise type, and the SNR, so measure it rather than assume. Babble at low SNR causes the steepest rise, while steady road hum is gentler. The useful figure is relative: how far WER climbs from your clean baseline. Report degradation per noise type instead of one blended average.

What noise types matter most for voice agents?

Babble from call centers and restaurants is hardest, because it shares the spectral shape of speech. Car and road noise is the most common real-world condition. Television and radio can inject phantom words the engine transcribes as if the caller spoke them. Reverberation from speakerphones and crosstalk from a second speaker round out the priority list.

How do you measure WER degradation from noise?

Record a clean-baseline word error rate first with no added noise. Then run the same utterances at each SNR level and noise type, computing WER against the identical ground truth. Degradation is the difference between the noisy WER and the clean baseline. Plot it against SNR so you can compare how gracefully each engine falls off.

Should you test STT on your own noisy call recordings?

Yes. Generic benchmarks use noise that may not match your callers, so they cannot predict your field accuracy. Sample your production calls, measure their SNR distribution, and make your test reflect it. Real recordings validate augmented tests and expose the specific conditions, like drive-throughs or clinic lobbies, that break your particular voice agent.

The bottom line

STT that scores well on clean audio can still collapse on the noisy calls your customers actually make. Test on realistic noise at your own signal-to-noise levels, measure WER degradation instead of a single clean number, and set a pass bar you can defend.

Evalgent runs independent noise-robustness evaluations on realistic audio from your calls, so you know how each engine holds up before you ship. Book a demo to see your voice agent tested under real background noise.

Related Articles