goonj-1-82M
ΰ€ΰ₯ΰ€ΰ€ β 15 Indian voices on the edge. A finetune of Kokoro-82M for Hindi, Indian English, and Hinglish, with 15 baked-in persona voicepacks β generation needs only text and a persona name, no reference audio. Trained on the BH-Builds/mac-audio dataset.
Contents
| File | Description |
|---|---|
kokoro_hindi_final.pth |
Finetuned Kokoro-82M weights (KModel format, 82M params) |
config.json |
KModel architecture config |
voices/*.pt |
15 persona voicepacks, [510, 1, 256] float32 (standard Kokoro voicepack format) |
kokoro_generate.py |
Reference inference script with language auto-detection |
hinglish_lexicon.py |
~300-word romanized-Hindi β Devanagari lexicon used by the Hinglish G2P |
Personas
14 named personas + a Hindi base voice:
- Hindi natives (
hi_*): atul, meera, ravi, shivani - Indian English (
en_*): aman, ananya, arjun, dev, divya, kabir, nisha, priya, sameer, tara bed_hindi: the Hindi language-bed voice
All personas handle all three language modes; the prefix marks their primary training language.
Demo β en_priya, Indian native English speaker
"I truly believe that hard work makes every difficulty easier to overcome." β generated from text + the en_priya voicepack only, no reference audio:
Usage
# pip install kokoro huggingface_hub (weights are in stock Kokoro format; works with PyPI kokoro >= 0.9)
# private repo: `hf auth login` first, or pass token=... to hf_hub_download
import torch
from huggingface_hub import hf_hub_download
from kokoro import KModel
REPO = "BH-Builds/goonj-1-82M"
model_path = hf_hub_download(REPO, "kokoro_hindi_final.pth")
config_path = hf_hub_download(REPO, "config.json")
voice_path = hf_hub_download(REPO, "voices/hi_meera.pt")
model = KModel(repo_id="hexgrad/Kokoro-82M", # public; used only for defaults
config=config_path, model=model_path).to("cuda").eval()
pack = torch.load(voice_path, weights_only=True)
phonemes = "mΛΚΙΚ°eΛ ΚΙͺΚΚΛaΛs hΙΛ" # from the G2P β see note below
ref_s = pack[min(len(phonemes) - 1, 509)]
audio = model(phonemes, ref_s, speed=1.0) # 24 kHz mono tensor
G2P (important): phonemes must match training:
- Devanagari Hindi β
misaki.espeak.EspeakG2P(language="hi") - English β misaki English G2P (US)
- Romanized Hinglish β hybrid routing: words in
hinglish_lexicon.pyβ Devanagari β Hindi G2P; other words β English G2P
kokoro_generate.py implements all three with auto-detection.
Model journey
Three iterations led here: Qwen3-TTS 1.7B (good pronunciation, noisy output, one checkpoint per persona β dropped) β VoxCPM2 ~800M LoRA (excellent cloning quality, but needs a reference clip at inference and server-class compute) β Kokoro-82M (this model: tiny, edge/CPU-capable, personas as 512KB voicepacks, zero reference audio).
Training
Two-stage StyleTTS2 finetune (via the kikiri-tts recipe) from Kokoro-82M v1.0 weights, multi-speaker (15 speakers):
| Stage | Epochs | Batch | Final val mel loss |
|---|---|---|---|
| Stage 1 (acoustic) | 13 (early-stopped of 30) | 8 | 0.264 |
| Stage 2 (prosody + SLM adversarial) | 12 | 6 | 0.332 |
Hardware: 1Γ NVIDIA L40S, ~7h total. Voicepacks extracted by averaging style/prosody encoder outputs over each persona's training clips.
Two upstream StyleTTS2 fixes were required for the multispeaker + no-diffusion configuration (unbound ref in the joint phase; predictor_encoder clobbering on resume).
Training data
Dataset: BH-Builds/mac-audio β 5,000 clips / ~10 hours across 15 voices: Hindi (Devanagari, ~2,800 clips), Indian English (1,560), romanized Hinglish (~690). The dataset is synthetic, built in two steps: the 15 persona reference voices were created with ElevenLabs, and the bulk training audio was then synthesized from those references with Fish Audio S2 Pro via reference-conditioned voice cloning. In our subsequent evaluations, VoxCPM2 (OpenBMB) produced noticeably better reference-conditioned synthetic speech for Hindi/Hinglish, and future dataset versions will likely use it. Known data-quality limitations are inherited by this model.
Limitations
- Synthetic training data (see above); some artifacts and pronunciation quirks carry over.
- Hinglish G2P covers frequent words via lexicon; rare romanized-Hindi words fall back to English G2P and may sound anglicized.
- English phonemization is US-based; the Indian-English accent comes from the audio, not the phonemes.
- 82M-parameter model: fast and CPU-friendly, but below larger TTS models in naturalness ceiling.
License
Apache 2.0 (inherited from Kokoro-82M).
- Downloads last month
- 20

