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
trackaudioinboundneteqquality

Audio quality (feature)

Track-level audio features measuring NetEq concealment and time-scaling, the closest audio analog to video freezes.

Description

Track-level features, extracted per inbound audio track into features_track.

These features come from NetEq, the receiver's audio jitter buffer, and describe how much it had to paper over network problems:

  • concealedSamples - cumulative audio samples that were concealed (synthesized to cover missing or late audio).
  • totalSamplesReceived - cumulative audio samples received, including concealed ones.
  • concealmentPercentage - fraction of samples that were concealed.
  • insertedSamplesForDeceleration - samples NetEq inserted to slow playout down.
  • removedSamplesForAcceleration - samples NetEq removed to speed playout up.
  • decelerationPercentage - fraction of samples added by deceleration.
  • accelerationPercentage - fraction of samples removed by acceleration.

Extracted by the open-source rtcstats-features package.

Why it matters

Audio does not "freeze" the way video does, so teams often lack an audio-quality KPI. Concealment is that KPI. When packets arrive late or not at all, NetEq synthesizes audio to fill the gap, and concealedSamples over totalSamplesReceived (the concealmentPercentage) is the honest measure of how much of what the user heard was made up rather than received. It is the audio analog to counting video freezes.

The time-scaling counters add texture. insertedSamplesForDeceleration and removedSamplesForAcceleration show NetEq stretching or compressing audio to keep the buffer healthy under changing jitter. A little is normal; sustained high accelerationPercentage or decelerationPercentage means the buffer is fighting the network, which listeners perceive as robotic or choppy audio. Trend these by region or client version to find where audio quality is quietly degrading.

Typical values

  • Clean audio: concealmentPercentage near zero, small acceleration and deceleration.
  • Concerning: concealmentPercentage climbing over a few percent, or sustained time-scaling.
  • Normalize by track duration when comparing cumulative sample counts across calls.

SQL example

Average concealment for inbound audio, weekly:

SELECT
  DATE_TRUNC('week', server.created_at) AS week,
  AVG(track.concealment_percentage)     AS avg_concealment,
  AVG(track.acceleration_percentage)    AS avg_acceleration,
  AVG(track.deceleration_percentage)    AS avg_deceleration
FROM "rtcstats-server" AS server
JOIN features_metadata   AS metadata   ON metadata.dump_id    = server.id
JOIN features_connection AS connection ON connection.dump_id  = metadata.id
JOIN features_track      AS track      ON track.connection_id = connection.id
WHERE connection.connected        -- only connections that reached 'connected'
  AND track.kind = 'audio'        -- 'audio' or 'video'
  AND track.direction = 'inbound' -- 'inbound' or 'outbound'
GROUP BY week
ORDER BY week ASC;

Related features

  • Jitter buffer - the buffering behavior these concealment and time-scaling numbers react to.

See also