Accessibility
2025

The Halting Problem
In a previous post, I wrote about adding read-aloud support to a website we maintain. I mentioned how it was pretty straightforward to do and even easy to get the browser to choose a correct voice that matches the language of the text being spoken. We did, however, hit one puzzling and difficult-to-resolve issue: for large pieces of text to be read aloud, sometimes a browser would simply stop speaking. No errors appeared in the JavaScript console, and querying the speechSynthesis API indicated it was “speaking,” but it wasn’t.

Choosing a Voice for Speech Synthesis
Recently we’ve been adding read-aloud support to a Django website. The tech stack for this site is Django with a bit of jQuery on the front end. The website is used exclusively in the United States, its content is offered in English and Spanish, and the read-aloud support is wanted for forms on the site. So where the site offered, for example: