KaniTTS Arabic
A high-speed, high-fidelity Text-to-Speech model optimized for real-time conversational AI applications.
Overview
KaniTTS uses a two-stage pipeline combining a large language model with an efficient audio codec for exceptional speed and audio quality. The architecture generates compressed token representations through a backbone LLM, then rapidly synthesizes waveforms via neural audio codec, achieving extremely low latency.
Key Specifications:
- Model Size: 400M parameters
- Sample Rate: 22kHz
- Language: Arabic
- License: Apache 2.0
Performance
On NovitaAI RTX 5090 using vLLM:
- RTF: ~0.2 (5 times faster than realtime)
- Memory: 16GB GPU VRAM used
- Source Code: https://github.com/nineninesix-ai/kanitts-vllm
GPU Benchmark Results
| GPU Model | VRAM | Cost ($/hr) | RTF |
|---|---|---|---|
| RTX 5090 | 32GB | $0.423 | 0.190 |
| RTX 4080 | 16GB | $0.220 | 0.200 |
| RTX 5060 Ti | 16GB | $0.138 | 0.529 |
| RTX 4060 Ti | 16GB | $0.122 | 0.537 |
| RTX 3060 | 12GB | $0.093 | 0.600 |
Lower RTF is better (< 1.0 means faster than real-time). Benchmarks conducted on Vast AI.
Quickstart: Install from PyPI & Run Inference
It’s a lightweight so you can install, load a model, and speak in minutes. Designed for quick starts and simple workflows—no heavy setup, just pip install and run. More detailes...
Install
pip install kani-tts
pip install -U "transformers==4.57.1" # for LFM2 !!!
Quick Start
from kani_tts import KaniTTS
model = KaniTTS('nineninesix/kani-tts-400m-ar')
# Generate audio from text
audio, text = model("Your text here")
# Save to file (requires soundfile)
model.save_audio(audio, "output.wav")
Custom Configuration
from kani_tts import KaniTTS
model = KaniTTS(
'nineninesix/kani-tts-400m-ar',
temperature=0.7, # Control randomness (default: 1.0)
top_p=0.9, # Nucleus sampling (default: 0.95)
max_new_tokens=2000, # Max audio length (default: 1200)
repetition_penalty=1.2, # Prevent repetition (default: 1.1)
suppress_logs=True, # Suppress library logs (default: True)
show_info=True, # Show model info on init (default: True)
)
audio, text = model("Your text here")
Playing Audio in Jupyter Notebooks
You can listen to generated audio directly in Jupyter notebooks or IPython:
from kani_tts import KaniTTS
from IPython.display import Audio as aplay
model = KaniTTS('nineninesix/kani-tts-400m-ar')
audio, text = model("Your text here")
# Play audio in notebook
aplay(audio, rate=model.sample_rate)
Arabic Diacritics (Tashkeel) - Important!
For optimal pronunciation quality, we strongly recommend using Arabic text with diacritical marks (تشكيل/tashkeel).
Arabic text without diacritics can lead to ambiguous pronunciations. The model performs significantly better when diacritics are provided, as they explicitly indicate:
- Short vowels (fatḥa, kasra, ḍamma)
- Nunation (tanwin)
- Sukun (absence of vowel)
- Shadda (consonant doubling)
Example Comparison:
Without diacritics (less accurate):
أما أخوه غير الشقيق توماس، فكان يعيش حياةً طيبة في لندن، وكان مستعداً لمساعدته بما يلزم.
❌ May mispronounce words like "مستعداً" as "مستعدة"
With diacritics (much better):
أَمَّا أَخوهُ غَيْرُ الشَّقِيقِ تُوماسُ، فَكانَ يَعيشُ حَياةً طَيِّبَةً في لَنْدَنَ، وَكانَ مُسْتَعِدًّا لِمُساعَدَتِهِ بِما يَلْزَمُ.
✅ Produces accurate, natural pronunciation
Adding Diacritics to Your Text
You can use AI language models or specialized tools to automatically add diacritics to undiacritized Arabic text:
- Ask Claude, ChatGPT, or other AI assistants to add diacritics
- Use online tools like Mishkal (https://tahadz.com/mishkal)
- Use Python libraries like
pyarabicorcamel-tools
Note: While the model can handle undiacritized text, pronunciation quality will be noticeably lower, especially for words with multiple possible vowelizations.
Voices Datasets
- https://huggingface.co/datasets/laion/Emolia
- https://huggingface.co/datasets/NightPrince/MasriSpeech-Full
- https://huggingface.co/datasets/MrEzzat/arabic-speech-dataset
- https://huggingface.co/datasets/linagora/linto-dataset-audio-ar-tn
- https://huggingface.co/datasets/MBZUAI/ArVoice
Audio Examples
| Text | Audio |
|---|---|
| مرحباً، اسمي تارا، وأنا نموذج لتوليد الصوت يمكنه أن يتحدث كالبشر تماماً. | |
| زقزقت عصافيرٌ مرِحة هذا الصباح على شجرة البلوط العتيقة خارج نافذتي. | |
| يا عزيزي، ما زلت لا أشعر بتحسن... سأذهب للنوم. | |
| أما أخوه غير الشقيق توماس، فكان يعيش حياةً طيبة في لندن، وكان مستعداً لمساعدته بما يلزم. |
Use Cases
- Conversational AI: Real-time speech for chatbots and virtual assistants
- Edge/Server Deployment: Resource-efficient inference on affordable hardware
- Accessibility: Screen readers and language learning applications
- Research: Fine-tuning for specific voices, accents, or emotions
Limitations
- Performance degrades with inputs exceeding 15 seconds (need to use sliding window chunking)
- Limited expressivity without fine-tuning for specific emotions
- May inherit biases from training data in prosody or pronunciation
- Optimized primarily for English; other languages may require additional training
Optimization Tips
- Multilingual Performance: Continually pretrain on target language datasets and fine-tune NanoCodec
- Batch Processing: Use batches of 8-16 for high-throughput scenarios
- Hardware: Optimized for NVIDIA Blackwell architecture GPUs
Resources
Models:
- Pretrained Model: https://huggingface.co/nineninesix/kani-tts-500m-0.3-pt
- Space: https://huggingface.co/spaces/nineninesix/KaniTTS-Arabic
Examples:
- OpenAI compatible API Example: https://github.com/nineninesix-ai/kanitts-vllm
- Finetuning code pipeline: https://github.com/nineninesix-ai/KaniTTS-Finetune-pipeline
- Dataset preparation pipeline: https://github.com/nineninesix-ai/nano-codec-dataset-pipeline
- Example Dataset: https://huggingface.co/datasets/nineninesix/expresso-conversational-en-nano-codec-dataset
- GitHub Repository: https://github.com/nineninesix-ai/kani-tts
- ComfyUI node: https://github.com/wildminder/ComfyUI-KaniTTS by WildAi
- NextJS basic app: https://github.com/nineninesix-ai/open-audio. It uses the OpenAI npm package to connect to the OpenAI-compatible server API provided by kanitts-vllm.
Links:
- Website: https://www.nineninesix.ai
- Contact Form: https://airtable.com/appX2G2TpoRk4M5Bf/pagO2xbIOjiwulPcP/form
Acknowledgments
Built on top of LiquidAI LFM2 350M as the backbone and Nvidia NanoCodec for audio processing.
Responsible Use
Prohibited activities include:
- Illegal content or harmful, threatening, defamatory, or obscene material
- Hate speech, harassment, or incitement of violence
- Generating false or misleading information
- Impersonating individuals without consent
- Malicious activities such as spamming, phishing, or fraud
By using this model, you agree to comply with these restrictions and all applicable laws.
Contact
Have a question, feedback, or need support? Please fill out our contact form and we'll get back to you as soon as possible.
Citation
@inproceedings{emilialarge,
author={He, Haorui and Shang, Zengqiang and Wang, Chaoren and Li, Xuyuan and Gu, Yicheng and Hua, Hua and Liu, Liwei and Yang, Chen and Li, Jiaqi and Shi, Peiyang and Wang, Yuancheng and Chen, Kai and Zhang, Pengyuan and Wu, Zhizheng},
title={Emilia: A Large-Scale, Extensive, Multilingual, and Diverse Dataset for Speech Generation},
booktitle={arXiv:2501.15907},
year={2025}
}
@article{emonet_voice_2025,
author={Schuhmann, Christoph and Kaczmarczyk, Robert and Rabby, Gollam and Friedrich, Felix and Kraus, Maurice and Nadi, Kourosh and Nguyen, Huu and Kersting, Kristian and Auer, Sören},
title={EmoNet-Voice: A Fine-Grained, Expert-Verified Benchmark for Speech Emotion Detection},
journal={arXiv preprint arXiv:2506.09827},
year={2025}
}
@dataset{masrispeech_full,
author = {Yahya Muhammad Alnwsany},
title = {MasriSpeech-Full: Large-Scale Egyptian Arabic Speech Corpus},
year = {2025},
publisher = {Hugging Face},
url = {https://huggingface.co/collections/NightPrince/masrispeech-dataset-68594e59e46fd12c723f1544}
}
@misc{linagora2024Linto-tn,
title = {LinTO Audio and Textual Datasets to Train and Evaluate Automatic Speech Recognition in Tunisian Arabic Dialect},
author = {Hedi Naouara and Jérôme Louradour and Jean-Pierre Lorré},
year = {2025},
month = {March},
eprint={2504.02604},
archivePrefix={arXiv},
primaryClass={cs.CL},
note={Good Data Workshop, AAAI 2025},
url={arxiv.org/abs/2504.02604},
}
@misc{abdallah2023leveraging,
title={Leveraging Data Collection and Unsupervised Learning for Code-switched Tunisian Arabic Automatic Speech Recognition},
author={Ahmed Amine Ben Abdallah and Ata Kabboudi and Amir Kanoun and Salah Zaiem},
year={2023},
eprint={2309.11327},
archivePrefix={arXiv},
primaryClass={eess.AS}
}
@data{e1qb-jv46-21,
doi = {10.21227/e1qb-jv46},
url = {https://dx.doi.org/10.21227/e1qb-jv46},
author = {Al-Fetyani, Mohammad and Al-Barham, Muhammad and Abandah, Gheith and Alsharkawi, Adham and Dawas, Maha},
publisher = {IEEE Dataport},
title = {MASC: Massive Arabic Speech Corpus},
year = {2021}
}
@misc{toyin2025arvoicemultispeakerdatasetarabic,
title={ArVoice: A Multi-Speaker Dataset for Arabic Speech Synthesis},
author={Hawau Olamide Toyin and Rufael Marew and Humaid Alblooshi and Samar M. Magdy and Hanan Aldarmaki},
year={2025},
eprint={2505.20506},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2505.20506},
}
- Downloads last month
- 617