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

ComponentWhat it does hereLicenceText
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 at https://codeload.github.com/espeak-ng/espeak-ng/tar.gz/0dfd1d77dd7f96ef1ea6856c9fa5cfac01599582. Its emscripten/ 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 in github.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.