Mithi: sweet, natural speech in 11 Indian languages

Mithi v1 Flash

A small text-to-speech model for 11 Indian languages, with two voices: Satvik (male) and Charvi (female).

  • Languages: Hindi, English, Bengali, Gujarati, Kannada, Malayalam, Marathi, Odia, Punjabi, Tamil, Telugu.
  • Size: 99.1 M parameters, 197 MB.
  • Weights: bf16 safetensors.
  • Output: 24 kHz mono audio.
  • License: Apache-2.0, free to use, including commercially. See License.

Demo

License

Mithi is released under the Apache License 2.0 (see LICENSE). It is free to use, for personal, research and commercial projects alike: you can use, modify and redistribute the model and code, and build products on it. Keep the license and the credits (see Acknowledgements) with any copy you share.

Mithi was built entirely on open-source models and tools, each under a permissive license:

Component License
Maya2-native Apache-2.0
Kokoro-82M Apache-2.0
indic-bert MIT
Maya text normaliser Apache-2.0
misaki Apache-2.0

Packages installed through requirements.txt keep their own licenses.

Quick start

1. Download the model and install the dependencies (Python 3.10 or newer):

pip install -U huggingface_hub
hf download Oomni/mithi-v1-flash --local-dir mithi-v1-flash
cd mithi-v1-flash
pip install -r requirements.txt
python -m spacy download en_core_web_sm

espeak-ng comes with the espeakng-loader package, so no system install is needed. A GPU is used if there is one; the model also runs on CPU.

2. Run it from the command line:

python inference.py --lang hi --voice charvi --text "आज मौसम कितना अच्छा है! चलो, शाम को कहीं बाहर घूमने चलते हैं।" --out hindi.wav
python inference.py --lang en --voice satvik --text "Your appointment is confirmed for Monday at 10:30 AM." --out english.wav

3. Or from Python, inside the mithi-v1-flash folder:

from mithi_tts import Mithi

tts = Mithi(".")                                   # the downloaded model folder
audio = tts.synthesize("नमस्ते! आप कैसे हैं?", lang="hi", voice="satvik")
tts.save(audio, "namaste.wav")                     # 24 kHz WAV

for lang, text in [("ta", "வணக்கம்! எப்படி இருக்கீங்க?"), ("bn", "নমস্কার! কেমন আছেন?")]:
    tts.save(tts.synthesize(text, lang=lang, voice="charvi"), f"hello_{lang}.wav")

4. Run on CPU (laptops, Raspberry Pi, phones, servers without a GPU):

python inference.py --device cpu --threads 4 --lang hi --voice charvi --text "आज मौसम कितना अच्छा है! चलो, शाम को कहीं बाहर घूमने चलते हैं।" --out hindi_cpu.wav

--threads sets how many CPU cores to use; without it PyTorch uses all of them. From Python:

import torch
torch.set_num_threads(4)

from mithi_tts import Mithi
tts = Mithi(".", device="cpu")
tts.save(tts.synthesize("नमस्ते! आप कैसे हैं?", lang="hi", voice="charvi"), "namaste_cpu.wav")

Measured speed for an average 15-word sentence (about 7 s of speech), on a server CPU (AMD EPYC 9554):

CPU threads Time per sentence
1 ~8 s
4 ~3 s

Slower CPUs, such as a Raspberry Pi, take proportionally longer.

Languages: hi Hindi · en English · bn Bengali · gu Gujarati · kn Kannada · ml Malayalam · mr Marathi · or Odia · pa Punjabi · ta Tamil · te Telugu

Voices: satvik (male) and charvi (female). Long text is read sentence by sentence automatically.

Voices

One male and one female voice.

Voice Speaker
Satvik Male
Charvi Female

Samples

Every sentence in both voices: 11 languages, one conversational line and one news or education line with numbers. The text is shown as typed; numbers, times and currency are expanded into words by the text normaliser.

Conversational

Sentence Satvik (male) Charvi (female)
Hindi
अरे, तुम आ गए! बहुत दिनों बाद मिले हो। चलो, पहले एक कप चाय पीते हैं, फिर आराम से बातें करेंगे।
English
Wait, you actually got the tickets? That's amazing! I can't believe we're finally going to see them perform live.
Bengali
মা, আজ রাতে কী রান্না হচ্ছে? গন্ধটা তো দারুণ লাগছে! আমি কিন্তু খুব খিদে নিয়ে বাড়ি ফিরেছি।
Gujarati
કેમ છો? ઘણા દિવસે મળ્યા! ચાલો, આજે સાંજે સાથે ચા પીવા જઈએ.
Kannada
ನಮಸ್ಕಾರ! ನಿಮ್ಮ ಆರ್ಡರ್ ಈಗಾಗಲೇ ಹೊರಟಿದೆ, ನಾಳೆ ಮಧ್ಯಾಹ್ನದೊಳಗೆ ನಿಮ್ಮ ಮನೆಗೆ ತಲುಪುತ್ತದೆ. ಇನ್ನೇನಾದರೂ ಸಹಾಯ ಬೇಕಾ?
Malayalam
ഹേയ്, എത്ര നാളായി കണ്ടിട്ട്! സുഖമാണോ? വാ, ഇന്ന് വൈകുന്നേരം നമുക്ക് ഒരുമിച്ച് ചായ കുടിക്കാം.
Marathi
आई, आज संध्याकाळी आपण सगळे मिळून बाहेर जेवायला जाऊया का? खूप दिवस झाले, सगळे एकत्र बसलो नाही.
Odia
ଆରେ, କେତେ ଦିନ ପରେ ଦେଖା ହେଲା! କେମିତି ଅଛ? ଚାଲ, ଆଜି ସନ୍ଧ୍ୟାରେ ଏକାଠି ଚା ପିଇବା।
Punjabi
ਕੀ ਹਾਲ ਹੈ ਜੀ? ਬਹੁਤ ਦਿਨਾਂ ਬਾਅਦ ਮਿਲੇ ਹਾਂ! ਆਓ, ਅੱਜ ਸ਼ਾਮ ਨੂੰ ਇਕੱਠੇ ਚਾਹ ਪੀਂਦੇ ਹਾਂ।
Tamil
ஹேய், எவ்வளவு நாளாச்சு பார்த்து! எப்படி இருக்கீங்க? வாங்க, இன்னைக்கு சாயங்காலம் ஒன்னா காபி குடிக்கலாம்.
Telugu
మీ టికెట్ కన్ఫర్మ్ అయింది! రైలు రేపు ఉదయం ఆరు గంటలకు బయలుదేరుతుంది, కాబట్టి కొంచెం ముందుగానే స్టేషన్‌కి రండి.

