Acrossby SZ

Private, real-time voice translation across every language Gemini Live speaks. Press once — both transcripts keep growing.

Open AcrossLive at across.sz.ws
Private password, or bring your own Gemini key

International Bartender AssociationReal footage — live English ↔ Traditional ChineseIBA “Train the Trainer” class · Kaohsiung

One interaction

Pick your two languages and start listening. Original on the left, translation on the right; translated speech can be muted — the text never stops.

Audio never touches the server

The browser streams microphone PCM straight to Gemini Live. The Worker only signs short-lived tokens — transcripts and audio are never stored.

Captions that follow you

Picture-in-picture captions float above any app, and a cumulative Markdown summary refreshes every ten minutes.

How it's built

The expensive, long-running part — audio — never touches the server. The browser streams straight to Gemini Live; Cloudflare only signs tokens and writes summaries.

16kHz

mic in

24kHz

speech out

60s

token deadline

~6s

reconnect buffer

10min

summary cadence

Microphone

16 kHz PCM · AudioWorklet

Gemini Live

direct WebSocket — no proxy

Transcripts + 24 kHz speech

scheduled, gapless playback

Cloudflare Worker never touches the audio — it signs single-use 60-second tokens and writes a cumulative summary every ten minutes.

Audio goes straight to Google

Microphone PCM streams from the browser to Gemini Live over WebSocket. The Worker issues the token but never proxies a single audio frame.

Short-lived, single-use tokens

Each ephemeral token works once, must start a session within 60 seconds, and locks the model and target language server-side.

A Taiwan Traditional pipeline

OpenCC converts Simplified to Taiwan Traditional lazily, appending only the new delta so re-conversion never duplicates text; sentences break on 。!? and .?!

Nothing is stored

Transcripts, audio and summaries live only in page memory. Refresh clears everything; localStorage keeps just UI preferences.