netem per direction: none
| case | result | timings, ms (true value within the error bar) | failed checks |
|---|---|---|---|
| greeting | pass | 200 OK to agent speech: 544.0 ms (-64.9/-1.1) | - |
| bye | pass | BYE to its response: 1.6 ms (-0.4/+0.4) BYE to the agent's last RTP: 1.4 ms (-0.4/+0.4) | - |
| cancel | inconclusive | - | CANCEL sent while ringing (final response 3 ms after the first provisional, before a CANCEL) |
| hold | fail | sendonly hold: re-INVITE to 2xx: 3.1 ms (-0.4/+0.4) resume from sendonly: re-INVITE to 2xx: 2.8 ms (-0.4/+0.4) resume from sendonly: 2xx to agent RTP: -0.3 ms (-0.4/+0.4) resume from sendonly: RTP clock drift: -0.0 ms (-0.4/+0.4) inactive hold: re-INVITE to 2xx: 2.6 ms (-0.4/+0.4) resume from inactive: re-INVITE to 2xx: 2.8 ms (-0.4/+0.4) resume from inactive: 2xx to agent RTP: 14.0 ms (-0.4/+0.4) resume from inactive: RTP clock drift: 0.0 ms (-0.4/+0.4) | inactive hold: answer inactive (recvonly) |
| dtmf-rfc4733 | fail | - | telephone-event negotiated |
| dtmf-info | fail | INFO to its response: 30700.8 ms (-0.4/+0.4) | INFO answered 2xx (SIP/2.0 408 Request Timeout) agent reacts within 5000 ms |
| refer | pass | end of the request to REFER: 1503.8 ms (-17.0/+17.0) final NOTIFY to agent BYE: 17.4 ms (-0.4/+0.4) | - |
| refer-fail | fail | end of the request to REFER: 1503.3 ms (-17.0/+17.0) | agent keeps the call for 10 s (BYE 19 ms after it) agent speaks within 5000 ms |
| timer | inconclusive | - | Session-Expires in the 2xx (timers not supported (RFC 4028 9, optional; the caller may refresh alone)) |
| compact-headers | fail | - | call completed (SIP/2.0 500 Server Internal Error) |
| sdp-ssrc | fail | - | call completed (INVITE timed out) |
| late-offer | fail | - | call completed (SIP/2.0 500 Server Internal Error) |
| ptime-30 | pass | end of the question to agent speech: 1531.1 ms (-11.0/+133.0) | - |
| ssrc-change | pass | end of the question to agent speech: 1508.5 ms (-11.0/+133.0) | - |
| reinvite | pass | refresh re-INVITE to 2xx: 2.1 ms (-0.4/+0.4) end of the question to agent speech: 1508.9 ms (-11.0/+133.0) | - |
| reinvite-nosdp | fail | - | 2xx offers the call's codec (no SDP) refresh answered 2xx (SIP/2.0 487 Request Terminated) |
True value = measured − error; the error lies within:
Wall-clock steps during the run: none.
Turn latency, ms: caller's labelled end to the agent's first speech (webrtcvad), every turn of every run. True value = measured - error, error within the onset bar; where the caller's speech ends is defined to ±17 ms (label threshold ±5 dB).
| profile | runs | answered | p5 | p50 | p95 | run medians | across a clock step | onset error bar |
|---|---|---|---|---|---|---|---|---|
| clean | 1 | 12/12 | 1504 | 1511 | 1518 | 1511 .. 1511 | 0 | [-133.0, +11.0] webrtcvad onset, p5..p95, PCMA, clean (calibrate --speech, seeds 1-5) |
Each turn: a line of PROFILE/REPEAT/latency/turns.jsonl (results.json holds the cases only; rtpbench check gathers the turns into check.json).
Barge-in: whether the agent stopped within 2 s of the interjection's onset, and its stop time (ms, gate, wire) when it did, every turn of every run. True value = measured - error, error within the bar (calibrated on hard cuts). Speech ended before (gate): turns left out, the gate having heard the agent's speech end before the onset by more than the bar.
| profile | interjection | runs | stopped | run rates | p5 | p50 | p95 | across a clock step | speech ended before (gate) | stop error bar |
|---|---|---|---|---|---|---|---|---|---|---|
| clean | interrupt | 1 | 2/2 | 100% .. 100% | 108 | 108 | 176 | 0 | 1 | [-84.9, +0.0] gate stop time, p5..p95, PCMA, clean (calibrate --barge-in, seeds 1-5) |
| clean | backchannel | 1 | 3/3 | 100% .. 100% | 13 | 23 | 44 | 0 | 1 | [-84.9, +0.0] gate stop time, p5..p95, PCMA, clean (calibrate --barge-in, seeds 1-5) |
| clean | cough | 1 | 3/3 | 100% .. 100% | -40 | -9 | 21 | 0 | 0 | [-84.9, +0.0] gate stop time, p5..p95, PCMA, clean (calibrate --barge-in, seeds 1-5) |
Per clip: stopped / turns, over the same turns, and those left out as ended before; interruptions are the caller's lines (--lines), backchannels and coughs the corpus's.
| interjection | clip | words | clean |
|---|---|---|---|
| interrupt | interrupt-00 | 1/1 | |
| interrupt | interrupt-01 | 0/0, 1 ended before | |
| interrupt | interrupt-02 | 1/1 | |
| backchannel | tts-cori-bc | Yeah | 0/0, 1 ended before |
| backchannel | tts-libritts0-bc | Okay | 1/1 |
| backchannel | tts-ljspeech-bc | Uh-huh | 1/1 |
| backchannel | tts-sharvardf-bc | Vale | 1/1 |
| cough | cough-man-1 | 1/1 | |
| cough | cough-short-0 | 1/1 | |
| cough | cough-short-1 | 1/1 |
Each turn: a line of PROFILE/REPEAT/barge-in/turns.jsonl (results.json holds the cases only; rtpbench check gathers the turns into check.json).
Turn latency on the mock engine, split where it heard the end of the caller's speech and sent its first audio (one clock with the captures), ms, p50 [p5, p95]: uplink and downlink are the target's; the engine waits 1000 ms of silence and answers 500 ms later by design. Uplink carries the caller's label error (±17 ms), downlink the onset error bar of the profile and codec.
| profile | turns | wire latency | uplink | engine | downlink |
|---|---|---|---|---|---|
| clean | 12 | 1511 [1504, 1518] | 0 [-2, 4] | 1501 [1500, 1502] | 8 [3, 17] |
Greeting on the mock engine, ms, p50 [p5, p95]: from the 200 OK on the wire to the target's request for a greeting (negative: asked before answering), the engine's 500 ms, and from its first audio to the agent's speech on the wire (webrtcvad onset bar).
| profile | calls | 200 OK to speech | to the request | engine | downlink |
|---|---|---|---|---|---|
| clean | 1 | 544 [544, 544] | 3 [3, 3] | 501 [501, 501] | 40 [40, 40] |
The agent's RTP as the caller received it, ms, median [min, max] over calls: late, p99 of how much later than their timestamps say the packets arrived, against the earliest before them: the jitter buffer a receiver needs to play 99% of them in time; jitter, the RFC 3550 interarrival jitter estimate, its median over each call. On a clean network both are the agent's own pacing (and a carrier's); a profile adds its own.
| profile | calls | late, p99 | jitter |
|---|---|---|---|
| clean | 14 | 1.1 [1.1, 2.8] | 0.28 [0.03, 0.36] |
Pauses: none; outside a hold, the agent's RTP never went on after stopping for a second or more.
The mock engine's answers as the caller received them (completed answers in the latency and barge-in calls), median [min, max] over answers. Each piece of speech is aligned with what the mock sent; for 24 kHz audio, that is its interpolation through an ideal 8 kHz converter, so the mock's own resampling is not counted. Samples in packets the network lost are left out. unchanged: answers whose aligned speech came through sample for sample (pauses are not compared). distortion: the audio against what no linear filter of ±4 ms explains; a resampler or band filter would leave G.711's own, about 37 dB. moved: answers where a piece came out 5 ms or more later or earlier than the one before (a pause lengthened or shortened, audio inserted or dropped), and the largest move. gain: least squares. 3.4-4 kHz: that band against 300-3400 Hz, relative to what was sent.
| profile | answers | unchanged | distortion, dB | moved | gain, dB | 3.4-4 kHz, dB |
|---|---|---|---|---|---|---|
| clean | 23 | 23 | exact [exact, exact] | 0 | +0.0 [+0.0, +0.0] | +0.0 [+0.0, +0.0] |
The caller's lines in the latency and barge-in calls as the mock engine received them, aligned piece by piece with what the caller sent (its own capture, before the network), median [min, max] over lines; the columns as for the engine's audio above. Lost packets are the target's to fill: what it filled them with counts as distortion, and what it left out as moved. above 4 kHz: energy above 4 kHz against 300-3400 Hz in 24 kHz audio (the caller sends none). full scale: lines with samples at full scale. missing 20 ms: the caller's voiced 20 ms with nothing like them within 25 ms in what the engine got, and what came in their place: silence, the 20 ms before again (repeat), or other (also the next audio, where a packet was left out: see moved). appends: the audio each append carried, the median of each call's.
| profile | lines | unchanged | distortion, dB | moved | gain, dB | 3.4-4 kHz, dB | above 4 kHz, dB | full scale | missing 20 ms | appends, ms |
|---|---|---|---|---|---|---|---|---|---|---|
| clean | 32 | 32 | exact [exact, exact] | 0 | +0.0 [+0.0, +0.0] | +0.0 [+0.0, +0.0] | 0 | 0.0% | 20 [20, 20] |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.007 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.007 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=397.edb49634 SIP/2.0 | 1 ACK |
| 5.729 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=397.edb49634 SIP/2.0 | 2 BYE |
| 5.732 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.005 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.005 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=324.2004fe22 SIP/2.0 | 1 ACK |
| 1.628 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=324.2004fe22 SIP/2.0 | 2 BYE |
| 1.629 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=aeb.6e659f96 SIP/2.0 | 1 ACK |
| 0.046 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=aeb.6e659f96 SIP/2.0 | 2 BYE |
| 0.047 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 1 ACK |
| 5.723 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 2 INVITE |
| 5.724 | agent → caller | SIP/2.0 100 Giving it a try | 2 INVITE |
| 5.726 | agent → caller | SIP/2.0 200 OK | 2 INVITE |
| 5.726 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 2 ACK |
| 8.726 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 3 INVITE |
| 8.727 | agent → caller | SIP/2.0 100 Giving it a try | 3 INVITE |
| 8.729 | agent → caller | SIP/2.0 200 OK | 3 INVITE |
| 8.729 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 3 ACK |
| 11.730 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 4 INVITE |
| 11.731 | agent → caller | SIP/2.0 100 Giving it a try | 4 INVITE |
| 11.732 | agent → caller | SIP/2.0 200 OK | 4 INVITE |
| 11.733 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 4 ACK |
| 14.733 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 5 INVITE |
| 14.734 | agent → caller | SIP/2.0 100 Giving it a try | 5 INVITE |
| 14.736 | agent → caller | SIP/2.0 200 OK | 5 INVITE |
| 14.736 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 5 ACK |
| 17.747 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=227.9d532a27 SIP/2.0 | 6 BYE |
| 17.749 | agent → caller | SIP/2.0 200 OK | 6 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.005 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=f76.b871e8e5 SIP/2.0 | 1 ACK |
| 13.728 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=f76.b871e8e5 SIP/2.0 | 2 BYE |
| 13.729 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=1d7.f2cb1a52 SIP/2.0 | 1 ACK |
| 5.720 | caller → agent | INFO sip:172.16.1.6:5061;transport=tls;did=1d7.f2cb1a52 SIP/2.0 | 2 INFO |
| 36.421 | agent → caller | SIP/2.0 408 Request Timeout | 2 INFO |
| 44.428 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=1d7.f2cb1a52 SIP/2.0 | 3 BYE |
| 44.429 | agent → caller | SIP/2.0 200 OK | 3 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.003 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.003 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=c7a.17d51e63 SIP/2.0 | 1 ACK |
| 11.548 | agent → caller | REFER sips:rtpbench@172.16.0.3:39165 SIP/2.0 | 2 REFER |
| 11.548 | caller → agent | SIP/2.0 202 Accepted | 2 REFER |
| 11.548 | caller → agent | NOTIFY sip:172.16.1.6:5061;transport=tls;did=c7a.17d51e63 SIP/2.0 | 2 NOTIFY |
| 11.549 | agent → caller | SIP/2.0 200 OK | 2 NOTIFY |
| 12.591 | caller → agent | NOTIFY sip:172.16.1.6:5061;transport=tls;did=c7a.17d51e63 SIP/2.0 | 3 NOTIFY |
| 12.593 | agent → caller | SIP/2.0 200 OK | 3 NOTIFY |
| 12.608 | agent → caller | BYE sips:rtpbench@172.16.0.3:39165 SIP/2.0 | 3 BYE |
| 12.614 | caller → agent | SIP/2.0 200 OK | 3 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=c4b.0d325312 SIP/2.0 | 1 ACK |
| 11.527 | agent → caller | REFER sips:rtpbench@172.16.0.3:42325 SIP/2.0 | 2 REFER |
| 11.528 | caller → agent | SIP/2.0 202 Accepted | 2 REFER |
| 11.528 | caller → agent | NOTIFY sip:172.16.1.6:5061;transport=tls;did=c4b.0d325312 SIP/2.0 | 2 NOTIFY |
| 11.529 | agent → caller | SIP/2.0 200 OK | 2 NOTIFY |
| 11.550 | caller → agent | NOTIFY sip:172.16.1.6:5061;transport=tls;did=c4b.0d325312 SIP/2.0 | 3 NOTIFY |
| 11.552 | agent → caller | SIP/2.0 200 OK | 3 NOTIFY |
| 11.569 | agent → caller | BYE sips:rtpbench@172.16.0.3:42325 SIP/2.0 | 3 BYE |
| 11.573 | caller → agent | SIP/2.0 200 OK | 3 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=3ac.2ea5f164 SIP/2.0 | 1 ACK |
| 2.027 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=3ac.2ea5f164 SIP/2.0 | 2 BYE |
| 2.028 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 500 Server Internal Error | 1 INVITE |
| 0.004 | caller → agent | ACK sips:openai@carrier SIP/2.0 | 1 ACK |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 500 Server Internal Error | 1 INVITE |
| 0.004 | caller → agent | ACK sips:openai@carrier SIP/2.0 | 1 ACK |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.004 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=03a.9cab2972 SIP/2.0 | 1 ACK |
| 10.887 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=03a.9cab2972 SIP/2.0 | 2 BYE |
| 10.888 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.003 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=dbf.71604691 SIP/2.0 | 1 ACK |
| 10.926 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=dbf.71604691 SIP/2.0 | 2 BYE |
| 10.928 | agent → caller | SIP/2.0 200 OK | 2 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.003 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.004 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=8e8.530cc432 SIP/2.0 | 1 ACK |
| 5.720 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=8e8.530cc432 SIP/2.0 | 2 INVITE |
| 5.721 | agent → caller | SIP/2.0 100 Giving it a try | 2 INVITE |
| 5.723 | agent → caller | SIP/2.0 200 OK | 2 INVITE |
| 5.723 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=8e8.530cc432 SIP/2.0 | 2 ACK |
| 10.846 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=8e8.530cc432 SIP/2.0 | 3 BYE |
| 10.848 | agent → caller | SIP/2.0 200 OK | 3 BYE |
| s | direction | message | CSeq |
|---|---|---|---|
| 0.000 | caller → agent | INVITE sips:openai@carrier SIP/2.0 | 1 INVITE |
| 0.001 | agent → caller | SIP/2.0 100 Giving it a try | 1 INVITE |
| 0.003 | agent → caller | SIP/2.0 200 OK | 1 INVITE |
| 0.003 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=715.09423ff4 SIP/2.0 | 1 ACK |
| 5.719 | caller → agent | INVITE sip:172.16.1.6:5061;transport=tls;did=715.09423ff4 SIP/2.0 | 2 INVITE |
| 5.720 | agent → caller | SIP/2.0 100 Giving it a try | 2 INVITE |
| 42.886 | caller → agent | BYE sip:172.16.1.6:5061;transport=tls;did=715.09423ff4 SIP/2.0 | 3 BYE |
| 42.887 | agent → caller | SIP/2.0 487 Request Terminated | 2 INVITE |
| 42.887 | agent → caller | SIP/2.0 200 OK | 3 BYE |
| 42.887 | caller → agent | ACK sip:172.16.1.6:5061;transport=tls;did=715.09423ff4 SIP/2.0 | 2 ACK |