Setu
Real-time voice translation

Two people.
Two languages.
One conversation.

You speak — a beat later the other person hears it in their language, as text and voice. Then they answer, and you hear them in yours. Six languages — English and five Indian ones — any pair, both ways, about a second and a half per turn, strictly one-to-one.

Email → one-time PIN · works on a phone · speech isn't recorded, sessions aren't stored

Sign in with your email (a one-time PIN) to watch the demo and open the live app.
The problem

Two people, no shared language, one table.

A clinic desk, a shop counter, a site office, a video call between families — the moment two people don't share a language, the conversation stalls into gestures, a third person translating, or an app you pass back and forth one sentence at a time.

Typing apps break the flow

Passing a phone back and forth, tapping, waiting — it turns a conversation into a transaction. Nobody looks up.

Text-only misses the voice

A translated sentence on a screen has no tone. In a real exchange you want to hear the other person answer, not read a caption.

Generic tools aren't built for two

Big translators are one-person, one-direction. A conversation is two people, both directions, at once — a different problem.

The product

Speak. A beat later, they hear you — in their language.

Setu is a room two people join from any browser. Each says which language they speak and which they want to hear. From then on you just talk — Setu listens, translates, and speaks it to the other person, both ways, while showing the text for both of you.

Speak or type

Talk naturally, or type a line / tap a quick phrase — both are translated and spoken to your partner.

See who's there

A partner card shows Online · Speaking · Typing · Muted · Reconnecting · Left, so you always know what's happening on the other end.

See each other new

Turn on video when you want to — camera off by default, the other person accepts or declines. Faces go browser-to-browser while the translated audio keeps flowing.

Built for real rooms

Echo cancellation and noise handling keep the other voice out of your mic; push-to-talk for loud places; a headphone tip when it matters.

Reliable by default

Drops reconnect on their own and keep your transcript and call timer. Replay a line, delete for both, download the whole conversation.

~1.5sspeech → translated voice, per turn
6languages, any pair
2people per room — always
0recordings or transcripts stored

