Show HN: We dropped Go for Rust in our real-time telephony AI media plane
The article discusses the transition from Go to Rust in developing a real-time telephony AI engine called Vivik. The change was driven by the need to meet strict latency requirements for voice interactions, which were not achievable with Go due to garbage collection delays. By separating the system into a control plane using Go and a media plane using Rust, the team significantly improved latency performance.
- ▪The Vivik telephony AI engine requires a latency budget of under 500 ms for effective voice interaction.
- ▪The initial Go implementation faced issues with non-deterministic garbage collection, leading to high tail latency.
- ▪Switching to Rust allowed for deterministic memory behavior and reduced P99 latency from 1,550 ms to 310 ms.
Opening excerpt (first ~120 words) tap to expand
In building Vivik, an execution-grade telephony AI engine, we faced a brutal constraint: the human conversational loop.In psychoacoustics, a delay under 250 ms feels instantaneous. At 500 ms, users notice lag. Beyond 800 ms, conversations start feeling strained, and by 1.5 seconds, the illusion of real-time interaction collapses.That creates an extremely tight latency budget for voice AI:• Network RTT: 50–200 ms • LLM inference: 200–800 ms • TTS synthesis: 100–400 ms • ASR processing: 100–300 msTo consistently stay under a sub-500 ms SLA, the orchestration and media layers themselves must add almost no overhead.We initially built the entire system in Go.
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at Ycombinator.