Browser-local Arabic speech, version 2 — Nabra-7M-Distill

The voice is Nabra-7M-Distill, af_msa, at 24 kHz. Neural inference, vowel
restoration, phonemization, and audio playback happen on the user's device.
Only fixed static engine/model assets download. This engine does not submit
text or generated audio to the network or write them to persistent storage.
There is no installed-system-voice dependency and no remote speech fallback.

Corresponding source, original model sources and conversion/build scripts are
provided as source.tar.gz beside this notice. File versions and hashes are
recorded in assets.json. This notice retains the component licenses below;
it does not replace them or imply that all components have one license.

1. Nabra-7M-Distill model and voice
   Publisher: oddadmix. The pinned model card declares Apache License 2.0.
   Full license: licenses/LICENSE.nabra
   Original model card: licenses/MODEL_CARD.nabra.md
   Source revision: 03b95013d3dcd8be6f0b0412a157d25518c7b756
   https://huggingface.co/oddadmix/Nabra-7M-Distill/tree/03b95013d3dcd8be6f0b0412a157d25518c7b756
   The shipped ONNX graph is converted from kokoro_arabic_7m.pth; af_msa.f32
   retains the original af_msa.pt voice rows. Conversion preserves FP32 weights,
   the original stochastic excitation distribution, and speed 1.0. The local
   graph adds an allocation guard before oversized duration expansion; it
   rejects oversized output instead of truncating the spoken text.
   The voice targets Modern Standard Arabic. Automatic vowel restoration can
   make pronunciation mistakes; this is a listening aid, not a pronunciation,
   grammar, translation or recitation guarantee.

2. Nabra model architecture: Kokoro and StyleTTS2
   Nabra vendors a patched Kokoro 0.9.4 model. Kokoro is Apache-2.0:
   licenses/LICENSE.kokoro
   https://github.com/hexgrad/kokoro
   The upstream Nabra files retain their source adaptation links, including
   StyleTTS2 Modules/istftnet.py, Modules/utils.py, models.py and PLBERT utilities.
   StyleTTS2: Copyright (c) 2023 Aaron (Yinghao) Li, MIT:
   licenses/LICENSE.styletts2
   https://github.com/yl4579/StyleTTS2
   The unchanged pinned Nabra Python source and the local ONNX export changes
   are retained in the source archive for provenance and rebuilding.

3. ONNX Runtime Web 1.29.0
   Copyright (c) Microsoft Corporation. MIT license:
   licenses/LICENSE.onnxruntime
   Original full third-party notices:
   licenses/THIRD_PARTY_NOTICES.onnxruntime
   https://github.com/microsoft/onnxruntime/tree/v1.29.0
   The WASM runtime is served locally. It is configured for one thread and
   WebAssembly SIMD, without WebGPU or cross-origin-isolation requirements.

4. eSpeak NG 1.52.0 — phonemization only
   Copyright Jonathan Duddington, Reece H. Dunn and eSpeak NG contributors.
   GNU GPL version 3 or later: licenses/COPYING.espeak-ng
   https://github.com/espeak-ng/espeak-ng/tree/4870adfa25b1a32b4361592f1be8a40337c58d6c
   Its Arabic/English dictionaries and phoneme tables are compiled from this
   exact source. The custom 32 MiB WASM bridge accepts bounded plain UTF-8 and
   exposes IPA only. It does not enable SSML or phoneme input commands and
   does not generate the spoken waveform. Nabra generates the waveform.

5. Frontend compatibility rules
   phonemizer-fork 3.3.2: Copyright 2015–2021 Mathieu Bernard and contributors,
   GNU GPL version 3 or later: licenses/COPYING.phonemizer
   https://github.com/bootphon/phonemizer
   misaki 0.9.4 EspeakG2P: Apache-2.0: licenses/LICENSE.misaki
   https://github.com/hexgrad/misaki
   The JavaScript adapter reproduces punctuation preservation, stress, IPA
   ties, language-flag removal and symbol replacements. Nabra arabic_g2p.py
   cleanup is ported from the pinned revision above. Latin words and citation
   content are not discarded. Pharyngeals ʕ and ħ retain distinct token IDs.
   Unknown phonemes and oversized sequences are rejected rather than dropped.
   Original reference sources, the adapter and exact-output fixtures are
   included in source.tar.gz. The four voice-comparison passages produce
   byte-identical raw and cleaned phonemes to the Python reference.

6. Arabic vowel restoration JavaScript port
   Copyright 2026 Ampixa. GNU GPL version 3 or later:
   licenses/LICENSE.sanotts
   https://github.com/Ampixa/sanoTTS/tree/18e26b2b365bff41d211e516b0760021451438f1/web/tashkeel
   This port is outside sanoTTS's narrower MIT runtime exception. Only the
   vowel restoration component is used here, not the sanoTTS/Piper voice.
   Editable source is supplied at tashkeel/tashkeel.mjs and in source.tar.gz.

7. libtashkeel vowel restoration model
   Copyright (c) 2023 Musharraf. MIT license: licenses/LICENSE.libtashkeel
   https://github.com/mush42/libtashkeel/tree/9b91c2dbc3dc4085dc4f77a9e250e5dd095d7d0c
   The quantized weights and manifest are the unchanged files supplied by the
   pinned sanoTTS source, whose manifest identifies libtashkeel (MIT) via Piper.
   Local text preparation restores vowels only in Arabic spans, preserves
   supplied diacritics, and leaves non-Arabic content intact.

8. Emscripten and local integration
   The phonemizer is built with Emscripten 6.0.10. MIT and University of
   Illinois/NCSA licenses: licenses/LICENSE.emscripten
   https://github.com/emscripten-core/emscripten/tree/6.0.10
   Local worker, phonemizer bridge, adapter, text-preparation and build wrapper
   are provided under GPL-3.0-or-later with their editable corresponding source.
   Model export modifications are identified separately in their source files.

No warranty. See the complete license texts for each component.
