/ Модель

Характеристики

Лицензия
Apache 2.0
Библиотека
piper
Опубликована
26 сен 2026

santali-piper-vits

Синтез речиТекст → аудио3 профессии

Односпикерная ONNX-модель Piper VITS для офлайн-синтеза речи на сантали с письмом Ол-чики.

205скачиваний за 30 дней0лайковвеса обновлены2 окт 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Santali Piper VITS — односпикерная модель синтеза речи на сантали, разработанная на основе корпуса Santali Female из набора AI4Bharat Rasa. Модель обучена с использованием конвейера Piper VITS и экспортирована в ONNX для локального офлайн-запуска, в том числе на Android. Она принимает текст на письме Ол-чики после обязательной фонемизации; в репозитории есть фонемизатор на Python и Kotlin, согласованный с обучающими данными.

Модель предназначена для озвучивания текста на сантали в мобильных и других приложениях с локальным инференсом. Это один женский голос, поэтому модель не охватывает разные голоса, диалекты и стили речи. Возможны ошибки произношения редких, заимствованных и незнакомых слов, расхождения между написанием и ожидаемой устной формой, нестабильная просодия и артефакты; качество снижается на текстах, далёких от обучающего распределения. Лицензия — Apache-2.0.

Сценарии применения

  • озвучивание текста на сантали в Android-приложениях
  • локальный офлайн-синтез речи на сантали
  • добавление женского голоса на сантали в приложение или устройство

Ограничения

Это один женский голос без поддержки разных диалектов и стилей; возможны ошибки на редких, заимствованных и незнакомых словах, а также просодические несогласованности и артефакты. Для инференса необходим совместимый фонемизатор и соответствующее обучению отображение фонем в идентификаторы.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Santali Piper VITS

A single-speaker Santali (sat) text-to-speech model for the Ol Chiki script, trained with the Piper VITS pipeline on the Santali female corpus of AI4Bharat Rasa.

It is exported to ONNX for offline, on-device inference, including Android. A deterministic Santali phonemizer (Python and Kotlin) converts Ol Chiki text into IPA phoneme tokens before they reach the model.

Model Summary

PropertyValue
Language / scriptSantali (sat), Ol Chiki
ArchitecturePiper VITS
SpeakerSingle speaker (Rasa Santali Female), sid = 0
Sample rate22050 Hz
Phoneme vocabulary238 symbols (custom Santali inventory)
Training data11,767 utterances, about 20.16 hours
Training175 epochs, batch size 16 per GPU, 2 × NVIDIA Tesla T4, FP16 mixed precision
Release checkpointtraining/best_mos.ckpt (epoch 171)
Deployment formatONNX

The default model, model/santali_piper_vits.onnx, is the ONNX export of the best MOS checkpoint at epoch 171.

Quick Start

Android

Download the all in one package, extract it, and add the files to your app:

santali_piper_vits_onnx_android.tar.gz

It contains santali_piper_vits.onnx, santali_piper_vits.onnx.json, SantaliPhonemizer.kt, phoneme_id_map.json, and config.json. Phonemize the text with SantaliPhonemizer.kt, map tokens to IDs with phoneme_id_map.json, and run the model with ONNX Runtime.

Python

pip install onnxruntime numpy soundfile huggingface_hub
import json
import numpy as np
import onnxruntime as ort
import soundfile as sf
from huggingface_hub import snapshot_download

root = snapshot_download("kaushalkrishnax/santali-piper-vits")

with open(f"{root}/model/santali_piper_vits.onnx.json", encoding="utf-8") as f:
    cfg = json.load(f)

id_map = cfg["phoneme_id_map"]
inf = cfg["inference"]

# Tokenize with santali_phonemizer.py from this repo (see the file for its API)
tokens = ...  # list of atomic IPA tokens

ids = list(id_map["^"])
for t in tokens:
    ids += id_map[t] + id_map["_"]
ids += id_map["$"]

session = ort.InferenceSession(
    f"{root}/model/santali_piper_vits.onnx",
    providers=["CPUExecutionProvider"],
)

ids = np.array([ids], dtype=np.int64)
audio = session.run(None, {
    "input": ids,
    "input_lengths": np.array([ids.shape[1]], dtype=np.int64),
    "scales": np.array(
        [inf["noise_scale"], inf["length_scale"], inf["noise_w"]],
        dtype=np.float32,
    ),
    "sid": np.array([0], dtype=np.int64),
})[0].squeeze()

sf.write("output.wav", audio, cfg["audio"]["sample_rate"])

How It Works

Ol Chiki text → Santali phonemizer → IPA tokens → phoneme_id_map.json → ONNX model → audio

The model does not contain any text to phoneme logic, so the phonemizer is a required part of inference. Phonemization, tokenization, and the phoneme ID map must match what was used in training. Changing any of them independently produces inputs the network was not trained on.

SantaliPhonemizer.kt mirrors the reference santali_phonemizer.py, including Ol Chiki normalization, IPA conversion, coda handling, and Phaarkaa behavior, so Android apps do not depend on Python.

Inference Parameters

The ONNX model takes input, input_lengths, scales, and sid. scales is [noise_scale, length_scale, noise_w].

ParameterDefaultEffect
noise_scale0.0Voice variability
length_scale1.0Speaking rate (higher is slower)
noise_w0.0Duration variability

These defaults are stored in model/santali_piper_vits.onnx.json, so applications can read them from the config directly.

Repository Layout

.
├── model/
│   ├── santali_piper_vits.onnx
│   └── santali_piper_vits.onnx.json
├── training/
│   ├── best_mos.ckpt              # Release checkpoint (epoch 171)
│   ├── best.ckpt                  # Best validation mel loss
│   ├── last.ckpt                  # Latest state, for resuming training
│   ├── checkpoint_index.json
│   └── config.json
├── dataset/
│   ├── rasa_female_metadata.csv
│   └── rasa_female_metadata.parquet
├── santali_piper_vits_onnx_android.tar.gz
├── SantaliPhonemizer.kt
├── santali_phonemizer.py
├── phoneme_id_map.json
├── phoneme_training.csv
├── phoneme_training_metadata.parquet
├── config.json
├── runtime_config.json
└── model_manifest.json

Raw WAV files, training caches, the Piper source tree, and intermediate exports are not included.

Training Details

Data. The Santali female portion of AI4Bharat Rasa, filtered and preprocessed into 11,767 utterances (about 20.16 hours). Only processed metadata is published here. The source audio is not redistributed.

Setup. Piper VITS with a phoneme ID input type and a custom Santali phoneme vocabulary instead of the default English inventory. The run targeted 175 epochs, and training/config.json holds the full training configuration.

Checkpoints. The training/ folder keeps the main checkpoints so alternative selections and resumed training remain possible.

Limitations

  • Mispronunciation of rare, borrowed, or unseen words
  • Differences between written forms and expected spoken forms
  • Occasional prosody inconsistencies and synthesis artifacts
  • Reduced quality on text far from the training distribution
  • One female voice, so dialects and speaking styles are not covered

License

The model and code in this repository are released under Apache-2.0. The Rasa dataset has its own license and attribution terms, so review them before redistributing source data or derived materials. Piper and its components keep their own licenses.

Citation

@misc{kaushal2026santalipipervits,
  author    = {Kaushal, Krishna},
  title     = {Santali Piper VITS},
  year      = {2026},
  publisher = {Hugging Face},
  url       = {https://huggingface.co/kaushalkrishnax/santali-piper-vits}
}

References

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · piper

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
50da294

0 моделей