v150 · web speech · developer trial
Web Speech API: Unspoken Punctuation
Adds an unspokenPunctuation attribute to the SpeechRecognition interface. When set to true, the speech recognition engine automatically infers and inserts punctuation marks (periods, commas, question marks, etc.) into the transcript — the user doesn't need to say "period" or "comma" out loud.
chrome://flags/#enable-experimental-web-platform-features.
at a glance
| Status in 150 | In developer trial (behind a flag) |
|---|---|
| Flag | chrome://flags/#enable-experimental-web-platform-features |
| Standards position | Firefox: Positive · Safari: No signal |
| Spec | Web Speech API |
| Blink component | Blink>Speech |
| ChromeStatus | 4785284026859520 — Web Speech API: Unspoken Punctuation |
why it exists
Without unspoken punctuation, using speech-to-text for writing tasks requires the user to dictate punctuation explicitly: "Hello comma how are you period". This is unnatural and cognitively taxing. With unspokenPunctuation: true, the recognition engine infers punctuation from speech prosody, pauses, and language models — producing naturally punctuated text without explicit dictation. The feature is analogous to the "automatic punctuation" toggle available in many voice input apps, now accessible to web developers via the Speech Recognition API.
the attribute
| Interface | SpeechRecognition |
|---|---|
| Attribute | unspokenPunctuation |
| Type | boolean |
| Default | false — backwards compatible, no change to existing behaviour |
| Effect | When true, the recognition engine inserts inferred punctuation into transcript results. |
example
const recognition = new SpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = "en-US";
// Enable automatic punctuation insertion
recognition.unspokenPunctuation = true;
recognition.onresult = (event) => {
const last = event.results[event.resultIndex];
const transcript = last[0].transcript;
// Transcript now includes inferred commas, periods, etc.
// "Hello, how are you? I am fine." — punctuation added automatically
document.getElementById("output").textContent = transcript;
};
recognition.start();
With explicit language for better punctuation inference
const recognition = new SpeechRecognition();
recognition.lang = "en-US";
recognition.unspokenPunctuation = true;
recognition.continuous = true;
// The recognition engine uses language-model punctuation inference
// Output example: "I'll be there at 3:00. See you then."
// Instead of: "i'll be there at 3 00 see you then"
browser support
| Chrome | 150 — developer trial (flag required) |
|---|---|
| Edge | Tracking Chromium |
| Firefox | Positive signal |
| Safari | No signal |