/ Модель

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

Лицензия
Своя лицензия
Базовая модель
nemotron-3.5-asr-streaming-0.6b
Библиотека
nemo
Опубликована
17 сен 2026

koyal-indic-600m-1.0

Распознавание речиАудио → текст6 профессий

Мультиязычная модель Adalat AI для офлайн- и потоковой транскрипции речи на хинди, каннада, малаялам и телугу с пунктуацией и форматированием чисел.

186скачиваний за 30 дней1лайквеса обновлены17 сен 2026

Бенчмарки

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

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

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

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

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

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

Koyal Indic-4 Dual-Mode ASR 600M — мультиязычная модель распознавания речи от Adalat AI для подготовки транскриптов на хинди, каннада, малаялам и телугу. Модель содержит около 600 млн параметров и использует кэшируемый энкодер FastConformer с декодером RNN-T, обусловленным языковым промптом. Она дообучена на базе nvidia/nemotron-3.5-asr-streaming-0.6b с новой токенизацией SentencePiece на 6 000 токенов.

Один чекпойнт поддерживает пакетную офлайн-транскрипцию и потоковое распознавание с несколькими настройками задержки. Модель выдаёт транскрипты в расширенной орфографии: с пунктуацией и форматированием числительных по письменным нормам. Она предназначена, в частности, для диктовки документов и судебных записей, когда важен готовый к использованию текст.

Качество для отдельных языков в офлайн-режиме может быть ниже, чем у специализированных одноязычных моделей Koyal. Целевой язык нужно указать при запуске; распознавание переключения языков в одной фразе не обучалось. Оценка расширенной орфографии проводилась на FLEURS-RO, отражающем чтение подготовленной речи; характеристики на аудио с другими частотами дискретизации не охарактеризованы. Для работы требуется NVIDIA NeMo версии 3.0.0 или новее. Лицензия указана как other.

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

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

Ограничения

Целевой язык требуется задавать при инференсе; модель не обучалась распознавать переключение языков внутри высказывания. Тесты расширенной орфографии проводились на FLEURS-RO с чтением подготовленной речи, а заявленные потоковые режимы оценивались на полных высказываниях с маской потокового режима, поэтому реальные задержка и качество при покусковой потоковой обработке могут отличаться.

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

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

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

Также подходит для

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

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

Открыть на Hugging Face

Koyal Indic-4 Dual-Mode ASR 600M

Koyal is a family of open speech recognition models for Indian languages, built by Adalat AI for document-ready dictation. Koyal models transcribe in rich orthography (RO): the output carries punctuation and formatted numerals as they appear in written documents, rather than a normalised lexical stream. This is the multilingual model, covering Hindi, Kannada, Malayalam and Telugu from a single checkpoint, in both offline and streaming modes. For higher-accuracy single-language offline transcription, see Related models.

At a glance

FieldValue
TaskAutomatic speech recognition, rich orthography
LanguagesHindi, Kannada, Malayalam, Telugu
Parameters~600M
ModesOffline + cache-aware streaming, one checkpoint, operating point set at inference
Base modelNemotron-3.5-ASR-Streaming-0.6B (NVIDIA)
FrameworkNVIDIA NeMo ≥ 3.0.0, no custom code
WER_SCRIBE (offline)12.33 hi · 12.75 kn · 18.58 ml · 20.65 te
LicenseOpenMDW-1.1

Quickstart

Requires NVIDIA NeMo ≥ 3.0.0 — the first release with the prompt-conditioned RNN-T model class this checkpoint targets.

pip install "nemo_toolkit[asr]>=3.0.0"

The target language is required and is passed through the input manifest — each entry carries lang and "prompt_mode": "langID". A bare list of file paths will not work.

import json, tempfile
import soundfile as sf
import nemo.collections.asr as nemo_asr

model = nemo_asr.models.ASRModel.from_pretrained("adalat-ai/koyal-indic-600m-1.0", map_location="cuda")
model.eval()

