Views
No views yet
Research preview. Numbers and weights may change. Evaluated on internal benchmarks; see disclaimers below.
POST https://router.trelis.com/api/v1/transcribe for programmatic access (requires an API key).indic-hindi normaliser (NFC + Indic
normalisation, keeps Devanagari matras/nuktas, strips punctuation; not the Whisper default, which strips
matras and inflates Devanagari WER). Compared against two leading commercial APIs: Sarvam (Saaras-v3)
and ElevenLabs Scribe-v2.| Benchmark | whisper-hinglish-preview | Sarvam | Scribe-v2 | whisper-large-v3 | Vaani |
|---|---|---|---|---|---|
| CoSHE-500 (conversational CS) | 13.67 | 11.47 ᶜᵐ | 12.43 | 29.74 | 73.96 |
| cs-fleurs (read CS) | 10.19 | 16.47 ᶜᵐ | 7.57 | 33.92 | 34.12 |
| hiacc-adult (accented CS) | 12.73 | 14.44 ᶜᵐ | 16.98 | 28.53 | 60.09 |
| hiacc-child (accented CS) | 10.69 | 14.11 ᶜᵐ | 18.36 | 27.91 | 32.17 |
| Benchmark | whisper-hinglish-preview | Sarvam | Scribe-v2 | whisper-large-v3 | Vaani |
|---|---|---|---|---|---|
| Common Voice Hindi (cv-hi) | 12.86 | 12.40 | 13.44 | 30.82 | 14.48 |
| FLEURS-hi | 12.57 | 10.07 | 11.33 | 27.50 | 11.58 |
| Benchmark | whisper-hinglish-preview | Sarvam | Scribe-v2 | whisper-large-v3 | Vaani |
|---|---|---|---|---|---|
| FLEURS-en | 6.93 | 5.14 | 4.01 | 4.81 | 101.66 |
1from transformers import WhisperProcessor, WhisperForConditionalGeneration
2import soundfile as sf, torch
3
4repo = "Trelis/whisper-hinglish-preview"
5proc = WhisperProcessor.from_pretrained(repo)
6model = WhisperForConditionalGeneration.from_pretrained(repo, torch_dtype=torch.bfloat16).to("cuda").eval()
7
8audio, sr = sf.read("clip.wav") # 16 kHz mono
9feat = proc.feature_extractor(audio, sampling_rate=16000, return_tensors="pt").input_features.to("cuda", torch.bfloat16)
10
11# Hindi audio → force <|hi|> ; English audio → force <|en|>
12ids = proc.tokenizer.convert_tokens_to_ids
13prompt = [ids("<|startoftranscript|>"), ids("<|hi|>"), ids("<|transcribe|>"), ids("<|notimestamps|>")]
14out = model.generate(input_features=feat,
15 decoder_input_ids=torch.tensor([prompt]).to("cuda"),
16 max_new_tokens=440)
17print(proc.tokenizer.decode(out[0], skip_special_tokens=True))<|mixedcode|> marker/token for utterances that mix
Devanagari and Latin script. Insert it right after the language token, choosing the language token by the
dominant script of the utterance:1mc = proc.tokenizer("<|mixedcode|>", add_special_tokens=False).input_ids
2prompt = [ids("<|startoftranscript|>"), ids("<|hi|>"), *mc, ids("<|transcribe|>"), ids("<|notimestamps|>")]<|hi|> / <|en|>) as shown above — standard Whisper usage — for the
reported quality.openai/whisper-large-v3.ARTPARK-IISc/whisper-large-v3-vaani-hindi,
a Vaani-fine-tuned Whisper-large-v3 from the Vaani project (ARTPARK @ IISc). We gratefully credit the
Whisper-Vaani model and the Vaani team.soketlabs/CoSHE-Eval (Soket Labs, CC-BY-NC-4.0).