News and education, with numbers

Sentence Satvik (male) Charvi (female)
Hindi
भारतीय अंतरिक्ष अनुसंधान संगठन ने आज सुबह 9:30 बजे श्रीहरिकोटा से एक नया उपग्रह सफलतापूर्वक लॉन्च किया, जिसकी लागत लगभग ₹450 करोड़ है।
English · Education
Light from the Sun takes about 8 minutes and 20 seconds to reach the Earth, travelling nearly 150 million kilometres.
Bengali
রাজ্যের মাধ্যমিক পরীক্ষায় এ বছর 92 শতাংশ ছাত্রছাত্রী পাশ করেছে, যা গত বছরের চেয়ে 3 শতাংশ বেশি।
Gujarati
ગુજરાતમાં આ વર્ષે 1,250 નવી શાળાઓ શરૂ કરવામાં આવશે, જેનાથી આશરે 2 લાખ બાળકોને લાભ મળશે.
Kannada
ಬೆಂಗಳೂರಿನ ಮೆಟ್ರೋದಲ್ಲಿ ಕಳೆದ ತಿಂಗಳು ಪ್ರತಿದಿನ ಸರಾಸರಿ 8 ಲಕ್ಷ ಜನರು ಪ್ರಯಾಣಿಸಿದ್ದಾರೆ ಎಂದು ಅಧಿಕಾರಿಗಳು ತಿಳಿಸಿದ್ದಾರೆ.
Malayalam
കേരളത്തിലെ ഡിജിറ്റൽ സാക്ഷരതാ പദ്ധതിയിലൂടെ 65 വയസ്സിന് മുകളിലുള്ള 2 ലക്ഷത്തിലധികം പേർ സ്മാർട്ട്ഫോൺ ഉപയോഗിക്കാൻ പഠിച്ചു.
Marathi
पुण्यात आज सकाळी 7 वाजता 12 अंश सेल्सिअस तापमानाची नोंद झाली, जे या हिवाळ्यातील सर्वात कमी तापमान आहे.
Odia
ଓଡ଼ିଶାରେ ଏହି ବର୍ଷ 3,500 ନୂଆ ଶିକ୍ଷକ ନିଯୁକ୍ତ ହେବେ ବୋଲି ସରକାର ଆଜି ଘୋଷଣା କରିଛନ୍ତି।
Punjabi
ਪੰਜਾਬ ਵਿੱਚ ਇਸ ਸਾਲ ਕਣਕ ਦੀ ਪੈਦਾਵਾਰ 180 ਲੱਖ ਟਨ ਤੱਕ ਪਹੁੰਚ ਗਈ ਹੈ, ਜੋ ਪਿਛਲੇ ਸਾਲ ਨਾਲੋਂ 5 ਫ਼ੀਸਦੀ ਵੱਧ ਹੈ।
Tamil
சென்னையில் நேற்று 45 மில்லிமீட்டர் மழை பதிவானது, மேலும் அடுத்த 2 நாட்களுக்கு மழை தொடரும் என்று வானிலை ஆய்வு மையம் தெரிவித்துள்ளது.
Telugu
హైదరాబాద్‌లో ఈ ఏడాది 2,000 కొత్త ఎలక్ట్రిక్ బస్సులు ప్రవేశపెట్టనున్నట్లు ప్రభుత్వం ప్రకటించింది.

All clips and their text (samples/sentences.tsv) are in the samples/ folder.

Files

File Contents
inference.py command-line script: text in, WAV out
mithi_tts/ the Python package that runs the model
requirements.txt Python dependencies
config.json languages, voices and settings
*.safetensors, kokoro_config.json, indic_encoder/ model weights and configuration
samples/ the example clips above and their text
assets/ banner and wordmark

Limitations

  • Expressiveness: intonation and emotion are flatter than in natural human speech.
  • Kannada, Malayalam, Marathi, Odia: speech can come out a little faster than natural.
  • Pronunciation: some words, especially rare names and loanwords, can be mispronounced.
  • Numbers, dates, currency, URLs are read only as well as the text normaliser expands them.
  • Long text is read sentence by sentence; each sentence is spoken without seeing the others.
  • No published evaluation yet: no automated scores and no human listening study (MOS).

Acknowledgements

Downloads last month
436
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Spaces using Oomni/mithi-v1-flash 2