# Operating point; [-1, -1] = offline, [56, 3] = 240 ms streaming, ...
model.encoder.set_default_att_context_size([-1, -1])

def transcribe(model, wav_paths, lang, batch_size=32):
    """lang: 'hi-IN' | 'kn-IN' | 'ml-IN' | 'te-IN'."""
    with tempfile.NamedTemporaryFile("w", suffix=".jsonl", delete=False) as f:
        for p in wav_paths:
            f.write(json.dumps({
                "audio_filepath": p,
                "duration": sf.info(p).duration,
                "text": "",
                "lang": lang,
                "prompt_mode": "langID",
            }) + "\n")
    return [h.text for h in model.transcribe(f.name, batch_size=batch_size)]

print(transcribe(model, ["clip.wav"], lang="hi-IN"))

Input audio should be 16 kHz mono WAV. Greedy decoding reproduces the reported numbers.

For chunk-wise streaming (the deployment mode of the base encoder), use NeMo's cache-aware streaming script, exactly as for Nemotron-3.5-ASR-Streaming-0.6B. The script ships with the NeMo source tree, not the pip wheel.

git clone https://github.com/NVIDIA-NeMo/NeMo.git && cd NeMo
hf download adalat-ai/koyal-indic-600m-1.0 koyal-indic-600m-1.0.nemo --local-dir models

python examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py \
    model_path=models/koyal-indic-600m-1.0.nemo \
    dataset_manifest=manifest.json \   # entries need audio_filepath (+ text for WER)
    target_lang=hi-IN \                # hi-IN | kn-IN | ml-IN | te-IN
    att_context_size="[56,13]" \       # streaming points only: [56,0] [56,3] [56,6] [56,13]
    batch_size=32 \
    output_path=out/

target_lang sets the language prompt for every chunk (model.set_inference_prompt). This script only runs the streaming operating points; [-1, -1] (offline) is not a chunked mode — use transcribe() above.

Intended use

Document-ready speech transcription in Hindi, Kannada, Malayalam and Telugu: domains where the transcript is the deliverable and punctuation and numeral formatting must match written convention, such as legal and courtroom dictation. The dual-mode design targets deployments that need both live streaming dictation and offline batch transcription from a single model.

For single-language offline transcription the monolingual Koyal models are more accurate and five times smaller. This model earns its place when four languages, or live streaming, must come from one artifact.

Limitations

  • Reported streaming operating points are streaming-masked full-utterance decodes, not chunk-wise cache-aware inference. Production streaming latency and accuracy characteristics may differ.
  • Trained and evaluated on 16 kHz audio; performance on other sampling rates is not characterised.
  • Not trained for code-switched speech; each utterance is transcribed in a single target language.
  • The target language must be supplied at inference. There is no language identification step.
  • Rich-orthography evaluation covers FLEURS-RO only, which reflects read speech.

Model architecture

