Downloads · 30 days
0
Dragneel/nepali-vits-tts
nepali-vits-tts is a text-to-speech model from Dragneel. Use it when you need text read aloud. The card lists the license as mit.
Single-speaker Nepali TTS trained from scratch using jaywalnut310/vits on OpenSLR 43.
Downloads · 30 days
0
Access
Public
Updated May 17, 2026
Repo size
2 GB
Likes
0
Public
Click a slice to open those files.
.pth2 GB · 100%
From the Hugging Face model README
Single-speaker Nepali TTS trained from scratch using jaywalnut310/vits on OpenSLR 43.
Try it live: Dragneel/nepali-tts Space
| Checkpoint | Steps | Status | Notes |
|---|---|---|---|
G_100000.pth | 100,000 | Recommended | Peak quality. Clearest pronunciation. |
G_211000.pth | 211,000 | Latest | Trained further but no audible improvement vs. 100k. Provided for completeness / continued fine-tuning experiments. |
D_100000.pth, D_211000.pth | matching | Discriminators | Needed only if resuming training. |
Use G_100000.pth for inference unless you have a specific reason not to.
nepali_base.json in this repoThis model is honestly limited by dataset size, not architecture.
samples/).TRAINING_PLAN.md.pip install torch soundfile huggingface_hub
python infer_vits1.py "नमस्ते, काठमाडौं एक सुन्दर शहर हो।"
The script automatically clones jaywalnut310/vits,
builds the Cython monotonic_align extension, downloads model files, and
writes output.wav.
VITS inference requires inserting blank tokens between phonemes via
commons.intersperse(t, 0). Without it, audio is garbled regardless of
checkpoint quality. The included infer_vits1.py already does this.
Minimal correct inference pattern:
import unicodedata
import commons
from text import text_to_sequence
text = unicodedata.normalize("NFC", text) # Devanagari NFC
t = text_to_sequence(text, hps.data.text_cleaners)
t = commons.intersperse(t, 0) # REQUIRED
x = torch.LongTensor(t).unsqueeze(0)
xl = torch.LongTensor([len(t)])
audio = net_g.infer(x, xl, noise_scale=0.667,
noise_scale_w=0.8, length_scale=1.0)[0][0, 0].cpu().numpy()
Original release samples (single-sentence demos):
| File | Text |
|---|---|
| samples/vits1_sample_a.wav | यो नेपाली आवाजको परीक्षण हो |
| samples/vits1_sample_b.wav | काठमाडौं पर्यटनका लागि राम्रो सहर हो |
| samples/vits1_sample_c.wav | पोखरामा पानी परिरहेको छ |
A/B/C comparison across checkpoints on identical prompts:
| Prompt | 100k (recommended) | 200k | 210k |
|---|---|---|---|
| नमस्ते, मेरो नाम नेपाली हो। | vits1_100k_namaste.wav | vits1_200k_namaste.wav | vits1_210k_namaste.wav |
| आज मौसम राम्रो छ। | vits1_100k_aaja.wav | vits1_200k_aaja.wav | vits1_210k_aaja.wav |
| नमस्ते, काठमाडौं एक सुन्दर शहर हो। | vits1_100k_kathmandu.wav | vits1_200k_kathmandu.wav | vits1_210k_kathmandu.wav |
G_100000.pth # generator (USE THIS)
G_211000.pth # generator at 211k (no improvement)
D_100000.pth # discriminator at 100k (for resume)
D_211000.pth # discriminator at 211k (for resume)
nepali_base.json # training/inference config
nepali_symbols.py # 71 Devanagari grapheme symbols
nepali_cleaners.py # text cleaner (NFC normalize)
infer_vits1.py # ready-to-run inference script
samples/ # WAV demos
MIT. Inherits OpenSLR 43 dataset terms for training data.