CoolFace
Modelpublic

mohammedaly22/VoiceTut-TTS

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
15likes1.3kdownloads
Model Card

<div align="center">

<img src="https://raw.githubusercontent.com/MohammedAly22/VoiceTuT-TTS/main/assets/VoiceTut-TTS-Banner.png" alt="VoiceTut-TTS" width="100%" />

๐“‹น VoiceTut-TTS

An Open-Source Text-to-Speech Model for Egyptian Arabic & Code-Switching

![๐Ÿค— Model](https://huggingface.co/mohammedaly22/VoiceTut-TTS) ![๐Ÿค— Space](https://huggingface.co/spaces/mohammedaly22/VoiceTut-TTS) ![๐ŸŽง Samples](https://mohammedaly22.github.io/VoiceTuT-TTS/) ![PyPI](https://pypi.org/project/voicetut-tts/) ![GitHub](https://github.com/MohammedAly22/VoiceTuT-TTS) ![Base](https://github.com/k2-fsa/OmniVoice) ![License](https://github.com/MohammedAly22/VoiceTuT-TTS/blob/main/LICENSE)

VoiceTut-TTS is an Egyptian-Arabic text-to-speech model fine-tuned from OmniVoice on ~380 hours of Egyptian podcast speech. It produces natural Egyptian speech with seamless Arabic โ†” English code-switching, ships 17 built-in studio voices, supports zero-shot voice cloning, and includes a robust Egyptian-Arabic text normalization pipeline plus true streaming for long text.

</div>

Why "VoiceTut"? Tut โ€” after the boy-king Tutankhamun (ุชูˆุช ุนู†ุฎ ุขู…ูˆู†) โ€” anchors the model in Egyptian identity, just as our companion ASR model [QwenCleo-ASR](https://github.com/MohammedAly22/qwencleo-asr) is named after Cleopatra. Together they form an Egyptian speech stack: Cleo listens, Tut speaks. ๐ŸŽ™๏ธ๐Ÿ—ฃ๏ธ

๐Ÿ”— Links

  • โ€”๐ŸŽง Audio demo (VoiceTut vs. base OmniVoice): https://mohammedaly22.github.io/VoiceTuT-TTS/
  • โ€”๐Ÿš€ Interactive Space: https://huggingface.co/spaces/mohammedaly22/VoiceTut-TTS
  • โ€”๐Ÿ’ป GitHub (code, notebooks): https://github.com/MohammedAly22/VoiceTuT-TTS
  • โ€”๐Ÿ“ฆ PyPI: https://pypi.org/project/voicetut-tts/

โœจ Features

  • โ€”๐ŸŽฏ Egyptian-first โ€” fine-tuned specifically on Egyptian Arabic, not generic MSA.
  • โ€”๐Ÿ”€ Code-switching โ€” handles real Arabic + English mixed speech (ุนู†ุฏูŠ meeting ุจูƒุฑุฉ).
  • โ€”๐Ÿ—ฃ๏ธ 17 built-in voices โ€” male & female studio speakers, each with style tags.
  • โ€”๐Ÿงฌ Zero-shot cloning โ€” clone any voice from a few seconds of reference audio.
  • โ€”๐Ÿ”ข Robust normalization โ€” numbers, dates, times, currencies, phones, emails, URLs, abbreviations + diacritics & name dictionaries.
  • โ€”โšก True streaming โ€” long text is split into sentences and yielded as audio chunks.

๐Ÿ“ฆ Installation

bash
# PyTorch matching your CUDA (see https://pytorch.org)
pip install torch --index-url https://download.pytorch.org/whl/cu121
# OmniVoice backbone (not on PyPI โ€” install from GitHub)
pip install git+https://github.com/k2-fsa/OmniVoice.git
pip install voicetut-tts

๐Ÿš€ Usage

python
from voicetut_tts import VoiceTutTTS

tts = VoiceTutTTS.from_pretrained("mohammedaly22/VoiceTut-TTS")

# 1) Built-in speaker
tts.synthesize("ุงุฒูŠูƒ ุนุงู…ู„ ุงูŠู‡ ุงู„ู†ู‡ุงุฑุฏุฉุŸ", speaker="Mohamed", output="out.wav")

# 2) Zero-shot voice cloning
tts.synthesize("ุงู„ู†ู‡ุงุฑุฏู‡ ุงู„ุฌูˆ ุญู„ูˆ ุงูˆูŠ",
               ref_audio="my_voice.wav", ref_text="ุฏู‡ ุงู„ุตูˆุช ุจุชุงุนูŠ", output="clone.wav")

# 3) Code-switching + generation params
tts.synthesize("ุนู†ุฏูŠ meeting ุงู„ุณุงุนุฉ 3:30 ูˆู…ุนุงูŠุง ุงู„ presentation",
               speaker="Asmaa", num_step=48, guidance_scale=2.5, speed=1.05, output="cs.wav")

Streaming long text:

python
for sr, chunk in tts.stream(long_paragraph, speaker="Sayed"):
    play(chunk)                    # plays each sentence as it's generated
tts.synthesize_long(long_paragraph, "long.wav", speaker="Sayed")

๐Ÿ—ฃ๏ธ Built-in Voices

MaleFemale
NamesAbdelrahman, Abdullah, Kamal, Hossam, Mohamed, Omar, Sayed, Zaki, Aly, Essam, AhmedAsmaa, Esraa, Hanan, Sarah, Yasmin, Omnia

Each voice ships with a reference clip + Arabic style tags (e.g. ุดุจุงุจูŠ, ุญูŠูˆูŠ, ู‡ุงุฏูŠ). Browse and listen in the Space.

๐Ÿ“Š Performance

Measured on a single NVIDIA T4 (Colab), float16, num_step=32. Reproduce with `examples/04_evaluation.ipynb`.
MetricValue
Real-time factor (RTF, mean)1.13ร—
RTF (best)0.49ร—
Time-to-first-audio (streaming)1.68 s
Peak VRAM (fp16)2.93 GB
WER โ€” Egyptian Arabic0.40
WER โ€” English0.07
Speaker similarity (cloning, cosine)0.83
Naturalness (UTMOS, 1โ€“5)3.47
Sampling rate24 kHz
On A100 / H100 expect markedly lower RTF and TTFA.

๐Ÿ—๏ธ Training

  • โ€”Base model: k2-fsa/OmniVoice (Qwen3-0.6B text backbone + Higgs audio tokenizer)
  • โ€”Data: ~380 h Egyptian-Arabic YouTube podcasts (language_id = arz)
  • โ€”Steps: 20,000 ยท LR: 3e-5 ยท bf16

โš ๏ธ Responsible Use

Voice cloning is provided to enable beneficial use cases โ€” voice assistants, accessibility, educational and creative content. Do not use it to impersonate real people, produce deceptive or misleading audio, or harm, harass, or defraud anyone. Always obtain consent before cloning a real person's voice, and disclose synthetic audio where appropriate.

๐Ÿ“œ License & Citation

Apache-2.0.

bibtex
@software{voicetut_tts_2026,
  author  = {Mohammed Aly},
  title   = {VoiceTut-TTS: Egyptian Arabic & Code-Switching Text-to-Speech},
  year    = {2026},
  url     = {https://github.com/MohammedAly22/VoiceTuT-TTS},
  note    = {Fine-tuned from OmniVoice}
}