Licenses and credits
This page lists the license of Cloudy Reader, the licenses of its main components, and the sources of its voices and models. This page is not legal advice.
Cloudy Reader
Section titled “Cloudy Reader”Cloudy Reader is licensed under the Apache License 2.0. The LICENSE file in the repository holds the terms. The app’s copyright line reads “Copyright © 2026 the Cloudy Reader authors.”
The release also bundles GPL components, including piper-tts, jdk4py, and phonemizer-fork. Distributing the app is subject to the licenses of those components.
Bundled components
Section titled “Bundled components”The tables list the main components of the app, with the license that each package’s metadata names for the version in the release. The app also contains smaller supporting libraries, such as those that spaCy depends on, and each keeps its own license.
GPL components
Section titled “GPL components”These components carry a GPL license. The Source column links the PyPI release page of the exact version, which lists the source distribution. PyPI lists no source distribution for jdk4py, so its link opens the project.
| Component | Version | License | Role | Source |
|---|---|---|---|---|
piper-tts |
1.8.0 | GPL-3.0-or-later | Piper voice engine, with espeak-ng phonemization | piper-tts 1.8.0 on PyPI |
phonemizer-fork |
3.3.2 | GPLv3 or later (package classifier) | Phonemization for Kokoro | phonemizer-fork 3.3.2 on PyPI |
jdk4py |
25.0.2.1 | GPL v2 (package classifier) | Java runtime that runs OPSIN | jdk4py on GitHub |
The jdk4py runtime reports itself as OpenJDK Runtime Environment Temurin-25.0.2+10. Its legal/java.base folder holds the GNU GPL version 2 and an ASSEMBLY_EXCEPTION file.
PyInstaller 6.22.3 builds the app. Its license is GPLv2-or-later with a build exception.
LGPL components
Section titled “LGPL components”These components carry an LGPL license. The num2words link opens the PyPI release page, which lists the source distribution. PyPI lists no source distribution for the Qt for Python packages, so that link opens the project’s source repository.
| Component | Version | License | Role | Source |
|---|---|---|---|---|
PySide6-Essentials and shiboken6 |
6.12.0 | LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only | The window | Qt for Python repository |
num2words |
0.5.14 | LGPL | Installed with the Kokoro engine | num2words 0.5.14 on PyPI |
Components under other licenses
Section titled “Components under other licenses”The table lists the other main components in alphabetical order.
| Component | Version | License | Role |
|---|---|---|---|
click |
8.5.0 | BSD-3-Clause | Command-line toolkit that spaCy imports |
en_core_web_sm |
3.7.1 | MIT | English language model for the Kokoro engine |
en_ner_craft_md |
0.5.4 | CC BY-SA 3.0 | Scientific name-detection model, trained on CRAFT |
httpx |
0.28.1 | BSD-3-Clause | HTTP client for lookups and downloads |
inflect |
7.6.0 | MIT | Declared dependency of the app |
misaki |
0.9.4 | Apache License 2.0 | Phoneme markup for Kokoro |
mlx |
0.32.4 | MIT | Runs Kokoro on Apple silicon |
mlx-audio |
0.6.3 | MIT | Kokoro model code |
numpy |
1.26.4 | BSD | Audio arrays in the voice engines |
onnxruntime |
1.31.1 | MIT | Runs Piper voices |
py2opsin |
1.2.0 | MIT | Python wrapper that runs the OPSIN parser |
scipy |
1.17.1 | BSD | Needed by mlx-audio |
spacy |
3.7.5 | MIT | Runtime for the name-detection model |
thinc |
8.2.5 | MIT | Part of the spaCy stack |
transformers |
5.22.1 | Apache License 2.0 | Bundled with the Kokoro engine |
Voices and models
Section titled “Voices and models”Cloudy Reader does not include voice files. At the first launch the app downloads them from Hugging Face repositories, each pinned to one revision:
- rhasspy/piper-voices at
b4e358ffcb232591bf73a540e70f7de528e4174aholds the Piper voices. - mlx-community/Kokoro-82M-bf16 at
a71e4d38b236d968966a2002c4c895dbd12b1c3cholds the Kokoro model and its voices.
The voice files and the Kokoro model are third-party works. They are not part of the Cloudy Reader source, and they keep the terms of their publishers. Read the model card of each repository for those terms.
The name-detection model en_ner_craft_md 0.5.4 ships inside the app. It is the scispaCy CRAFT model, and its license is CC BY-SA 3.0.
Online services
Section titled “Online services”The app can send requests to PubChem, UniProt, and Hugging Face. Each service applies its own terms. See Privacy for what each request contains.
- PubChem answers name lookups for chemical names.
- UniProt answers name lookups for protein and gene names.
- Hugging Face hosts the pinned voice files.
Credits
Section titled “Credits”Cloudy Reader builds on the work of these projects and data sources:
- Piper and its voices, rhasspy/piper-voices: speech for the Piper voices.
- Kokoro-82M, converted for MLX: the Kokoro model and its voices. The voice grades come from the model’s
VOICES.mdfile. - MLX and mlx-audio: they run Kokoro on Apple silicon.
- OPSIN, through py2opsin: the check of systematic chemical names.
- scispaCy: the name-detection model, trained on CRAFT.
- PubChem and UniProt: the name lookups.
- Hugging Face: hosting for the voice files.