Skip to content

Add privacy and security mitigations to the Web Speech API - #165

Open
evanbliu wants to merge 9 commits into
WebAudio:mainfrom
evanbliu:Privacy
Open

evanbliu wants to merge 9 commits into
WebAudio:mainfrom
evanbliu:Privacy

Conversation

@evanbliu

@evanbliu evanbliu commented Jun 17, 2025 •

Copy link
Copy Markdown
Collaborator

This PR adds the privacy and security mitigations used by the Writing Assistance APIs to the on-device speech recognition part of the Web Speech API.

Closes #158


Preview | Diff

@evanbliu
evanbliu requested a review from padenot June 17, 2025 17:45
@evanbliu

evanbliu commented Mar 4, 2026

Copy link
Copy Markdown
Collaborator Author

@padenot - I just realized this PR was never merged. Can you please take a look when you get a chance?

Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
@evanbliu
evanbliu requested a review from marcoscaceres March 5, 2026 00:21
@evanbliu
evanbliu requested a review from hoch August 25, 2026 17:59

@hoch hoch left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly nits. Looking good!

Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
- Fix formatting for `true` code span
- Fix typo: 'an per-API' -> 'a per-API'
- Remove redundant Alternate Options subsection
@evanbliu
evanbliu requested a review from hoch September 2, 2026 18:41

@hoch hoch left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly nits, but I do have some questions.

Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Comment thread index.bs Outdated
Review comments addressed:
- install(): add the transient user activation requirement to the
  algorithm so it matches the privacy section's claim. The check is
  keyed off the (masked) availability status so that whether install()
  requires activation cannot itself leak the true download status.
  Document the NotAllowedError rejection and link the privacy bullet to
  the new step.
- Download Masking: drop the vestigial "API" component from the masking
  state tuple.
- Installation-time friction: name the "on-device-speech-recognition"
  policy-controlled feature directly instead of "per-API".
- Disk Space / Runtime Shared Resources: "set to `true`" and
  "a SpeechRecognitionErrorEvent".
- OS-Provided Models: reword to match the Writing Assistance source text
  ("still need to ensure ... even if the user agent has less control"),
  making clear this restates requirements defined elsewhere rather than
  adding an unmarked normative one.

Editorial cleanups of the same classes found while reviewing:
- Remove remaining vestigial multi-API wording ("these APIs") and the
  "UA" abbreviation; spell out "user agent".
- Mark the user-agent transparency "should" in the cloud section per
  this section's <strong> convention; de-2119 developer guidance.
- Nest Download Masking under Language Pack Availability so that
  masking/friction/cancelation/eviction are siblings, as in the source.
- Title-case the "Installation-Time Friction" heading; fix a subject
  shift in the unmasking sentence; strip trailing whitespace.

Also merges upstream/main (needed because WebAudio#200 restructured install()).
@evanbliu
evanbliu requested a review from hoch October 8, 2026 21:00

@hoch hoch left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

Comment thread index.bs Outdated

@padenot padenot left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we know why we can't have this be normal normative requirements, and we're putting them in their own sections? It makes it harder to read no?

Comment thread index.bs Outdated
Comment thread index.bs Outdated
@evanbliu

evanbliu commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator Author

@padenot Done, I moved all the normative requirements into the API Description section (under processLocally, available(), install(), and start()) and marked the privacy and security subsections in Section 3 as non-normative.

@evanbliu
evanbliu requested a review from padenot October 14, 2026 22:24

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Apply privacy and security mitigations used by the Web Translation API to the Web Speech API

5 participants