Nabra-7M-Distill (ONNX)
ONNX export of oddadmix/Nabra-7M-Distill, a 7.48M-parameter
Arabic (MSA) text-to-speech model. These files are used by the nabra-tts npm package,
which runs the model fully client-side with ONNX Runtime Web (WebGPU / WASM).
npm i nabra-tts
import { NabraTTS } from 'nabra-tts';
const tts = await NabraTTS.load();
const { audio, sampleRate } = await tts.generate('ู
ูุฑูุญูุจูุง ุจูููู
ู'); // 24 kHz mono
Files
| file | size | |
|---|---|---|
onnx/model.onnx |
30.5 MB | fp32 |
onnx/model_fp16.onnx |
16.0 MB | fp16 weights, fp32 inputs/outputs |
voices/af_msa.bin |
0.5 MB | voice pack af_msa, raw little-endian float32 [510, 256] |
config.json |
original config (vocab) |
Inputs / outputs
| name | type | shape | |
|---|---|---|---|
input_ids |
int64 | [1, T] |
phoneme token ids, wrapped in 0 โฆ 0; T โค 512 |
style |
float32 | [1, 256] |
row len(phonemes) - 1 of the voice pack |
speed |
float32 | [1] |
1.0 = normal |
waveform |
float32 | [N] |
24 kHz audio |
durations |
int64 | [T] |
predicted frames per token |
The phonemes come from espeak-ng (ar) followed by clean_phonemes from arabic_g2p.py in the source repository.
ส and ฤง map to token ids 7 and 8.
Validation
The export is checked against PyTorch on held-out sentences. The ISTFTNet source injects random noise, so samples never match bit-for-bit. The comparison uses mean log-spectrogram distance, with a second PyTorch run giving the noise floor:
| mean ฮ log-spec | |
|---|---|
| PyTorch rerun (noise floor) | 0.350 |
model.onnx |
0.350 |
model_fp16.onnx |
0.360 |
Output lengths (durations) are identical. Dynamic int8 quantization was tested and dropped. It saved only 27% and audibly degraded the output.
Export script: export/export_onnx.py in the nabra-tts repository.
- Downloads last month
- 143
Model tree for oddadmix/Nabra-7M-Distill-ONNX
Base model
oddadmix/Nabra-7M-Distill