Credits & licences
OpenRead stands on work by other people. This page lists what the app is built from, and the terms that come with it.
Speech models
VieNeu-TTS v3 Turbo (Pro engine) Phạm Nguyễn Ngọc Bảo (pnnbao97 / pnnbao-ump) · Apache-2.0
Extended Vietnamese engine, FP32 by default with optional INT8, with the SDK's 25 preset voices; models are separate from the app.
Version used: SDK 3.8.3 · 85344322b7258b4e25479b692e8e3396baf9db34 · model 61b85e3d937fbbacb387714180e8182823512523
What OpenRead changed
- Native C++ inference following the pinned SDK, with a Rust frontend. Ported the SDK chunking and pause joining to Swift; added the OpenRead adapter, cancellation, PCM cache and worker QoS scheduling.
- FP32 uses an acoustic ONNX graph exported from the original weights, original backbone and shared-initializer metadata. INT8 uses the author's SDK graphs. Weights are unchanged; model files are SHA-256 verified before loading.
- The 25 preset voices were copied from src/vieneu/assets/voices_v3_turbo.json into a compact JSON file inside the app (codec codes flattened, default voice listed first) — a storage format change, values unchanged. The default voice still uses the anchor shipped in the model pack.
- Added integration for personal voices created from user recordings processed on-device; the author's preset voices are unchanged.
- OpenRead adds at most two or three bounded retries for failed one- or two-syllable selections, still requiring real EOS and PCM checks. Reader groups Vietnamese units below five whitespace-delimited words with adjacent sentences, bounded by three sentences and 96 Unicode scalars (112 for the bounded fallback); weights and preset voices are unchanged.
Note: This license is archived from the pinned source repository, not an independent weight license obtained from the Hugging Face checkpoint.
Shown in the original English. A translation of a licence has no legal force.
MOSS-TTS-Nano (Pro engine) OpenMOSS Team · Apache-2.0
International engine: Chinese, English, Japanese and cross-lingual reading of a few other languages; models are separate from the app.
Version used: code 8b7bcc9341b3b4ef3a3a58ba1338a7d85ff133eb · ONNX f52645cb467506d8e18e746ddd59482685b74e58 · PyTorch 44502f80dbf9743528fa921cc544d662c685ebec
What OpenRead changed
- Native C++ inference running the author's ONNX graphs on CPU, keeping the original prompt and the in-graph sampler. FP32 weights are unchanged, only regrouped so the graphs share memory; added the OpenRead adapter, cancellation, PCM cache and worker QoS scheduling.
- Ported the upstream text normalizer and 75-token chunker to Swift, with a rewritten SentencePiece encoder that reads the author's tokenizer.model directly. Before normalizing, the app strips control-token strings from the input text and converts Traditional Chinese to Simplified.
- The INT8 build is OpenRead's own quantization (ORT dynamic per-channel QInt8) of the author's FP32 graphs and is opt-in only. Voice prompts are the author's presets, unchanged; the 7 Japanese voices are shown under different names in the interface. Model files are SHA-256 verified before loading.
- Added integration for personal voices from user recordings and output checks with bounded regeneration for abnormal silence. Voice processing and synthesis both run on-device.
- OpenRead adds conditional linear gain reduction for sparse PCM overshoot beyond the player limit, admitting peaks up to 1.6 with density, crest and DC bounds. Already-playable PCM and the raw cache remain unchanged; no hard clipping or weight changes.
Note: This license is archived from the pinned source repository. The pinned ONNX model revision on Hugging Face ships no LICENSE file; its model card states Apache-2.0.
Shown in the original English. A translation of a licence has no legal force.
VieNeu-TTS v3 Turbo Phạm Nguyễn Ngọc Bảo (pnnbao97 / pnnbao-ump) · Apache-2.0
The Vietnamese speech model that runs on-device, and the 14 preset voices shipped with it.
Version used: SDK v3.2.3 · 452bf58485a37772d8963a7dfb9e13b0d8288a50 · model 75ff82a72f54d55ed389e1eeb12041d3c4bac7d4
What OpenRead changed
- Uses the int8 ONNX graphs published by the author at the pinned revision — OpenRead did not convert them and did not change the weights.
- Repacked into OpenRead's voice pack (chunked with checksums) for separate download; each file's bytes are unchanged.
- The 14 preset voices were extracted from assets/voices_v3_turbo.json into per-voice .npy files — a storage format change, values unchanged.
- The inference pipeline was reimplemented in C++ for iOS. It is an independent implementation, not a copy of the author's source.
- Added optional ONNX Runtime worker scheduling that follows the synthesis lane's QoS for Pro energy savings; graphs, weights and synthesis algorithms are unchanged.
Note: The pinned Hugging Face model revision ships no LICENSE file of its own. The Apache-2.0 shown here is the licence of the source repository and the model card, not a file taken from that revision.
Shown in the original English. A translation of a licence has no legal force.
MOSS-Audio-Tokenizer-Nano OpenMOSS Team · Apache-2.0
The neural audio codec that decodes generated tokens back into a waveform and encodes recordings for on-device personal voices.
Version used: ceff0d0749bfb3fa2d61149794ec6feef0d1e1ae
What OpenRead changed
- Uses the ONNX graphs published by the author; only repacked into OpenRead's voice pack, weights unchanged. The app decodes with the author's streaming graph in 8-frame windows instead of the one-shot decode graph, so memory does not grow with sentence length; results differ only by floating-point rounding.
Note: The pinned Hugging Face revision ships no LICENSE file. Its model card states Apache-2.0, so the verbatim Apache-2.0 text shown here is the canonical text of that licence — not a file taken from the model revision.
Shown in the original English. A translation of a licence has no legal force.
Supertonic 3 Supertone Inc. · BigScience-OpenRAIL-M
The on-device multilingual speech model used for languages other than Vietnamese; downloaded separately, with 10 preset voices.
Version used: model 3cadd1ee6394adea1bd021217a0e650ede09a323 · gói supertonic-int8w-v1
What OpenRead changed
- The text encoder, vector estimator and vocoder weights were re-stored as int8 (one scale per output channel) and expanded back to fp32 at run time. The duration predictor, configuration and 10 preset voices are byte-for-byte unchanged.
- Repacked into OpenRead's voice pack (compressed, chunked with checksums) for separate download.
- The inference pipeline was reimplemented in C++ for iOS; for Vietnamese the model's predicted duration is scaled by 0.7 at run time (weights unchanged).
- Besides the 10 preset voices, OpenRead distributes additional voices it created (voice style vectors, downloaded separately through its catalog); the model weights are unchanged. See the Common Voice entry.
- For an almost-silent Vietnamese single-word chunk, OpenRead retries once with duration scale 1.0, with signal and cancellation checks. Existing audible output is unchanged; weights, voices and the default duration scale for other chunks are unchanged.
Note: Downloaded separately in the app (Settings → Voice packs → Enhanced multilingual); users must accept the multilingual voice pack terms before downloading: the OpenRAIL-M licence (§4a, §5) requires the Attachment A use restrictions to be a binding term for users. The licence text carries no copyright line; per the model card the copyright holder is Supertone Inc. The training data sources are not disclosed. OpenRead is not affiliated with Supertone Inc.
Shown in the original English. A translation of a licence has no legal force.
Mozilla Common Voice (Supertonic voices) Mozilla Common Voice contributors · CC0-1.0
Voice recordings used to create OpenRead's Supertonic PRO voices; the voices are downloaded separately through the catalog, not shipped in the app.
Version used: Common Voice Corpus 17.0 · cs
What OpenRead changed
- OpenRead optimised Supertonic 3 voice style vectors (style_ttl) to match about 2 minutes of one contributor's recordings; style_dp is taken unchanged from the starting preset voice. No recording is redistributed. Voice names are fictional and not tied to any contributor.
Shown in the original English. A translation of a licence has no legal force.
Model runtime
ONNX Runtime 1.23.0 Microsoft Corporation · MIT
Runs the models on-device.
Version used: iOS 1.23.0 · be835efc56aca19b8e810538ec93c8e150e0fc61
What OpenRead changed
- Uses Microsoft's prebuilt binary, unmodified.
Shown in the original English. A translation of a licence has no legal force.
Libraries
sea-g2p 0.9.1 Phạm Nguyễn Ngọc Bảo (pnnbao97) · Apache-2.0
Text normalization and phonemization for the Pro engine.
Version used: 0.9.1 · dictionary 4346e690d0711ebc5231e7a42c5c88aaf6e40377e894b4617c018fd81c6f4096
What OpenRead changed
- Compiled the vendored Rust source for iOS and added a C ABI preserving emotion tags, sentence normalization and SDK frame limits; does not use the free engine's pronunciation repairs.
Shown in the original English. A translation of a licence has no legal force.
sea-g2p 0.7.20 Phạm Nguyễn Ngọc Bảo (pnnbao97) · Apache-2.0
Grapheme-to-phoneme conversion for Vietnamese, with the sea_g2p.bin dictionary.
Version used: v0.7.20 · 1b9be32f47e3d63919daf2025be586b621f81e02
What OpenRead changed
- Cross-compiled for iOS (aarch64) into an xcframework.
- Added a post-lookup step: words spelled with "tr" get their onset changed from tʃ to tɹ, so the reader distinguishes "tr" from "ch". Upstream sea-g2p merges the two. Set the SEAG2P_UPSTREAM_ONSETS environment variable to disable it and get the author's output verbatim.
- The sea_g2p.bin dictionary is the author's v0.7.20 artefact, not regenerated.
Shown in the original English. A translation of a licence has no legal force.
seag2p_ffi 0.1.0 OpenRead · Apache-2.0
A C wrapper written by OpenRead so Swift/C++ can call sea-g2p.
What OpenRead changed
- The C wrapper and glue are OpenRead's own code, released under the same Apache-2.0 licence. This crate also carries the vendored sea-g2p code; any changes to that code are listed under the sea-g2p 0.7.20 entry.
Shown in the original English. A translation of a licence has no legal force.
Supertonic sample code Copyright (c) 2025 Supertone Inc · MIT
The text normalisation rules applied before the model (character replacement table, emoji removal, spacing around punctuation).
Version used: 1e9799e964ea4c0dad7cde993b65c3c813a7b373 (repo đã archive)
What OpenRead changed
- Ported from Python to Swift; output matches the original on the test sentences.
Shown in the original English. A translation of a licence has no legal force.
Rust libraries
aho-corasick 1.1.4 / 1.1.5 Copyright (c) 2015 Andrew Gallant · MIT OR Unlicense
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
bit-set 0.5.3 Copyright (c) 2016 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
bit-vec 0.6.3 Copyright (c) 2015 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
crossbeam-deque 0.8.7 / 0.8.8 Copyright (c) 2019 The Crossbeam Project Developers · Apache-2.0 OR MIT
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
crossbeam-epoch 0.9.20 / 0.9.21 Copyright (c) 2019 The Crossbeam Project Developers · Apache-2.0 OR MIT
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
crossbeam-utils 0.8.22 / 0.8.23 Copyright (c) 2019 The Crossbeam Project Developers · Apache-2.0 OR MIT
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
either 1.16.0 / 1.18.0 Copyright (c) 2015 · Apache-2.0 OR MIT
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
fancy-regex 0.13.0 Copyright 2015 The Fancy Regex Authors · MIT
Shown in the original English. A translation of a licence has no legal force.
itoa 1.0.18 David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
libc 0.2.189 Copyright (c) The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
memchr 2.8.3 Copyright (c) 2015 Andrew Gallant · MIT OR Unlicense
Shown in the original English. A translation of a licence has no legal force.
memmap2 0.9.11 Copyright [2015] [Dan Burkert] · Copyright (c) 2020 Yevhenii Reizner · Copyright (c) 2015 Dan Burkert · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
once_cell 1.21.4 Aleksey Kladov · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
proc-macro2 1.0.107 David Tolnay; Alex Crichton · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
quote 1.0.47 David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
rayon 1.12.0 Copyright (c) 2010 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
rayon-core 1.13.0 Copyright (c) 2010 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
regex 1.13.1 Copyright (c) 2014 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
regex-automata 0.4.16 / 0.4.18 Copyright (c) 2014 The Rust Project Developers · Apache-2.0 OR MIT
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
regex-syntax 0.8.11 Copyright (c) 2014 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
serde 1.0.229 Erick Tryzelaar; David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
serde_core 1.0.229 Erick Tryzelaar; David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
serde_derive 1.0.229 Erick Tryzelaar; David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
serde_json 1.0.151 Erick Tryzelaar; David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
syn 3.0.3 David Tolnay · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
tinyvec 1.12.0 / 1.13.3 Copyright (c) 2019 Daniel "Lokathor" Gee · Apache-2.0 OR MIT OR Zlib
Version used: Legacy and Pro frontend versions; license files byte-identical.
Shown in the original English. A translation of a licence has no legal force.
tinyvec_macros 0.1.1 Copyright 2020 Tomasz "Soveu" Marx · Copyright (c) 2020 Soveu · Apache-2.0 OR MIT OR Zlib
Shown in the original English. A translation of a licence has no legal force.
unicode-ident 1.0.24 Copyright © 1991-2023 Unicode, Inc · (Apache-2.0 OR MIT) AND Unicode-3.0
Shown in the original English. A translation of a licence has no legal force.
unicode-normalization 0.1.25 Copyright (c) 2015 The Rust Project Developers · Apache-2.0 OR MIT
Shown in the original English. A translation of a licence has no legal force.
zmij 1.0.23 David Tolnay · MIT
Shown in the original English. A translation of a licence has no legal force.
Each component ships with the complete licence and notice files from the exact release used. If you believe anything here is credited incorrectly, please write to us.