Torongo-TTS-AS

Torongo-TTS-AS is a 36M parameter, single speaker Assamese text-to-speech model that turns written Assamese into a natural, expressive female voice. Built on the VITS architecture, a conditional variational autoencoder trained with adversarial learning, it synthesises speech end to end, mapping text directly to a 16 kHz waveform. It is designed to easily run on any consumer grade CPU.

Model details

Architecture VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech)
Dataset ananddey/assamese-single-fem-dataset (~11.3 k utterances, single female speaker)
Parameters ~36 M
Sampling rate 16 000 Hz
Language Assamese (asm)
Tokenizer VitsTokenizer
Speaking rate 1.0 (adjustable at inference time)
Framework 🤗 Transformers ≥ 4.36.2, PyTorch

Demo samples

Sample Text Audio
Greeting আদৰণি জনাইছোঁ। তৰংগৰ জগতখনলৈ আপোনাক স্বাগতম।
Numbers & date আজি ২০২৬ চনৰ ৫ জুলাই। বতৰটো আজি বৰ ধুনীয়া হৈছে।
Poetic বতাহত ভাঁহি আহে পুৱাৰ কোমল গান, দূৰ আকাশত জ্বলি উঠে সোনালী অভিমান।
Informative অসম ভাৰতৰ উত্তৰ-পূৱ অঞ্চলত অৱস্থিত এখন ৰাজ্য। ইয়াৰ ৰাজধানী দিছপুৰ।
Everyday আজি বহুত দিনৰ মূৰত ঘৰলৈ আহি মাৰ হাতৰ ৰন্ধা খাই বৰ ভাল লাগিল।

Quick start

Python API

Step 1 — Create a project folder

mkdir torongo-tts && cd torongo-tts

Step 2 — Install dependencies

pip install "transformers>=4.36.2" huggingface_hub torch numpy scipy

Step 3 — Download the text normaliser

assamese_normalizer.py is not part of the model weights, so download it once:

huggingface-cli download ananddey/torongo-tts-as assamese_normalizer.py --local-dir .

Step 4 — Generate speech

Run the script from the folder containing assamese_normalizer.py:

import numpy as np
import scipy.io.wavfile
from transformers import pipeline

from assamese_normalizer import normalize_assamese_text

pipe = pipeline("text-to-speech", model="ananddey/torongo-tts-as")

text = normalize_assamese_text("আজি ২০২৬ চনৰ ৫ জুলাই।")
speech = pipe(text)

int16 = np.clip(speech["audio"].squeeze() * 32767.0, -32768.0, 32767.0).astype(np.int16)
scipy.io.wavfile.write("output.wav", rate=speech["sampling_rate"], data=int16)

Or use VitsModel :

import numpy as np
import scipy.io.wavfile
import torch
from transformers import AutoTokenizer, VitsModel

from assamese_normalizer import normalize_assamese_text

model = VitsModel.from_pretrained("ananddey/torongo-tts-as")
tokenizer = AutoTokenizer.from_pretrained("ananddey/torongo-tts-as")
model.eval()

model.config.speaking_rate = 0.9  # optional speaking rate: < 1.0 = slower

text = normalize_assamese_text("নমস্কাৰ, আপোনাৰ দিনটো শুভ হওক।")
inputs = tokenizer(text, return_tensors="pt")

with torch.no_grad():
    outputs = model(**inputs)

waveform = outputs.waveform.squeeze().numpy()
int16 = np.clip(waveform * 32767.0, -32768.0, 32767.0).astype(np.int16)
scipy.io.wavfile.write("output.wav", rate=model.config.sampling_rate, data=int16)

CLI: inference.py

A command line alternative option for audio generation.

Step 1 — Create a project folder

mkdir torongo-tts && cd torongo-tts

Step 2 — Install dependencies

pip install "transformers>=4.36.2" huggingface_hub torch numpy scipy

Step 3 — Download the scripts

huggingface-cli download ananddey/torongo-tts-as inference.py assamese_normalizer.py --local-dir .

Step 4 — Run

python inference.py --text "নমস্কাৰ, আপোনাৰ দিনটো শুভ হওক।" --out output.wav

Flags: --speed 0.9 (slower), --no-norm (skip normalisation).

Training

The model was trained on the ananddey/assamese-single-fem-dataset.

Setting Value
Training samples ~10 049 (re-split from the 11.3 k dataset)
Validation samples 1 500
Batch size 32
Epochs 80
Learning rate 2e-5
LR schedule ExponentialLR
Mixed precision bf16
Mel loss weight 35
Discriminator loss weight 3
Duration loss weight 1
KL loss weight 1.5
Checkpoint Final epoch (80)

The discriminator weights used during training were removed from the final checkpoint so it loads cleanly with VitsModel for inference.

Limitations

  • Single speaker: The model produces only one female voice. It cannot generate male voices or switch between speakers.
  • 16 kHz only: The model was trained and runs at 16 000 Hz. It does not support higher sample rates.
  • Assamese only: Trained exclusively on Assamese text. Other languages will produce unintelligible output.
  • Short utterances: Works best on sentence-length text.
  • No emotional control: The model always produces a neutral reading style. There is no mechanism to control prosody, emotion or emphasis.

License

This model is released under CC BY-NC 4.0.

Citation

If you use this model, please cite the dataset:

@dataset{dey2025assamesesinglefem,
  title      = {Assamese Single Female TTS Dataset},
  author     = {Anand Dey},
  year       = {2026},
  publisher  = {Hugging Face},
  url        = {https://huggingface.co/datasets/ananddey/assamese-single-fem-dataset},
}
Downloads last month
-
Safetensors
Model size
36.3M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train ananddey/torongo-tts-as

Space using ananddey/torongo-tts-as 1