Skip to main content

Browser support and manual checks

GlyphFlow's initial target is desktop Chrome with English text and a voice that emits word boundary events. Voice behavior also depends on the operating system and installed voice.

EnvironmentStatusWhat to expect
Desktop Chrome, English, word-boundary voiceInitial targetSpeech and the inside-word wipe work when the browser starts the voice and emits boundaries.
Desktop Chrome, voice without word boundariesLimitedSpeech may play, but the synchronized wipe is unavailable; GlyphFlow reports unsupported when playback ends.
Other desktop browsersNot yet characterizedWeb Speech behavior varies; verify the selected browser and voice manually.
Mobile browsers and non-English textOutside v0.1 support targetNo compatibility guarantee yet.

At startup, call getSpeechSynthesisSupport() to identify environments without the Web Speech API. This only checks API availability. A browser can expose the API but fail to start a particular utterance; GlyphFlow waits for the browser's start event and reports error if it does not arrive within 10 seconds. A voice also needs usable word boundaries for synchronized captions.

Speech synthesis is a shared browser queue. cancel() calls the browser's global speechSynthesis.cancel(), which may also stop speech started by other code on the page. Applications that use multiple speech features should coordinate ownership of that queue.

Run npm run demo with the browser and voice you intend to support. At rate 1.0, check:

CheckExpected result
Start playbackAudible speech begins and state changes from starting to speaking.
Inside-word motionColour advances continuously through each glyph, not as a whole-word flash.
Pause and resumeThe current wipe holds, then resumes without a jump.
Text fidelityRepeated words, punctuation, spaces, and line breaks remain aligned.
Missing boundariesPlayback ends with unsupported, rather than implying measured synchronization.
No browser startState becomes error after 10 seconds instead of remaining speaking.