Harshkmr/omniscribe_corpus
OmniScribe Corpus A multilingual speech transcription corpus designed for fine-tuning ASR models on Indian medical and general-domain speech. It covers Hindi, Marathi, and Indian English, with a focus on clinical and healthcare contexts. Overview Split Rows (after oversampling) Approx. Duration train ~30750 ~230 hrs benchmark ~4,089 ~25 hrs Audio samples average 20–30 seconds each. All samples are at least 5 seconds… See the full description on the dataset page: https://huggingface.co/datasets/Harshkmr/omniscribe_corpus.
OmniScribe Corpus
A multilingual speech transcription corpus designed for fine-tuning ASR models on Indian medical and general-domain speech. It covers Hindi, Marathi, and Indian English, with a focus on clinical and healthcare contexts.
Overview
Audio samples average 20–30 seconds each. All samples are at least 5 seconds long.
Data Sources
Train Split
Oversampling note: Ekacare rows are repeated (×2 EN, ×5 HI) in the train split to compensate for the small pool size and to up-weight high-quality clinical speech. Oversampled rows are spread evenly via a global shuffle (seed=42).
Benchmark Split
No oversampling is applied. Sources are held-out partitions not seen during training.
Schema
Each row contains the following columns:
System Prompts
Each row carries a system_prompt tailored to its source and language. These are designed for instruction-tuned models (e.g. Whisper, Gemini, Qwen-Audio) that accept a system/instruction context alongside the audio.
All prompts instruct the model to use [INAUDIBLE] for uncertain words and to return only the transcription with no additional commentary.
Construction
The corpus was built using a two-stage pipeline:
- `build_corpus` — streams each source dataset independently, filters samples shorter than 5 seconds, shuffles with a 200-sample buffer (seed=42), and uploads to five separate per-language HF repos in 300-row Parquet chunks. Each repo can be rebuilt independently on failure.
- `concat_corpus` — loads all per-language repos, applies oversampling to the train split, concatenates, shuffles globally (seed=42), and pushes to this final repo.
Per-language intermediate repos:
Harshkmr/omniscribe_indic_hindiHarshkmr/omniscribe_indic_marathiHarshkmr/omniscribe_outcomesaiHarshkmr/omniscribe_ekacare_enHarshkmr/omniscribe_ekacare_hi
Usage
from datasets import load_dataset
# Full train split
ds_train = load_dataset("Harshkmr/omniscribe_corpus", split="train")
# Benchmark split
ds_bench = load_dataset("Harshkmr/omniscribe_corpus", split="benchmark")
# Filter by language
hindi_train = ds_train.filter(lambda x: x["language"] == "hindi")Using with a model
# The system_prompt field is ready to pass directly to instruction-tuned ASR models
sample = ds_train[0]
print(sample["system_prompt"])
# → "You are a helpful general clerk from India who is fluent in Hindi ..."
audio = sample["audio"] # {"array": np.ndarray, "sampling_rate": int}
target = sample["text"] # ground-truth transcriptionIntended Use
- Fine-tuning multilingual ASR models on Indian-accented speech
- Benchmarking transcription quality on medical vs. general-domain audio
- Instruction-tuning audio-language models with role-specific prompts
Limitations
- Ekacare rows are repeated in the train split (×2 EN, ×5 HI). Models may memorise these samples; exclude the
ekacare-*source rows if you need a fully deduplicated train set. - No Bhojpuri in the current build (infrastructure is in place; data sourcing is pending).
- Audio quality varies across sources — IndicVoices is crowdsourced field audio; OUTCOMESAI and Ekacare are semi-controlled clinical recordings.
- This corpus is private and intended for internal model development only. Downstream licensing must comply with each upstream dataset's terms.
Citation
If you use this corpus, please cite the upstream datasets:
@misc{omniscribe_corpus,
title = {OmniScribe Corpus},
author = {Harshkmr},
year = {2025},
note = {Compiled from ai4bharat/IndicVoices, OUTCOMESAI/medical\_n\_common\_speech\_corpus\_50\_50, and ekacare/eka-medical-asr-evaluation-dataset}
}