Ava 82M (آوا)
Ava is a lightweight, open-weight Persian text-to-speech model released by Nimruz. It is a Persian adaptation of Kokoro-82M, fine-tuned on an approximately 20-hour curated subset of Mana-TTS.
Ava produces 24 kHz, single-speaker Persian speech. v0.2 continues training from the listener-selected v0.1 model on approximately 20 total hours of Mana-TTS. The release includes a Persian text frontend, number/date normalization, contextual grapheme-to-phoneme conversion, pronunciation overrides, automatic long-text splitting, and conservative cleanup of leading and trailing synthesis artifacts.
Status: v0.2 research release. Informal native-speaker listening found improved tone, pace, pronunciation, and stability over v0.1. Occasional robotic pitch and synthesis artifacts remain; no formal MOS or Persian intelligibility benchmark has been completed yet.
Quick start
Python 3.11–3.13 and Git are required. Install the small Ava package directly from this repository:
python -m pip install \
"https://huggingface.co/xmanii/Ava-82M/resolve/main/ava_tts-0.2.0-py3-none-any.whl"
Then generate speech:
from ava_tts import Ava
tts = Ava()
tts.save("سلام! من آوا هستم.", "ava.wav")
The first run downloads the 82M-parameter acoustic model and the pinned Persian G2P frontend. Later runs use the local cache.
Command line
ava "قیمت این محصول سه میلیون و چهارصد هزار تومان است." -o price.wav
Adjust speaking rate:
ava "امروز بیست و ششم تیر است." --speed 0.95 -o slower.wav
Boundary cleanup is enabled by default because listening tests found that it removes the short robotic noise that can occur before or after speech. To inspect the unprocessed model output:
ava "سلام، این خروجی خام مدل است." --raw-boundaries -o raw.wav
Reuse one model for multiple utterances
Loading the model once is faster:
from ava_tts import Ava
tts = Ava.from_pretrained("xmanii/Ava-82M")
tts.save("این جملهٔ اول است.", "first.wav")
tts.save("و این جملهٔ دوم است.", "second.wav", speed=1.05)
On the tested MacBook Air M4, CPU inference generated approximately 4.5 seconds of speech in roughly 0.9 seconds after loading. CPU is therefore selected automatically on Apple Silicon.
What is included
| File | Purpose |
|---|---|
model.pth |
Selected 20-hour Stage-2 Epoch-1 acoustic checkpoint |
voice.pt |
Persian single-speaker style/voice tensor |
config.json |
Kokoro architecture and phoneme vocabulary |
pronunciations.json |
Reviewed pronunciation correction layer |
ava_tts-0.2.0-py3-none-any.whl |
Friendly Python API and ava command |
samples/ava-v02-*.wav |
Boundary-cleaned v0.2 examples |
artifact_manifest.json |
File sizes, hashes, and provenance |
The package pins the exact Kokoro runtime revision used during local and cloud
validation. The public kokoro==0.9.4 decoder is not weight-compatible with
this checkpoint.
Architecture
Ava retains Kokoro's compact StyleTTS2/iSTFTNet-derived inference architecture:
- Persian text is normalized, including Persian/Arabic digits, ordinal month/day forms, times, percentages, and common numeric forms.
- The pinned Homo-GE2PE model converts contextual Persian writing into phonemes.
- Frontend v3 repairs high-confidence
ژerrors, digit-nine ambiguity, and ezafe liaison before mapping phonemes into Kokoro's IPA vocabulary. - The duration and prosody predictor estimates timing and pitch.
- The decoder/vocoder generates a 24 kHz waveform directly.
- Boundary-only cleanup trims synthesis artifacts without modifying internal pauses.
The acoustic network has 81,763,410 inference parameters. The separate G2P frontend is not included in that parameter count.
Training and checkpoint selection
- Base model:
hexgrad/Kokoro-82M - Fine-tuning data: 18.9965 training hours from
MahtaFetrat/Mana-TTS - Frozen validation/test data: 1.0562 hours
- Training recipe: continuation from v0.1, one Stage-1 stabilization epoch, then one complete non-joint Stage-2 epoch
- Released checkpoint: 20-hour Stage 2, Epoch 1
- Sample rate: 24 kHz
- Voice count: one
- Stage-2 validation mel loss:
0.443066 - Stage-2 validation duration loss:
0.546 - Stage-2 validation F0 loss:
2.880
The Stage-2 epoch completed 3,850 batch-4 updates on an L40S. All tensors in the saved checkpoint passed a direct finiteness audit. Joint adversarial training remains disabled because the earlier 10-hour experiment became numerically unstable and its listener-evaluated output was more robotic.
Evaluation
Evaluation for v0.2 is primarily structured human listening:
- Tone, pace, pronunciation, and stability improved over v0.1 and the 20-hour Stage-1 checkpoint.
- The output was described as clear and completely understandable.
- Frontend v3 improves ezafe connection,
ژ, digit nine, and ordinal dates without modifying the acoustic weights. - Boundary cleanup removed the brief synthetic onset/ending artifact without changing internal pauses.
- The compact v0.2 inference export passed a local Mac generation smoke test.
Formal MOS, speaker-similarity, real-time-factor across platforms, and Persian phoneme-error-rate evaluations remain future work.
Limitations
- Ava v0.2 has one voice and may preserve characteristics of the Mana-TTS narrator.
- Some uncommon names, loanwords, homographs, and specialized terminology can still be mispronounced.
- Tone can occasionally sound synthetic, and pace can vary.
- Very long text is split automatically and may have noticeable joins.
- The Persian frontend is a separate model, so first-run download and memory use are larger than the 82M acoustic parameter count suggests.
- The model has been tested most thoroughly on contemporary Iranian Persian.
- This research release is not guaranteed for safety-critical use.
Release history
main/v0.2.0: 20-hour Stage-2 Epoch-1 model and frontend v3.v0.1branch: preserved final v0.1 repository state.v0.1.0andv0.1.1tags: original 10-hour releases.
Responsible use
Use Ava for ethical speech and accessibility applications. Do not use it for impersonation, identity theft, fraud, deception, harassment, or misleading claims that generated speech came from a real person. Clearly disclose synthetic speech where a listener could reasonably mistake it for authentic recorded speech.
The Mana-TTS maintainers specifically prohibit impersonation, identity theft, and fraudulent use in their ethical-use notice.
License and attribution
Ava code and weights are released under Apache License 2.0. See
LICENSE and NOTICE.md.
This release depends on:
- Kokoro-82M, Apache-2.0.
- Mana-TTS, CC0-1.0.
- Homo-GE2PE-Persian, MIT.
- StyleTTS2.
Citation
If you use Ava, please cite this repository as well as Kokoro, StyleTTS2,
Mana-TTS, and Homo-GE2PE. Full upstream citations are included in
CITATIONS.md.
- Downloads last month
- 65