Skip to content
RSX Digital | Custom Web Apps, Mobile & AI Solutions UAE
Frontend React · Next.js · Vue · Nuxt · TypeScript · Tailwind · Angular
Backend Node.js · Laravel · Django · FastAPI · .NET · Go · GraphQL
Mobile Swift · Kotlin · React Native · Flutter
AI & data Python · LangChain · OpenAI · Anthropic · pgvector · Whisper
CMS & commerce Custom CMS · WordPress · Shopify · WooCommerce · Strapi · Sanity
Data & cloud PostgreSQL · MySQL · MongoDB · Redis · AWS · Azure · Docker
Every choice on this list has a reason attached to it. Read the stack page
Applied AI

Streaming transcription demos well and ships badly

Why we replaced live streaming with press-and-hold on RetailDirect, and what a stairwell on 4G taught us about latency budgets.

2 min readUpdated 07 Aug 2026
A voice order waveform resolved into basket items
In short

Live streaming transcription looks better in a demo and performs worse on a real network. Press-and-hold sends one clean audio clip, tolerates a dropped connection, and lets the user see and fix the transcript before it commits — which is what actually matters when the output is a grocery order.

The short answer

Streaming transcription keeps a connection open for the length of an utterance, so a momentary signal drop loses the whole thing. Press-and-hold captures one clip, uploads it as a single request that can be retried, and gives the user a moment to correct the transcript before it becomes an order.

The streaming version of RetailDirect\'s voice ordering was the best demo we have ever given. Words appeared as the person spoke. Everyone in the room leaned forward. It lasted about four days in the field.

#What the field looked like

RetailDirect\'s customers order groceries. They do it in lifts, in stairwells, in basement car parks and on the walk between a building entrance and a kerb. These are precisely the places a mobile connection drops for two seconds.

With streaming, two seconds is fatal. The socket closes mid-utterance, the partial transcript is meaningless on its own, and the user has to start the entire order again. They do not, of course. They give up and use the app the way they always did.

#Why press-and-hold survives what streaming does not

Holding a button records locally. The audio exists on the device before anything touches the network. When the user lets go, that clip uploads as one ordinary request — and an ordinary request can be retried, queued, or resumed when signal returns. The user experience of a bad network becomes a spinner for three seconds instead of a lost order.

#The accidental benefit

The change we made for reliability turned out to matter more for correctness. Press-and-hold produces a natural pause: the user has finished speaking, and the transcript appears as a thing to look at rather than a thing scrolling past.

That pause is where they catch "two kilos" heard as "two kilos of" something they did not say. Wrong-item support tickets dropped by roughly two thirds after the switch, and none of that was the transcription model getting better — it was the interface finally giving someone a moment to disagree with it.

#What we budget now

Latency end to end, on a throttled connection, including one retry. Not the model\'s advertised response time, which is measured from the moment the audio arrives and tells you nothing about the four seconds spent getting it there from a basement.

Key takeaways
  • A demo runs on office wifi. Your user is in a lift, a stairwell, or a basement car park.
  • Streaming holds a socket open for the whole utterance; any drop loses the entire order, not the last word.
  • Press-and-hold gives the user a natural confirmation step, which removes a whole class of wrong-order support tickets.
  • Budget latency end to end, including the retry — not just the model's response time.
Next step

Tell us what you're building.

Thirty minutes on a call and you'll leave with a scoped plan, a timeline and a number — whether or not you build it with us.