致谢与许可
OpenRead 建立在他人的工作之上。本页列出应用由哪些部分构成,以及随之而来的条款。
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.
每个组件都随其确切发布版本附带完整的许可证与声明文件。若你发现此处署名有误,请与我们联系。