Legal
Licences
Everything this site runs in your browser that somebody else wrote is listed here, with the licence it is used under and a copy of that licence served from this site. Nothing on this list is fetched from a third party at any point: every file is copied here when the site is built, checked against a SHA-256 digest recorded in advance, and served from narratorcheck.com.
Components
| Component | What it does here | Licence | Text |
|---|---|---|---|
eSpeak NG, inside phonemizer 1.2.1 |
Turns words into phonemes for the speech model on the three checking-aid pages | GPL-3.0 or later (the engine); Apache-2.0 (the wrapper) | GPL-3.0, Apache-2.0 |
| Kokoro-82M v1.0 (8-bit ONNX) | The synthetic voice on Hear your manuscript and the pronunciation guide | Apache-2.0 | Model card, Apache-2.0 text |
| Whisper tiny.en (8-bit ONNX) | The speech recogniser on proof-listen | MIT (OpenAI’s weights); Apache-2.0 (the ONNX conversion) | MIT |
| ONNX Runtime Web 1.27.0 | Runs both models, on the processor or the graphics card | MIT | MIT |
| Transformers.js 4.2.0 | Prepares audio for Whisper and decodes its output | Apache-2.0 | Apache-2.0 |
| rusty_mp3 0.1.1 | Every MP3 this site decodes or writes | Apache-2.0 | Apache-2.0 |
| PDF.js 6.2.108 | Reads text-based PDF manuscripts on the calculator | Apache-2.0 | Apache-2.0 |
| pdf-lib | Writes the narration script and pronunciation guide PDFs | MIT | MIT |
| fflate 0.8.2 | Opens EPUB and DOCX containers | MIT | MIT |
One file is changed from what its authors published, and it is named here: ONNX Runtime’s WebGPU bridge
(ort-wasm-simd-threaded.asyncify.mjs) builds one internal function from a string of source text,
which this site’s security policy forbids, so that one construct is replaced by an equivalent function
written out in full. Everything else is byte-for-byte what was published.
eSpeak NG and the GPL: the source, and how to get it
eSpeak NG is free software under the GNU General Public License, version 3 or later. It reaches your browser
as the npm package phonemizer version 1.2.1, which contains eSpeak NG compiled to JavaScript with
Emscripten 3.1.30 together with its English pronunciation data. The GPL gives you the right to the complete
source code of that program, and this is where it is.
The package does not say which version of eSpeak NG it was built from, so we worked it out rather than guess:
the 333 language and voice files inside it are byte-for-byte identical to the eSpeak NG repository at commit
0dfd1d77dd7f96ef1ea6856c9fa5cfac01599582 (24 January 2024), which is between the 1.51 and 1.52
releases and matches neither of them. The only
changes between that commit and the next change to those files touch Spanish, the xextan language and the
Android build, none of which is in this package.
-
eSpeak NG source at commit 0dfd1d77
(16.3 MB, sha256
e6b84b52a87b3ad72885331bd942b2adecd70c384fa4ecfbe10aae7d9afd5e21), the same archive GitHub serves athttps://codeload.github.com/espeak-ng/espeak-ng/tar.gz/0dfd1d77dd7f96ef1ea6856c9fa5cfac01599582. Itsemscripten/directory holds the build that produces the JavaScript engine. -
The phonemizer wrapper’s source at commit 6835144b
(1.2 MB, sha256
d829721a393b68e3d904d0783a0551bc60b17b2903638350b5bf473657ff9275), the commit tagged as version 1.2.1 ingithub.com/xenova/phonemizer.js. - The GPL-3.0 text, from the same eSpeak NG commit.
Written offer. For at least three years from the last day this site serves the file
/engine/runtime/phonemizer.js, and for as long as it serves it, anyone may obtain the Corresponding
Source of eSpeak NG as conveyed here at no charge: download it from the links above, or write to
support@narratorcheck.com and we will send it. We have not
modified eSpeak NG or the phonemizer package.
eSpeak NG runs in a worker of its own. It receives a line of text and answers with its phonemes, and nothing else of this site is loaded into that worker; the rest of the site talks to it only through those messages.
What the models are used for
Kokoro and Whisper are checking aids here. Kokoro reads a manuscript back so an author can hear it and tests a respelling for a pronunciation guide; Whisper transcribes a narrator’s recording so it can be compared with the manuscript. Neither is used to narrate a book. Every audio file this site makes with Kokoro is labelled as synthetic inside the file, in its ID3 tag, and on the button that saves it.