Nabra-82M Egyptian (da7ee7)
Egyptian Arabic text to speech in 82M parameters, one voice. Nabra-82M (Kokoro / StyleTTS 2 architecture) fine-tuned on about 8,000 clips of a single Egyptian speaker, with a pitch loss added so the intonation sounds less flat. It runs on one GPU or on CPU and produces 24 kHz audio.
Listen
Sentences below were not in the training set.
| text | audio |
|---|---|
| إزيك يا صاحبي؟ عامل إيه النهارده؟ | |
| الاجتماع بتاع بكرة اتأجل لحد يوم التلات الساعة عشرة. | |
| دا أحلى يوم في حياتي، والله العظيم! | |
| عندي مشكلة في الـ internet من إمبارح، ومحدش عارف يصلحها. | |
recording of your choice: t4_3750.wav |
Usage
!pip -q install huggingface_hub "misaki[en]" espeakng-loader loguru soundfile transformers
import sys, soundfile as sf
from huggingface_hub import snapshot_download
path = snapshot_download("masterofaudio2077/Nabra-82M-Egyptian-da7ee7")
sys.path.insert(0, path)
from nabra_egyptian import load
tts = load(path) # downloads the model classes from oddadmix/Nabra-7M-Distill
audio = tts("إزيك يا صاحبي؟ عامل إيه النهارده؟") # 24 kHz float32 numpy array
sf.write("out.wav", audio, 24000)
Write the text as people write Egyptian Arabic, without diacritics. Latin words are read with English rules.
Model facts
| architecture | ALBERT phoneme encoder, prosody predictor (duration, pitch, energy), ISTFTNet decoder |
| parameters | 81.8M |
| sample rate | 24 kHz |
| language | Egyptian Arabic (one male speaker) |
| text front end | espeak-ng ar, no diacritizer |
| base model | oddadmix/Nabra-82M-v0.1 |
| license | Apache 2.0 (the data card of the dataset does not state a license) |
Results
50 held-out utterances, transcribed with Whisper large-v3, with the real recordings as the ceiling. WER and CER are noisy: the decoder draws random noise, so differences under about 0.05 are not meaningful.
| model | WER | CER | UTMOS | speaker similarity |
|---|---|---|---|---|
| fine-tune, plain losses | 0.579 | 0.271 | 1.29 | 0.946 |
| + discriminator learning rate fix, + pitch loss (run 3) | 0.550 | 0.260 | 1.27 | 0.965 |
| real recordings | 0.432 | 0.234 | 1.45 | 0.980 |
This release is run 4, which continues run 3 for 3,750 more steps. It was judged by ear and by pitch statistics rather than re-scored: pitch jumps larger than 3 semitones fell from 3.0% (first run) to 1.3% (real recordings: 0.2% to 1.4%).
UTMOS is low for the real recordings too (1.45) because the corpus is a separated, 8 kHz-sourced voice, so it says little here. High-frequency detail above 4 kHz is still 8 to 10 dB weaker than in the recordings: the voice is a little dull.
Training
Four runs on the teacher, each continuing the previous one, in this order: plain losses; a lower discriminator learning rate (a discriminator that is too strong against the generator flattens the voice); a log-pitch loss against pitch measured from the recordings; the same for 3,750 steps. Labels come from a CTC aligner trained on the corpus. The full code, every setting and the benchmark are in the tutorial notebook, so the numbers can be reproduced.
Limitations
- One voice. It cannot clone another speaker.
- Egyptian words are pronounced through Modern Standard Arabic phoneme rules for some letters (for example ج as the MSA sound rather than the Egyptian g), because espeak-ng has no Egyptian model.
- Without diacritics the vowels are guessed, so rare words can be mispronounced.
- Not for impersonation. Use the voice only with the permission of its owner.
Acknowledgements
Nabra by oddadmix, Kokoro by hexgrad, StyleTTS 2 by Li et al., and the da7ee7 dataset by oddadmix.