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:

(download the clip)

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

Model journey: 1.7B to 82M on the edge

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 pipeline

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
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for BH-Builds/goonj-1-82M

Finetuned
(54)
this model

Dataset used to train BH-Builds/goonj-1-82M

Space using BH-Builds/goonj-1-82M 1