v139 · Web APIs · demo

Privacy Architecture Comparison

Trace exactly what happens to your audio in the classic cloud path versus the new on-device path — and what each means for user privacy and application design.

Classic path — Cloud recognition
🎤
Microphone captures audio
Raw PCM audio stream starts in browser memory.
Audio encoded & sent to Google servers
The audio is compressed and transmitted over HTTPS to Google's speech recognition infrastructure.
data leaves device
🏢
Server-side transcription
Google's ASR model processes the audio. Transcription accuracy is typically higher but involves Google's infrastructure.
network required
📝
Transcript returned to browser
The text result is sent back. Round-trip latency adds 200–800ms for typical connections.
Chrome 150+ — On-device recognition
🎤
Microphone captures audio
Raw PCM audio stream starts in browser memory — same as before.
🔒
Local ASR model processes audio
The browser's built-in on-device model transcribes audio entirely in the browser process. Audio never leaves the device.
stays on device
Transcript available immediately
No network round-trip. Interim results are available faster for short utterances.
no network needed
📝
Same API result delivered
The SpeechRecognitionResult object looks identical to the cloud path — no code changes required.
same interface

Feature comparison

Characteristic Cloud recognition On-device (Chrome 150+)
Audio leaves device? Yes — sent to Google No — stays local
Internet required? Yes No
Latency +200–800ms network RTT Lower for short phrases
Accuracy High (large cloud model) Good (compact on-device model)
Supported platforms All Chrome platforms Windows, macOS, Linux (Chrome 150)
Code change needed? None — same SpeechRecognition API
Works offline? No Yes
// The JavaScript API is identical in both modes
const recognition = new webkitSpeechRecognition();
recognition.lang = 'en-US';
recognition.interimResults = true;

// Chrome 150+ will automatically choose on-device
// processing when available for the requested language
// and on a supported platform (Windows/Mac/Linux).
// Developers don't need to opt in — it's transparent.

recognition.onresult = event => {
  // Same result format regardless of cloud or on-device
  const text = event.results[event.results.length - 1][0].transcript;
  console.log(text);
};

recognition.start(); // 🔒 stays on device in Chrome 150+

see also

scenario focus

Select a scenario to focus its rendered example and summary.