Overview
The Webreader reads web content aloud using the ABAIR Irish-language TTS API. It highlights text as it plays and is aimed at users with visual impairments, dyslexia, or cognitive fatigue.
The ABAIR API is the only speech backend. There is no browser speech-synthesis fallback, so reading requires an internet connection.
One source tree, two deliverables:
| Deliverable | Runs on | Manifest |
|---|---|---|
| Browser extension | Chrome, Edge, Brave (MV3); Firefox (MV2); Safari (MV2) | manifest.json / manifest-firefox.json / manifest-safari.json |
| Embed widget | Any site via <script src="https://webreader.abair.ie/script.js"> | served by the embed server |
Both share the content scripts, chunker, highlighter, and i18n. Only the host glue differs.
What users get
A draggable floating panel that lets them:
- Read the whole page — Readability extracts the main article and reads it top-to-bottom.
- Read a selection — highlight text, press play.
- Navigate —
Alt+→/←for sentences,Alt+↓/↑for paragraphs. - Control playback —
Alt+]/[for speed,Alt+Wto show or hide the panel. - Watch text highlight as audio plays (background, underline, or outline; colourblind presets).
- Look up Irish words — double-click any word for a Teanglann definition. See Word Lookup.
- Pick voice + dialect — Conamara, Donegal, Kerry, Waterford; male and female.
- Switch UI language between English and Irish.
The extension adds four browser-level shortcuts that work without focusing the panel: Alt+P play/pause, Alt+S stop, Alt+R read selection, Alt+F read the full page. These are declared in the manifest, so users can rebind them on their browser's extension shortcuts page.
The extension exposes a full settings page for highlight style, panel opacity, prefetch, accessibility, and shortcuts. The embed widget exposes a subset via window.WebReaderConfig — see Production → Embed Server.
In the embed widget, the document-level shortcuts (Alt+→, Alt+W, Alt+L and so on) are off by default. They are document-wide and would otherwise take over Alt+← / Alt+→ — Back and Forward on Windows and Linux — on somebody else's website. Site owners turn them on with keyboardShortcuts: true.
How reading works
- Pick a content container (
<main>,<article>, etc.). - Collect readable elements, split each into chunks.
- Send chunks to the TTS API one by one; prefetch the next two.
- Play through the Web Audio API; highlighting tracks back to the DOM via XPath.
If the TTS API is unreachable, playback stops and the panel shows an error. Nothing is read offline.
How a page is marked up directly affects how it sounds — read Architecture before integrating.
Content it cannot read
Some content is out of reach no matter how the page is marked up. PDFs are not supported in any browser. Text inside Shadow DOM or drawn to a <canvas> cannot be highlighted in place. See Unsupported Content for the full list and the reasons.
Google Docs and Word for the web are exceptions that do work, through dedicated adapters — see Hosted Editors.
Useful Links
| Description | Link |
|---|---|
| Production embed | https://webreader.abair.ie |
| Newest widget build | https://webreader.abair.ie/script.js (served from Cloudflare R2; every version stays at its own /vX.Y.Z/ URL) |
| Help-page health check | https://webreader.abair.ie/healthz — help pages only, not the widget |
| GitHub repository | https://github.com/phonlab-tcd/web_reader_extension |
| ABAIR TTS API | https://synthesis.abair.ie/api/synthesise |
| Chrome Web Store listing | (internal — ask the team) |
| Firefox Add-ons listing | (internal — ask the team) |
| Translations Editor | Translations Editor |
Where to go next
| If you're… | Start here |
|---|---|
| Modifying the codebase | Architecture → Extension |
| Adding the widget to another site | Production → Embed Server |
| Debugging or polishing UX | Architecture |
| Shipping a release | Extension (store upload) or Embed Server (one command, ./release.sh) |
Last updated 2026-08-18