HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
kripken
speak.js
C++2012–2018
kripken / speak.js

speak.js

Text-to-Speech in JavaScript using eSpeak

4Distinct people
4Mentions
0Explicit recommenders
1.3KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Text-to-Speech in JavaScript using eSpeak

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year4 dated mentions

Observed mentions: 2012-04-20 00:21:32 UTC to 2018-01-09 14:52:13 UTC.

0122012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2018

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC202
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC000
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101

What Hacker News says

4 sources
This is still somewhat far from what I was hoping to see, but nonetheless a great inspiration and a good start. I worked on an a small Firefox plugin whereby would enable visually impaired users to use firefox and interact with websites using voice. It was a small attempt and it was not an easy task... The two biggest challenges were (1) understand the semantics of the website and (2) interacting with browser. For challenge one, we can look at the case whereby a div/span/css clickable button is used instead of using the <button> tag. Traditional reader has tried its best to figure out how to find these buttons, but nonetheless it still posts a challenge. “alt” attribute is missing in <imh> tag so no description when image goes 404. So wouldn’t it be awesome if we can be more responsible and also provide a standardized markup API so screen
Read the rest
readers can use? So here comes ARIA (Accessible Rich Internet Application) [1]. But even so a lot pf popular websites are not compliant woth ARIA. Furthermore, dynamic contents, single page application, and javascript makes screen reader more difficult to use. As part of the thesis, I worked woth a few visually impaired users. Whether screen readers have evolved I do not know, so I’s love to hear feedback from those on HN. Since this project is intended to run in a browser, so the native choicenis an add-on (which mostly means Javascript). Furtheremore, to protect privacy, I want to do all the speech recognition locally, without leaving the user’s local computer. So I tackled on Gmail and my college’s website first. Parsing Gmail’s DOM was proven to be very difficult, but fortunately, Gmail.js [2] exists - I owe the author so much (although I did help fix a bug I think). Next comes the interaction. The idea is 1. user says to the computer “find the latest email” 2. the computer repeats back to the user 3. a small wait time is given to user a chance to correct the commmand before too late. 4.when time expires the code executes the command Because there is no AI and because we neednto consider states, the best choice (esp for such small experiement), I created a finite state machine. However, the number of states have exploded as expected for just 5-6 (??) commands for single website; clearly neither scalable nOr maintainable. It is unacceptable to limit a user to just a couple actions right? What would be awesome is if every website can expose APIs - not just any API, but follows standard. To start small, we will take sitemap.xml as an inspiration. There should be a manifest file to describe how to login, what are needed to login, is there a “About us” page, how to do search, how to post something and etc. This manifest file is generated on demand and is dynamic since we cannot write out 10,000 different interactions on Facebook righr? Then screen reader or my plugin can read the manifest file, and let user tell us what he/she desires to do, and we look up the manifest on how to make the call. Toapi seems to be heading a similar direction, which is great. The second challenge addon can only do so much. I did have to use the more low-level APIs to do certain thing, and if I remembered correctly service workers weren’t exactly easy back in 2013. Content script has limited capability. Also, there was no speech recognition API in Firefox in 2013, so I turned to speak.js [3] which was the only one that worked offline and has no extra dependencies like nodeJS. There is some support for Web Speech API in Firefox which is encouraging [4]. The take aways are: - we suck at designing a usable website that respects semantics (I am guilty of that on my own silly homepage) - those don’t use ARIA should try. ARIA does not solve everything but it gives a good start - DOM is a horrible place to use to deduce and find contrnts, and a nightmare to interact with - addon has restricted capability for good security reason so not a great idea to implement a complex software - javascript can hinder screen reader from doing its job - honestlt, please stop single page application and please stop hijacking the god damn back button - we hate ads espeically those overlay and popup ads (they cannot be fully blocked even with Chrome’s new feature). But also consider we’d have to unblock ads to load some of the popular websites (ironically HN search will not work on mobile unless Focus is disabled) - finally, would be awesome if there is a way for machine to consime a website or a webpage’s functionality 1. https://developer.mozilla.org/en-US/docs/Web/Accessibility/A... 2. https://github.com/KartikTalwar/gmail.js/tree/master 3. https://github.com/kripken/speak.js/ 4. https://hacks.mozilla.org/2016/01/firefox-and-the-web-speech...
In Toapi – Let any web site provide APIs
Finally found time to implement support for the Web Audio API (AudioContext) and optional export of raw-audio-data. Also the Chinese voices "zh" (Mandarin) and "zh-yue" (Cantonese) are now part of the standard distribution. Thanks to the use of the Web Audio API (which is now the preferred method of playback) it plays fine on Safari/iOS (while it needs some time for processing). With IE11 coming soon and Opera having switched to blink, there should be support for all major browsers (current versions). meSpeak.js is based on eSpeak and speak.js, an Emscripten-port of eSpeak to JS). Many thanks to these projects! http://espeak.sourceforge.net/ https://github.com/kripken/speak.js
In meSpeak.js 1.1 released – TTS for the web (supports iOS)

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.