sherpa-onnx-vits-rasa-13
ONNX export of ai4bharat/vits_rasa_13 packaged for use with sherpa-onnx.
Model Overview
- 1024 speakers
- 32 emotions
- 13 Indic languages
- Single ONNX file
- Adds
emotion_idas a 7th input to the standardsherpa-onnxVITS runner signature. (Stocksherpa-onnxdoes not know about this input. See requirements)
Requirements
- sherpa-onnx built with emotion-input support. This model exposes
emotion_idas a required ONNX input. PR insherpa-onnx(#3849). On earlier builds you will seeunexpected input 'emotion_id'at load time.
Files
| File | Purpose |
|---|---|
model.onnx |
fp32 VITS graph, ~150 MB |
tokens.txt |
Character frontend, one <char> <id> per line |
Metadata
| Key | Value |
|---|---|
model_type |
vits |
frontend |
characters |
add_blank |
1 |
n_speakers |
1024 |
num_emotions |
32 |
sample_rate |
22050 |
language |
multilingual-indic |
punctuation |
(empty) |
Valid runtime ranges:
speaker_id: [0, 1024)emotion_id: [0, 32)
Usage
sherpa-onnx-offline-tts \
--vits-model=./model.onnx \
--vits-tokens=./tokens.txt \
--sid=0 \
--emotion-id=0 \
--output-filename=./out.wav \
"வணக்கம், நீங்கள் எப்படி இருக்கிறீர்கள்"
Notes:
sherpa-onnxsplits input on.,?,!regardless of this model'spunctuationONNX metadata. If your input ends with sentence-ending punctuation, sherpa generates a short trailing sentence that may synthesize as noise. Workarounds: strip trailing punctuation, or use--vits-noise-scale-wto try to reduce it. Tracking issue: TBD.
Reproducing the export
Export tooling lives in a separate repository: github.com/matiaslin/sherpa-onnx-vits-rasa-13-exporter. See its README for setup and CLI options.
Licenses and attribution
- Model weights and architecture: CC-BY-4.0. See: ai4bharat/vits_rasa_13.
- ONNX export tooling: MIT. See: github.com/matiaslin/sherpa-onnx-vits-rasa-13-exporter
If you use this model, please cite:
@article{ai4bharat_vits_rasa_13,
title={VITS TTS for Indian Languages},
author={Ashwin Sankar},
year={2024},
publisher={Hugging Face}
}
See upstream Citation.
Known differences from upstream HF inference
- Duration and prosody may differ from the HF Python reference.
sherpa-onnxdefaults tolength_scale=1.0, while HF's inference useslength_scale=1.0/config.speaking_rateinternally. Set--vits-length-scaleif you need to match a specific HF invocation. sherpa-onnxwraps token ids with an extra BOS/EOS blank (0) around HF'sadd_blankoutput (which might result in a few silent frames' difference at each end).