Skip to content

Voice AI

Real-time voice, added to a mobile app that already works.

A voice assistant that a person can talk to and be answered in the same breath. We have built exactly this on React Native, including the proxy plumbing the platform quietly requires, without rewriting the app around it.

Is this the right tool

Voice is powerful and easy to over-apply.

Real-time voice is the right call when hands and eyes are busy or speaking is genuinely faster than typing. It is the wrong call when a tap would have done the job.

Reach for it when

  • The user is doing something else with their hands: driving, cooking, exercising, walking, caring for someone.
  • The interaction is conversational by nature, like reflection, coaching, or talking through a problem, where speaking lowers the barrier to using the app at all.
  • Accessibility matters and voice input or output removes a real obstacle for some of your users.
  • Latency can be kept low enough that the reply feels like a conversation, not a walkie-talkie.

Do not use it when

  • A form, a button, or a quick tap is faster and more precise. Voice for its own sake adds friction, not delight.
  • The environment is noisy or public, where people will not or cannot speak to their phone.
  • The task needs exact input (numbers, codes, names) that speech recognition will mangle and the user will have to correct anyway.
  • You cannot budget for the latency and the always-on token cost that real-time audio carries.

Skip voice if a well-placed button already does the job. The strongest voice features are the ones where typing was never realistic in the first place. If you are adding voice because it demos well, that is not a reason your users will feel.

How we build it

How real-time voice actually goes together on React Native.

Voice AI on mobile is less about the model and more about the audio path and the transport. That is where the real engineering lives, and where most first attempts stall.

The real-time model

On Epiphra we used the Gemini Live API with the native-audio model, streaming PCM audio at 16kHz in and 24kHz out with selectable HD voices. Bidirectional native-audio models answer as the user speaks, which is what makes the exchange feel like talking rather than sending a message and waiting.

The proxy that React Native needs

This is the part most teams hit and did not expect. React Native's WebSocket implementation is not compatible with the Live API, so a thin Node and Socket.IO proxy bridges the app to the model's WebSocket. We built that proxy on Epiphra; without it, real-time voice on RN simply does not connect.

Transcription, both ways

Live input and output transcription lets the user read what was heard and what was said, which matters for trust and accessibility. We pair the model's own transcription with on-device speech recognition (expo-speech-recognition) so the caption path is resilient.

Turn-taking and interruption

A voice UI has to know when the user started talking, when to stop its own audio, and how to recover from a dropped connection mid-sentence. Getting barge-in and reconnection right is what separates a demo from something a person will use twice.

Trade-offs and failure modes we design around

  • Latency is the whole product: a voice reply that lands a second late feels broken. The proxy hop, the network, and the model all add delay, so we budget it end to end, not per component.
  • The proxy is infrastructure you now run: a real-time voice feature means a live socket server with its own uptime, scaling, and cost, not just an API key.
  • Multilingual voice is not free: on Epiphra the UI shipped in six languages, but the live voice conversation ran English-only. We are explicit about that gap rather than implying every language works out loud.
  • Cost accrues while the mic is open: real-time audio bills for the whole session, not per message, so an idle open connection is still spending. We close and resume sessions deliberately.

What it costs to run

Roughly what real-time voice costs to run.

Voice AI has a different cost shape than text. Real-time audio models bill for the duration of the session and the audio in both directions, so the meter runs the whole time a conversation is open, not once per message. A feature where people hold long conversations costs more than one built around short, purposeful exchanges.

On top of the model you are running the proxy: a socket server that stays up, scales with concurrent conversations, and carries its own hosting cost. That is a fixed line that grows with simultaneous users, and it is easy to forget when you only price the model.

We size this against your expected concurrent sessions and average conversation length before building, so the number is a decision you made rather than a bill you discover. The same cost-model formula we use for token spend applies to voice minutes.

Read the mobile AI cost model

Proof

Real-time voice we have actually shipped.

We are precise here: our production voice-AI example is one app, and we will not pad the list with things that are not really voice AI.

Epiphra

Inseed client, led by our founder

A live AI reflection companion you can talk to. We built the real-time voice assistant on the Gemini Live API: bidirectional native-audio conversation with selectable HD voices, live input and output transcription, and the Node and Socket.IO proxy that bridges React Native to the Live API's WebSocket. Our founder led the architecture; the Inseed team implemented the production app.

  • Gemini Live native-audio, PCM 16kHz in / 24kHz out, HD voices
  • Node + Socket.IO proxy bridging RN to the Live WebSocket
  • Live input and output transcription; live on both stores

VocalMD

Built by our founder

Not AI voice, but real-time voice at production scale, which is the harder half of the plumbing. A HIPAA telehealth app where our founder integrated in-app voice and video calling (GetStream) and a native masked-calling bridge (Doximity Dialer) so patients could call doctors without exposing a real number. Live for over two years.

  • In-app real-time voice and video via GetStream
  • Custom native RN bridge to the Doximity Dialer iOS SDK
  • Live in production for 2+ years

Straight answer on the gap: Epiphra is our one production real-time AI-voice feature. VocalMD proves we can ship real-time voice infrastructure on React Native, but its calling is human-to-human, not a voice model. If your product needs voice AI, we would prototype it against your use case in the audit before you commit to a build, rather than pointing at a pile of demos.

FAQ

Voice AI questions, answered straight.

Why do I need a proxy server for voice on React Native?

Because React Native's built-in WebSocket does not speak the protocol the real-time voice APIs expect. On Epiphra we bridged the app to the Gemini Live API with a thin Node and Socket.IO proxy. It is a small server, but it is not optional: without it the app cannot hold a live audio connection to the model. Any real-time voice feature on RN carries this piece of infrastructure.

How low can the latency really go?

Native-audio models that stream both directions can feel conversational, answering while the user is still finishing a sentence. The delay you feel is the sum of the network, the proxy hop, and the model, so we budget latency end to end and test on real devices and real networks, not just a fast office connection. If latency cannot be kept conversational for your users, we will tell you before building.

Will it work in every language?

The interface can be localized broadly; the spoken conversation is a separate question. On Epiphra the UI shipped in six languages while the live voice ran English-only. We are explicit about which languages work out loud for a given model rather than implying the voice speaks everything the UI does.

Can you add voice to my existing app without rebuilding it?

Yes. The voice assistant is a feature and a proxy that sit beside your app, not a rewrite of it. Your existing screens, auth, and data stay where they are, and the voice layer talks to the model through the proxy. That is the same "no rewrite" approach we take to every AI integration.

Thinking about adding voice to your app?

30 minutes, free. We will tell you honestly whether voice earns its place for your users, what the latency and cost look like, and what we would prototype first. Shuhel will be on the call.

Book a 30-minute call