FieldValue
ArchitectureCache-aware FastConformer encoder with prompt-conditioned RNN-T decoder
Parameters~600M
EncoderNemotron-3.5-ASR-Streaming-0.6B cache-aware FastConformer, extended during fine-tuning with a full-context offline attention mode alongside its native streaming modes
DecoderPrompt-conditioned RNN-T, trained from scratch
TokenizerSentencePiece, 6,000 tokens, unified across hi/kn/ml/te (replaces the base model's tokenizer)
Language conditioning128-dim one-hot language prompt fused per encoder frame
Input16 kHz mono audio + target language
OutputDocument-ready text in the target language with punctuation and formatted numerals

The base encoder is NVIDIA's cache-aware streaming FastConformer. Its tokenizer covers Devanagari and Latin but returns unknown tokens for Dravidian scripts (NVIDIA-NeMo/Speech issue #15793), so we replaced it with a 6,000-token SentencePiece vocabulary built for the four target languages and paired the encoder with a fresh prompt-conditioned RNN-T decoder. The released weights are an average of the final training checkpoints.

Dual-mode operation

During fine-tuning the encoder's trained attention-context set is extended with a full-context offline point, training jointly on five configurations so one checkpoint serves both workloads.

Operating pointatt_context_sizeLookahead
Offline[-1, -1]Full utterance
Streaming[56, 13]1040 ms
Streaming[56, 6]480 ms
Streaming[56, 3]240 ms
Streaming[56, 0]0 ms

The operating point is selected at inference time; no re-training or separate checkpoints are needed to move along the latency–accuracy curve.

Evaluation

Results are reported on two test-set families:

  • rich-orthography, with references curated to carry punctuation and written numerals, scored with WER_SCRIBE; and
  • verbatim, the public benchmarks as published, scored with ER_LEX.

Numbers are not comparable across the two settings. FLEURS-RO appears in both tables — that is the same benchmark scored against different references, so its ER_lex values differ. That is expected, not a discrepancy.

Most public test sets are not punctuated. Across the four languages, only FLEURS-RO (100% in every language), RESPIN (56–59%) and IndicTTS (97% hi, 76% kn, 100% te, but 2% ml) carry punctuation in their references; IndicVoices, Kathbath, MUCS and Common Voice carry none.

Scoring a rich-orthography model on WER_SCRIBE against an unpunctuated reference charges every emitted comma as an insertion — it measures the reference's annotation convention, not the model. The verbatim setting therefore uses ER_LEX, which scores word identity alone and is the task all these systems share.

Rich-orthographyVerbatim
ReferencesCurated to rich orthographyPublic benchmarks as published
MetricWER_SCRIBE, with ER_lex / ER_num / ER_punc and jiwer WERER_LEX only
QuestionDoes the model produce the correct document-ready transcript?Does the model recognise the words?

Rich-orthography results

Evaluated with scribe-eval on FLEURS-RO, the rich-orthography re-annotation of the FLEURS test sets introduced in the SCRIBE paper [1]. ER_lex — lexical tokens. ER_num — number tokens. ER_punc — punctuation tokens. WER_SCRIBE — over all tokens (WER_S in the SCRIBE paper). WER — computed with jiwer on the same unnormalised text.

No text normalisation is applied to references or hypotheses. Lower is better throughout.

WER_SCRIBE (%) on FLEURS-RO by operating point.

LanguageOffline1040 ms480 ms240 ms0 ms
Hindi12.3313.2213.5313.6014.54
Kannada12.7513.3913.7714.0114.80
Malayalam18.5819.2319.6219.7820.51
Telugu20.6521.6321.7622.0322.87

At zero lookahead the model stays within 2.2 WER_SCRIBE points of full-context offline decoding in every language. The degradation is gradual rather than abrupt, which is what makes a single checkpoint practical for both workloads.

Operating pointLanguageER_lex (%)ER_num (%)ER_punc (%)WER_SCRIBE (%)WER (%)
Offline [-1,-1]hi9.940.342.0612.3314.56
kn9.400.452.9012.7518.95
ml9.950.448.1818.5826.43
te13.200.666.7920.6526.89
1040 ms [56,13]hi10.670.362.1913.2215.62
kn9.940.433.0213.3919.50
ml10.430.498.3219.2327.17
te13.870.737.0321.6327.68
480 ms [56,6]hi10.920.342.2713.5315.92
kn10.210.503.0713.7719.82
ml10.750.518.3619.6227.46
te13.880.767.1221.7628.06
240 ms [56,3]hi10.970.392.2413.6015.99
kn10.350.483.1814.0120.14
ml10.730.568.4919.7827.81
te14.010.787.2422.0328.15
0 ms [56,0]hi11.750.452.3514.5416.94
kn10.930.543.3314.8020.99
ml11.320.618.5820.5128.72
te14.470.877.5322.8729.21

Why WER_SCRIBE and WER differ

Alignment in scribe-eval is sandhi-tolerant: agglutination makes word boundaries unstable in Indic text, and the same speech can be validly written as one word or two. scribe-eval detects such merges and splits at alignment time and scores them as matches, where plain word-level WER counts each as an error. The gap is widest in Malayalam, the most agglutinative of the four — 18.58 WER_SCRIBE against 26.43 plain WER on identical offline output.

Because the model emits punctuation and written number forms, error rates on unnormalised rich-orthography references are not directly comparable to WER figures computed on normalised text. See the SCRIBE paper [1] for metric definitions and the FLEURS-RO annotation protocol.

Verbatim results

Public benchmarks as published, scored with ER_LEX and macro-averaged per language. Benchmark coverage differs by language — Hindi 7, Telugu 6, Kannada 5, Malayalam 5.

Numerals are normalised on both sides with Indic Num2Words before scoring. Without it, a model that writes 15 is charged an error against a reference that spells the number out, which measures formatting convention rather than recognition.

The systems below differ in size, training objective and output format, and saaras-v4 is a commercial API rather than an open model. This is a range, not a ranking.

Macro ER_LEX (%) per language. Lower is better.

ModelHindiKannadaMalayalamTeluguMean
benchmarks (n)7556
indic-conformer-600m-ctc10.2619.2818.0317.3616.23
indic-conformer-600m-rnnt9.7117.9616.3216.5615.14
Koyal monolingual (120M each)9.5918.2014.1915.8114.45
koyal-indic-600m-1.012.5221.1519.2520.4518.34
saaras-v4 (commercial)7.9516.6712.8213.7112.79
sravaani-1.09.7016.6614.9516.5514.47

Training data

Fine-tuned on ~6,900 hours of speech across the four target languages, assembled from public sources with transcripts curated to rich orthographic form (punctuation and written numerals preserved) following the transcription curation pipeline described in the SCRIBE paper [1] — the same corpora used to train the monolingual Koyal models.

LanguageHours
Hindi~2,400
Telugu~1,720
Kannada~1,440
Malayalam~1,350

Sources across languages include IndicVoices and IndicVoices-R, Shrutilipi, SeamlessAlign, Kathbath, SPRING-INX, OpenSLR (63, 66, 79, 118, 126), Mann ki Baat, Vaani, IMaSC, IndicTTS, Google FLEURS, ULCA, Mozilla Common Voice and Festvox IIITH. Per-language source breakdowns are on the monolingual model cards. Lahaja is held out entirely for evaluation and contributes no training data.

Related models

ModelLanguageParamsModes
koyal-hi-120m-1.0Hindi120MOffline
koyal-kn-120m-1.0Kannada120MOffline
koyal-ml-120m-1.0Malayalam120MOffline
koyal-te-120m-1.0Telugu120MOffline
koyal-indic-600m-1.0hi · kn · ml · te600MOffline + streaming

References

  1. SCRIBE: Diagnostic Evaluation and Rich Transcription Models for Indic ASR
  2. Nemotron-3.5-ASR-Streaming-0.6B — base encoder
  3. Stateful Conformer with Cache-based Inference for Streaming Automatic Speech Recognition — cache-aware streaming architecture

Citation

@article{manohar2026scribe,
  title   = {SCRIBE: Diagnostic Evaluation and Rich Transcription Models for Indic ASR},
  author  = {Manohar, Kavya and Bhattacharya, Arghya and Juvekar, Kush and Nethil, Kumarmanas},
  journal = {arXiv preprint arXiv:2605.20712},
  year    = {2026}
}

License

Use of this model is governed by the OpenMDW-1.1 license, the same terms as the base encoder Nemotron-3.5-ASR-Streaming-0.6B.

Note that the monolingual Koyal models are CC-BY-4.0; this model carries a different licence because it inherits the base encoder's terms.

Contact

Questions and feedback: the Community tab of this repository.

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

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

GPU в ailist

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

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

Модели NVIDIA NeMo требуют отдельного рантайма.

Ревизия весов
959231d

0 моделей