Skip to main content

Speech

The speech component reads the list of voices exposed by the browser's Speech Synthesis API, serialises a stable signature for each one (voiceURI, name, lang, localService, default), sorts the signatures, and hashes the result.

The set of installed text-to-speech voices is highly OS-dependent, which makes this a strong stabilising signal across browsers running on the same machine.

The component waits up to ~800 ms for voices to load (some browsers populate them asynchronously via the voiceschanged event) before producing the result. On browsers without the API, it returns supported: false.

The speech component is excluded by default on Brave and Firefox via the always stabilisation rule, because those browsers vary the voice list across sessions.

Example

"speech": {
"details": {
"voiceCount": 24,
"voicesHash": "..."
},
"hash": "..."
}

Code

Check out the implementation