Indic-Mio
This model is a fine-tuned version of [Aratako/MioTTS-0.6B](https://huggingface.co/Aratako/MioTTS-0.6B) which uses [MioCodec](https://huggingface.co/Aratako/MioCodec-25Hz-24kHz) for speech tokenization. For emotion and style control, place the tags <b>at the end</b> of the sentence. For example: `मुझे यह फिल्म बहुत पसंद आई! <happy>` or `I am not sure if I can do this. <confused>` Tags for Indian languages: `<happy>`, `<sad>`, `<angry>`, `<disgust>`, `<fear>`, `<surprise>` <br> Tags for English: `<happy>`, `<sad>`, `<enunciated>`, `<confused>`, `<angry>`, `<whisper>` A word can be stressed by using asterisks(*) around it. For example: `No! I could *never* do it!` Install [vllm](https://github.com/vllm-project/vllm) and set up [MioTTS-Inference](https://github.com/Aratako/MioTTS-Inference). vllm serve SPRINGLab/Indic-Mio --gpu-memory-utilization 0.5 cd MioTTS-Inference python run_server.py python run_gradio.py from transformers import AutoTokenizer, AutoModelForCausalLM from miocodec import MioCodec import numpy as np import torch model_name = "SPRINGLab/Indic-Mio" tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="cuda" ) text = "नमस्ते, आप कैसे हैं?" messages = [{"role": "user", "content": text}] prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) inputs = tokenizer(prompt, return_tensors="pt").to(model.device) output = model.generate( **inputs, max_new_tokens=1024, temperature=0.9, top_p=0.9, ) generated = output[0][inputs["input_ids"].shape[1]:] speech_offset = 151669 audio_codes = [t.item() - speech_offset for t in generated if speech_offset <= t.item() < speech_offset + 12800] codec = MioCodec.from_pretrained("Aratako/MioCodec-25Hz-24kHz") codes_tensor = torch.tensor([audio_codes], dtype=torch.long).unsqueeze(0) # [1, 1, T] wav = codec.decode(codes_tensor) # -> [1, 1, num_samples] import soundfile as sf sf.write("output.wav", wav.squeeze().cpu().numpy(), 44100) This model was trained on a single NVIDIA A6000 ADA GPU in less than 6 hours. For Indian languages, IndicTTS, Rasa and Syspin datasets were used. For American English, LibriTTS and Expresso, while for Indian English, SPICOR dataset was used. This model is robust yet flexible. You can fine-tune it on your own dataset for better performance on specific languages, accents, speakers, styles or emotions. Just a few steps of LoRA fine-tuning can significantly improve the performance for your target task. In case you use this model, please cite this huggingface repository as follows: @misc{indic-mio-tts, title={Indic-Mio TTS}, author={Advait Joglekar}, year={2026}, publisher = {Hugging Face}, howpublished={\url{https://huggingface.co/SPRINGLab/Indic-Mio}}, }