Intent to Ship: Web Speech API contextual biasing

354 views
Skip to first unread message

Chromestatus

unread,
Jul 9, 2025, 2:10:30 PMJul 9
to blin...@chromium.org, ev...@google.com, y...@google.com

Contact emails

y...@google.com, ev...@google.com

Explainer

https://github.com/WebAudio/web-speech-api/blob/main/explainers/contextual-biasing.md

Specification

https://webaudio.github.io/web-speech-api/#speechreco-phraselist

Design docs


https://docs.google.com/document/d/1AW9DxKYNfnt_wruxmd-_M1islS-MgsUVpaNBen-XvHk

Summary

This feature enables websites to support contextual biasing for speech recognition by adding a recognition phrase list to the Web Speech API. Developers can provide a list of phrases as well as updating them to apply a bias to the speech recognition models in favor of those phrases. This helps improve accuracy and relevance for domain-specific and personalized speech recognition.



Blink component

Blink>Speech

Search tags

speech, recognition, local, offline, on-device, contextual, biasing

TAG review

None

TAG review status

Pending

Risks



Interoperability and Compatibility

None



Gecko: Positive (https://github.com/mozilla/standards-positions/issues/1255)

WebKit: No signal (https://github.com/WebKit/standards-positions/issues/517)

Web developers: No signals

Other signals:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

None



Debuggability

None



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?

No

Initially supported on Windows, Mac, and Linux with ChromeOS support to follow.



Is this feature fully tested by web-platform-tests?

Yes

https://wpt.fyi/results/speech-api?label=experimental&label=master&aligned



Flag name on about://flags



Finch feature name

WebSpeechRecognitionContext,OnDeviceWebSpeech,OnDeviceWebSpeechAvailable

Rollout plan

Will ship enabled for all users

Requires code in //chrome?

False

Estimated milestones

Shipping on desktop 140


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

None

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5225615177023488?gate=4780829605363712

This intent message was generated by Chrome Platform Status.

Daniel Clark

unread,
Jul 9, 2025, 8:12:30 PMJul 9
to Chromestatus, blin...@chromium.org, ev...@google.com, y...@google.com

> Design docs
> https://docs.google.com/document/d/1AW9DxKYNfnt_wruxmd-_M1islS-MgsUVpaNBen-XvHk

I don’t have access to this document. Could it be made available to non-Googlers?

> TAG review
> None

Can you say why no TAG review?


I dont see Gecko taking any position on that thread.
Thanks for engaging with Marcos feedback on the WebKit thread. It looks like most of his feedback has now been addressed, so you might consider sending a ping giving that update, with the context that youre now requesting this to ship in Chromium.

> Is this feature fully tested by web-platform-tests?
> Yes

I couldn’t find much test coverage at this link for this addition -- just the one line in https://github.com/web-platform-tests/wpt/blob/master/speech-api/SpeechRecognition-basics.https.html that confirms the phrases​ array exists and is initially empty. I did see there was an end-to-end manual test at https://github.com/web-platform-tests/wpt/blob/master/speech-api/SpeechRecognition-phrases-manual.https.html which is great. Maybe theres more that can be added as automated coverage though? For example an automated WPT could check that SpeechRecognitionPhrase​s can be constructed, that they can be assigned to phrases​, that boost​ values outside of the 0.0-10.0 range throw errors, etc.

Thanks,
Dan

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/686eb087.2b0a0220.3a1521.0f8f.GAE%40google.com.

Evan Liu

unread,
Jul 10, 2025, 3:59:03 PMJul 10
to Daniel Clark, Chromestatus, blin...@chromium.org, y...@google.com
Hi Dan,

Thank you for the thoughtful feedback. Addressing your points:

Design Doc Access: The original document contains some internal information that can't be shared. I've created a public version of the design document that you can access here: https://docs.google.com/document/d/1CBH4r6rxSryY28hOhBQC-DZgjwWbO-FRYg_bbJIfBFo

TAG Review: Given the relatively small scope of this API addition, I initially didn't think a TAG review was necessary. However, I'm happy to request one if you think it would be beneficial.

Gecko Position: We've been working closely with Mozilla on this design (pad...@mozilla.com is a collaborator on the spec change). I can ask him to add a formal position to the thread to make it official.

WebKit Feedback & WPT Coverage: Thanks for the suggestion. I've just updated the WebKit thread to reflect the latest changes.

Regarding test coverage, the end-to-end tests are currently manual because the test environment has limitations in accessing the necessary on-device models. I'll look into ways to improve our automated test coverage and will add more tests for edge cases and error handling.

Thanks,

Evan

Dan Clark

unread,
Jul 14, 2025, 2:31:35 PMJul 14
to blink-dev, ev...@google.com, Chromestatus, blin...@chromium.org, y...@google.com, Dan Clark
(re-sending from the correct account)

Thanks for these updates!

I think it's kind of borderline whether there's enough complexity here to merit a TAG review. My preference is to go ahead and request one in case they do have feedback.

-- Dan


Dan Clark

unread,
Jul 14, 2025, 2:31:46 PMJul 14
to blink-dev, Evan Liu, Chromestatus, blin...@chromium.org, y...@google.com, Daniel Clark
Thanks for these updates!

I think it's kind of borderline whether there's enough complexity here to merit a TAG review. My preference is to go ahead and request one in case they do have feedback.

-- Dan

Evan Liu

unread,
Jul 14, 2025, 4:00:41 PMJul 14
to Dan Clark, blink-dev, Chromestatus, y...@google.com, Daniel Clark
Sounds good, I've opened a TAG issue for this here: https://github.com/w3ctag/design-reviews/issues/1121

Please let me know if you have any other feedback!

Sangwhan Moon

unread,
Jul 15, 2025, 4:11:23 AMJul 15
to Evan Liu, Dan Clark, blink-dev, Chromestatus, y...@google.com, Daniel Clark, jyas...@chromium.org
Drive by curiosity question: 

Have you considered a dictionary for SpeechRecognitionPhrase?

If mutating individual SpeechRecognitionPhrase instances in SpeechRecognition.phrase is an intended use case and also has side-effects, I recon this wouldn't be desirable - but curious if that was considered.

Also, the ergonomics of modifying the phrase list seems inconvenient (if it is an intended use case) - e.g. unboost and boost a specific phrase would require a sweep to find the phrase if I am understanding the explainer correctly..

(Likely something the TAG might bring up too)

On Jul 15, 2025, at 5:00, 'Evan Liu' via blink-dev <blin...@chromium.org> wrote:



PhistucK

unread,
Jul 15, 2025, 9:50:55 AMJul 15
to Sangwhan Moon, Evan Liu, Dan Clark, blink-dev, Chromestatus, y...@google.com, Daniel Clark, jyas...@chromium.org
Does this basically supersede SpeechGrammar?


PhistucK


Evan Liu

unread,
Jul 15, 2025, 3:49:57 PMJul 15
to PhistucK, Sangwhan Moon, Dan Clark, blink-dev, Chromestatus, y...@google.com, Daniel Clark, jyas...@chromium.org
Have you considered a dictionary for SpeechRecognitionPhrase?
Early versions of this design included creating a SpeechRecognitionPhraseList interface as well as a SpeechRecognitionContext to encapsulate the contextual biasing phrases. The latest consensus is to accept a suggestion from dom...@chromium.org to use an ObservableArray<SpeechRecognitionPhrase>.

Does this basically supersede SpeechGrammar?
SpeechGrammar has been deprecated in the Web Speech API spec. While the API implementation in Chrome supports SpeechGrammar, this never actually did anything as the backend speech recognition service didn't support the functionality. See the following issues/PRs for more context around this deprecation:
https://github.com/WebAudio/web-speech-api/pull/32

Yoav Weiss (@Shopify)

unread,
Jul 23, 2025, 10:44:24 AMJul 23
to blink-dev, ev...@google.com, Sangwhan Moon, Dan Clark, blink-dev, Chromestatus, y...@google.com, dan...@microsoft.com, Jeffrey Yasskin, PhistucK
How likely are different implementations to implement their reaction to different "boost" values similarly?
If I test my game with a "Zoltan" character (from the explainer's examples) in different implementations with the same "boost" values, am I likely to get similar results?

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Evan Liu

unread,
Jul 23, 2025, 2:27:15 PMJul 23
to Yoav Weiss (@Shopify), blink-dev, Sangwhan Moon, Dan Clark, Chromestatus, y...@google.com, dan...@microsoft.com, Jeffrey Yasskin, PhistucK, Paul Adenot
I don't think there are any technical limitations that would prevent other implementations from conforming to how the behavior is specified in the spec. We can add more WPT test cases for different phrases and boost values, but I would caution against constraining the underlying models too much because the speech recognition results may potentially change as models improve over time.

+pad...@mozilla.com is currently working on the Firefox implementation and may have other thoughts on this.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

Evan Liu

unread,
Aug 5, 2025, 7:28:53 PMAug 5
to Yoav Weiss (@Shopify), blink-dev, Sangwhan Moon, Dan Clark, Chromestatus, y...@google.com, dan...@microsoft.com, Jeffrey Yasskin, PhistucK, Paul Adenot
Hi all,

The TAG review for this has been completed. Please let me know if anyone else has any questions or concerns.

Thanks,
Evan

Chris Harrelson

unread,
Aug 6, 2025, 11:16:03 AMAug 6
to Evan Liu, Yoav Weiss (@Shopify), blink-dev, Sangwhan Moon, Dan Clark, Chromestatus, y...@google.com, dan...@microsoft.com, Jeffrey Yasskin, PhistucK, Paul Adenot

Yoav Weiss (@Shopify)

unread,
Aug 6, 2025, 11:25:49 AMAug 6
to blink-dev, Chris Harrelson, Yoav Weiss, blink-dev, Sangwhan Moon, Dan Clark, Chromestatus, y...@google.com, dan...@microsoft.com, Jeffrey Yasskin, PhistucK, pad...@mozilla.com, ev...@google.com
LGTM2

I'm not 100% convinced that the "boost" levels would be fully interoperable, but it may be hard to make them so, so I'm not sure that concern is practical to address. If y'all have ideas to increase its interoperability (by documenting more of what it does in the spec, or something similar), I think it'd be useful.

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Dan Clark

unread,
Aug 6, 2025, 11:31:54 AMAug 6
to blink-dev, yoav...@chromium.org, Chris Harrelson, blink-dev, s...@chromium.org, Dan Clark, Chromestatus, y...@google.com, Dan Clark, jyas...@chromium.org, PhistucK, pad...@mozilla.com, ev...@google.com
LGTM3, and +1 to Yoav's comment.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
Reply all
Reply to author
Forward
0 new messages