v150 · 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.
live speech privacy probe
Check the Web Speech surface in this document, then highlight the architecture that this browser can use for the selected language pack.
Probe has not run yet.
- Recognition constructor
- Not checked
- Local processing flag
- Not checked
- Language pack APIs
- Not checked
- Selected pack status
- Not checked
- Permissions Policy
- Not checked
- Network fallback
- Not checked
Run the probe to see constructor support, local-processing controls, language-pack status, and policy fallback notes.
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
same interface
SpeechRecognitionResult object looks identical to the cloud path. Set processLocally when the app requires local-only processing.Feature comparison
| Characteristic | Cloud recognition | On-device (Chrome 150+) |
|---|---|---|
| Audio leaves device? | Yes — sent to Google | No — stays local |
| Internet required? | Yes | No after the language pack is installed |
| 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? | — | Set processLocally and check the pack status |
| Works offline? | No | Yes, once the chosen pack is available |
// The result API is identical in both modes
const Recognition = window.SpeechRecognition || window.webkitSpeechRecognition;
const recognition = new Recognition();
recognition.lang = 'en-US';
recognition.interimResults = true;
// Chrome 150+ can require local processing for privacy-sensitive flows.
if ('processLocally' in recognition) {
recognition.processLocally = true;
}
const packStatus = await Recognition.available?.({
langs: [recognition.lang],
processLocally: true,
quality: 'dictation',
});
if (packStatus === 'downloadable' || packStatus === 'downloading') {
await Recognition.install?.({
langs: [recognition.lang],
processLocally: true,
quality: 'dictation',
});
}
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();