WebRTC Metrics

A comprehensive overview of WebRTC statistics, derived calculations, extracted features, and observable signals, to better understand call quality, connectivity, and user experience in rtcStats

Back
On this page5 sections
inboundaudionetworkhighConcealedAudioIntype

Highly concealed incoming audio

Last updated Applies tortcstats-enrichmentrtcstats.com

A large share of the incoming audio played out was synthesized concealment rather than really received samples.

Description

Audio only. The concealment counters (concealedSamples, totalSamplesReceived) must not exist for video, so this observation is raised on incoming audio streams only.

When packets are lost or arrive too late to be played on time, the decoder invents replacement audio (packet loss concealment) so the stream keeps playing. This observation flags streams where a large share of what was played out was this synthesized filler rather than really received audio. It is heard as robotic, watery, or choppy speech.

The ratio we use

We measure the audible concealment only:

(concealedSamples - silentConcealedSamples) / totalSamplesReceived x 100

totalSamplesReceived already includes the concealed samples, so the ratio is naturally bounded between 0% and 100%.

silentConcealedSamples is the muted portion of real packet-loss concealment: when loss runs long, NetEq's Expand operation fades the synthesized audio toward noise or silence rather than voiced speech. We subtract it so the ratio reflects only the audible, voiced concealment the listener actually notices.

Opus DTX does not distort this measure. During a DTX talk gap the decoder plays comfort noise, which is a separate operation from packet-loss concealment and increments none of the concealment counters. DTX therefore cannot inflate this ratio. If anything it dilutes it, since totalSamplesReceived keeps growing while the concealed numerator stays flat.

When does it trigger?

Both concealment counters are present and the audible ratio is 5% or above over the capture. At 5% or above, concealment is significantly impairing the audio, so this is a medium-severity quality problem.

What do we do here?

We look at each inbound audio stream that actually received packets and compute the audible concealment ratio over the whole capture, raising the observation once when it is 5% or above. Both concealment counters must be present, so a stream that reports neither (every video stream) is skipped rather than read as zero. A stream that received no packets at all is covered by No packets received, never by this one.

See also