Languages: English, Hindi, Bengali, Tamil, Telugu and Marathi — any pair, both directions. (A non-English pair like Hindi↔Telugu is translated through English behind the scenes, so it's a touch slower.) Turn latency was measured on the beta bridge; speech is turned to text, used once, and dropped.

Architecture

Two browsers, one bridge, a pipeline per speaker.

The page and access gate are static and cloud-hosted. The translation itself runs on a bridge: for each person who speaks, audio flows through voice detection, speech-to-text, translation, and text-to-speech, then arrives at the other person as text and voice.

TWO BROWSERS · PHONE OR LAPTOP Person A — speaks Hindi mic in · translated voice + text out Person B — speaks Telugu mic in · translated voice + text out ACCESS · STATIC, CLOUD-HOSTED Email → one-time PIN gate · signed session · WebSocket ticket Serves the room UI; issues a short-lived ticket so only signed-in people reach the bridge BRIDGE · ONE PIPELINE PER SPEAKER Voice detectSilero VAD — findsthe end of a phrase Speech → textGladia streaming;Groq-turbo fallback TranslateIndicTrans2 local;OpenRouter for code-mix Text → voicePiper — all sixlanguages speak Peer delivery — the other person hears the voice and reads the text Realtime audio over WebSocket · a lightweight HTTP channel carries typing, presence and control
Requirements vs. completion

What was asked for, and what actually got built.

Every row states its own evidence. Where something is roadmap, network-dependent, or deliberately excluded, it says so — a matrix showing everything complete is a matrix nobody believes.

RequirementWhat was built EvidenceStatus
Real-time two-person voice translation A room two people join; each speaks and hears their own language. Peer delivery bypasses the busy path so the listener isn't blocked by their own pipeline.
Strictly one-to-one — no group calls by design.
live on setu.smritiraj.online Built · live
Six languages, any pair, both ways English, Hindi, Bengali, Tamil, Telugu, Marathi — any pair, either way, as text and spoken voice (Tamil included). Non-English pairs route through English internally (a beat slower). all six voiced by Piper Built · live
Fast enough to feel like a conversation Streaming speech-to-text, end-of-speech at 300 ms, translation beam trimmed 5→2, translate + voice moved off the pipeline thread. ~1.5 s/turn on the bridge Built · live
Type, quick phrases, and message actions Type a line or tap a quick phrase (translated + spoken); per-message replay, copy, show-original, rate, and delete-for-both with undo. P0/P1 shipped Built · live
Know what the other person is doing Partner card — Online / Speaking / Typing / Muted / Reconnecting / Left — plus a reconnect grace window and a language-change notice. Phase C, two-account walk Built · live
Device control, captions, notifications, help Mic/speaker picker, large live caption, background-tab chime + unread title, keyboard shortcuts, text-size A−/A+, and an “Audio problem?” quick-fix panel. Phase D, headless walk Built · live
A complete way to end a call Leave confirmation, a “partner left — wait or leave” choice, and an end screen with call duration, download-transcript, rejoin and start-new-call. Phase E · 26 tests + headless walk Built · live
Accessible to keyboard and screen-reader users Focus-trapped dialogs with focus restore, a visible focus ring, AA-contrast greys, an aria-live region announcing partner-status changes, never colour alone. Phase E · WCAG 2.1 AA pass Built · live
See each other on video (optional) An opt-in, camera-off-by-default peer-to-peer video layer: one person starts video, the other accepts or declines, then you see each other's live camera while the translated audio keeps flowing. Video is browser-to-browser (no load on the bridge); camera on/off and end-video included.
Direct P2P connects on same / typical networks; a TURN relay for strict-NAT networks is on the roadmap.
V0+V1 · 15 unit + 11/11 two-user + 10/10 security tests Built · live
Safe to open to beta users Passwordless email → one-time PIN, signed session, a short-lived WebSocket entry ticket, and per-account daily usage caps. Resend + Upstash, live Built · live
Stays reachable if a server fails (beta redundancy) A second, independent bridge runs as a warm standby — same translation models, same shared usage state. Failover is a single endpoint switch (health-aware next). A real cross-host drill confirmed new calls reach the standby in <0.1 s; an in-progress call reconnects rather than migrating. H0.2 cross-host failover drill, 2026-09-16 Beta · validated
Group calls (3+ people) Deliberately excluded. Setu is a one-to-one interpreter. Three or more people is a different product (turn-taking, mixing, who-hears-whom) and is out of scope. scope decision Out of scope
On-device / offline speech-to-text Speech-to-text is a cloud API today (Gladia, Groq fallback). A local Whisper path exists as a stub for a fully-offline bridge. — Roadmap
GPU bridge for sub-second turns Translation and voice run on CPU today. A GPU bridge would push turn latency below a second and raise concurrent-room capacity. — Roadmap

On video connectivity: the peer-to-peer video connects directly on same-network and typical-NAT pairs; a small share of strict-NAT / mobile networks need a TURN relay to connect, which is on the roadmap. Everything above is live on production.

Roadmap

Where it goes next.

ItemNoteState
Real-time two-person translationSpeak/type; six languages, any pair, both waysShipped
Streaming STT + latency tuning~1.5 s/turn; eou 300 ms, beam 2, off-threadShipped
Reliability & ease (P0/P1)One status pill, auto-reconnect, control bar, lobbyShipped
Presence, devices, captions (Phases C–D)Partner card, device picker, notifications, shortcutsShipped
End-call & accessibility (Phase E)Leave confirm, end screen, WCAG 2.1 AAShipped
See each other on video (P2P)Opt-in camera, invite/accept/decline, live peer-to-peer video alongside translated audioShipped
Clearer translated conversationEvery turn shows what was said and its translation together; the speaker and their language are always clear; right-to-left scripts are laid out correctly, ready for languages like Urdu or ArabicShipped
Live speaking feedbackWhile you talk you see Listening → Speaking → Transcribing in one place, so you always know it heard youShipped
Easy microphone on phonesTap to speak — it never listens until you do — with the mic pinned within thumb reach on mobileShipped
TURN relay for videoReliable video across strict-NAT / mobile networksPlanned
Offline / on-device STTLocal Whisper path for a zero-egress bridgePlanned
GPU bridgeSub-second turns, more concurrent roomsPlanned
Group calls (3+)A different product — turn-taking and mixingExcluded
Deployment

Two lanes, one codebase.

The room UI and access gate are static and cloud-hosted the same way in both lanes. What differs is where the translation bridge runs — flipped with environment variables, never a code change.

On-premises bridge this beta

Voice detection, translation and speech stay on your own hardware; speech-to-text is a cloud API. Audio is transient — nothing is stored.

  • Bridge runs under a process manager, restarts on boot
  • Local models: Silero VAD, IndicTrans2, Piper voices
  • Reached over a secure tunnel; the gate issues entry tickets
  • Audio used once and dropped — no recording, no transcript at rest

Cloud twin portable

The same application on a small cloud box, all models behind API endpoints. Nothing to install; up around the clock.

  • Same codebase, flipped with environment variables
  • Translation via a keyless gateway holding the cloud key
  • No local GPU or model download required
  • Right for a hosted, always-on demo

Today the on-premises bridge lane is what's running (models local, speech-to-text in the cloud, exposed through a tunnel). A fully cloud-hosted twin is a supported shape and is partly there already — speech-to-text is cloud — but is not the deployed lane.

Read the story. Now try the real thing.

The demo is the actual application, live now. Open it on two devices, sign in with your email and the one-time PIN it sends, and start talking.