# NewsFlow local speech notices

NewsFlow uses the Kokoro v1.0 model and the stock American English `am_michael`
voice to generate speech on the OnePass server. The model, voice and speech
engines are not sent to the browser. Downloadable MP3s contain generated speech,
not copies of these software packages. Source-content credits and permissions
continue to apply to the text being read; a speech-model licence does not grant
rights to news articles, personal information or third-party voices.

## Model and voice

- Model author/publisher: [hexgrad/Kokoro-82M](https://huggingface.co/hexgrad/Kokoro-82M),
  source revision `f3ff3571791e39611d31c381e3a41a3af07b4987`, Apache 2.0.
- ONNX conversion: [onnx-community/Kokoro-82M-v1.0-ONNX](https://huggingface.co/onnx-community/Kokoro-82M-v1.0-ONNX),
  revision `1939ad2a8e416c0acfeecc08a694d14ef25f2231`, Apache 2.0.
  OnePass uses the upstream, unmodified `onnx/model_quantized.onnx` (q8) file.
- Stock voice: `am_michael`, supplied by `kokoro-js@1.2.1`. Its bytes match
  `voices/am_michael.bin` in the pinned ONNX repository. No custom voice cloning
  is used. Other packaged voices are not enabled in NewsFlow.
- [manifest.json](./manifest.json) records the exact model, tokenizer/config and
  selected voice byte lengths and SHA-256 values. The build downloader and
  offline readiness check verify those values.

The full [Apache 2.0 licence](./APACHE-2.0.txt), upstream
[model card](./MODEL-CARD.txt), [voice documentation](./MODEL-VOICES.txt) and
[ONNX model card](./ONNX-MODEL-CARD.txt) are retained as plain-text reference
copies. The upstream examples and remote media links are not additional assets
used by NewsFlow. No upstream names or trademarks imply endorsement of OnePass.

### Upstream model credits

Kokoro credits Li et al. and [StyleTTS 2](https://github.com/yl4579/StyleTTS2)
for its architecture and `@rzvzn` for training. Its model card identifies these
training-data credits, which OnePass preserves without claiming an independent
audit of the training dataset:

- [Koniwa `tnc`](https://github.com/koniwa/koniwa): less than one hour of training
  audio, [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/).
- [SIWIS](https://datashare.ed.ac.uk/handle/10283/2353): less than eleven hours
  of training audio, [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).

## Software

| Component | Pinned source | Licence and retained notices |
| --- | --- | --- |
| `kokoro-js` 1.2.1, hexgrad and contributors including Xenova | [664c76a704021239ba59c84dcbaa4d3dece01fe9](https://github.com/hexgrad/kokoro/tree/664c76a704021239ba59c84dcbaa4d3dece01fe9/kokoro.js) | [Apache 2.0](./APACHE-2.0.txt) |
| `@huggingface/transformers` 3.8.1, Hugging Face and contributors | [2ec882e739e4cb461f8d440d4d7394cbf5372429](https://github.com/huggingface/transformers.js/tree/2ec882e739e4cb461f8d440d4d7394cbf5372429) | [Apache 2.0](./TRANSFORMERS-APACHE-2.0.txt) |
| `onnxruntime-node` 1.21.0, Microsoft Corporation and contributors | [e0b66cad282043d4377cea5269083f17771b6dfc](https://github.com/microsoft/onnxruntime/tree/e0b66cad282043d4377cea5269083f17771b6dfc) | [MIT](./ONNXRUNTIME-MIT.txt) and [upstream third-party notices](./ONNXRUNTIME-THIRD-PARTY-NOTICES.txt) |
| `phonemizer` 1.2.1, Xenova and contributors | [6835144b7ee9043129222549c1ed2f6a27216278](https://github.com/xenova/phonemizer.js/tree/6835144b7ee9043129222549c1ed2f6a27216278) | [Apache 2.0 wrapper](./PHONEMIZER-APACHE-2.0.txt); includes eSpeak NG code under [GPL 3.0](./GPL-3.0.txt) |
| `@breezystack/lamejs` 1.2.7, Alex Zhukov and contributors; LAME contributors | [1fb0ef5fa177413107e2e107d054a9b994e3f79c](https://github.com/shijinyu/lamejs/tree/1fb0ef5fa177413107e2e107d054a9b994e3f79c) | [LGPL 3.0](./LGPL-3.0.txt), the incorporated [GPL 3.0](./GPL-3.0.txt), and [upstream LAMEJS notice](./LAMEJS-UPSTREAM-LICENSE.txt) |

The packages retain their own copyright notices. Full release dependency
inventory and licence review also cover transitive packages; this page records
the speech components and does not replace that inventory.

### Copyleft components and distribution

The `phonemizer` package's Apache wrapper does not replace the GPL licence of
the eSpeak NG code it embeds. [eSpeak NG](https://github.com/espeak-ng/espeak-ng)
is used for phoneme conversion. [LAME](https://lame.sourceforge.io/) and the
LAMEJS port are used for MP3 encoding. These components operate on the server.
Ordinary network use is not conveyance under GPL 3.0; no GPL/AGPL network-source
condition is claimed for these GPL 3.0 components. Generated audio does not
become GPL-licensed merely because a GPL program processed it.

If a binary, library, container or browser bundle containing those components
is conveyed to another recipient, including through a private or public registry,
its distributor must satisfy
the applicable GPL/LGPL terms, including corresponding source and any required
relinking/replacement materials. These licence texts and upstream source links
alone are not a substitute for complete corresponding source where required.
Do not repackage the phonemizer as an Apache-only browser library. The LGPL
encoder remains a separate, unmodified dependency; proprietary application
licensing does not override users' applicable LGPL rights.
Registry privacy alone does not determine whether conveyance occurred; evaluate
the actual recipients and hosting arrangement under the applicable licence.

## Integrity and changes

The model, voice, tokenizers/configuration and listed upstream licence/reference
copies are unmodified. OnePass supplies its own integration code, build-time
asset downloader, this notice and manifests. [sources.json](./sources.json)
records the source locations and SHA-256 of the retained reference copies;
the frozen package-manager lockfile records software package integrity.
The speech asset downloader does not use a floating `main` revision or download
models during runtime readiness checks.
