IGTranscript

Transcribing an Instagram Reel in Hindi — do I have to pick the language myself?

Yes, and the picker is the only thing that decides it. There is no “Hindi mode” and nothing reads the audio to work the language out: Hindi is one entry in a list of 99, token id 50276, and whatever entry is selected is handed to the model once at line 279 of app.js before the first window of audio is cut. The audio cannot add a language to that list or remove one from it — only the picker can. Pick Hindi for Hindi speech and it transcribes in Hindi; leave it on English, which is what the page opens with, and the same audio comes back as fluent English-shaped text rather than an error.

InVideo WW

None of this has anything to do with where the Reel came from, so uninstalling nothing and signing into nothing changes it either. What follows is the list itself: the 99 ids and where Hindi sits among them, what the picker carries into the decoder on each window, the one shape of Reel that a single language cannot cover, the failures that look like a language problem and are not, and what the three sites that rank above this one say about language across 263,728 characters of their own Instagram copy.

The picker is a list of 99 ids, and Hindi is the 18th

The list is not typed into the page. languageCodes() fetches generation_config.json from the model repository, reads the keys of lang_to_id, and settles them into the <select> as the picker’s 99 options, in id order. Fetched on 5 November 2026, both checkpoints this page offers — onnx-community/whisper-base and onnx-community/whisper-tiny — returned the same 99 keys spanning 50259 to 50357.

What the chosen language actually reaches

The picker is read once per run, not once per window. app.js hands the same language to the pipeline beside task: 'transcribe', return_timestamps: true and chunk_length_s: 30, and those four arguments are spread into a single generation config before any audio is cut. That is why the language question and the Reel-length question are the same arithmetic.

Where the language is decided and where it is copied. A picker of 99 entries on the left feeds one string into a single read, which is then placed at the front of every window the same way, while the audio only ever decides how many windows there are. One choice, repeated once per window The audio decides how many slots there are. It never fills one. the picker, 99 entries 50259 en 50276 hi 50287 ta 50299 te language: lang line 279, once hi window 1, 30 s hi window 2, 30 s hi window 3, 30 s hi window 4, 30 s the audio sets the row count the picker fills every row 2 min ÷ 30 s = 4 rows · 16 kHz mono × 4 bytes = 64 000 bytes a second
The picker is read once at line 257 of app.js and passed once at line 279; the model call additionally carries chunk_length_s: 30, so a 2-minute Reel is four 30-second windows and the selected language token is placed at the front of each of the four decodings. Nothing in the audio is consulted for the language — only for how many windows there will be.

The one Reel shape where one language is not enough

A Reel that stays in one language — Hindi commentary, Hindi interviews, Hindi monologue with English brand names dropped in — needs one setting and nothing else. The case that breaks is a Reel that switches language mid-file while the picker holds a single value for the whole run.

What looks like a language problem and is not

Four failures get blamed on the language picker and only the first is the language picker. The other three are recognised by where they break and what the page says about them, and none of them can be fixed by choosing a different entry.

The picker labels are in English, whatever your browser speaks

The 99 options are named by new Intl.DisplayNames(['en'], { type: 'language' }), and the 'en' in that call is hard-coded. Every visitor gets the same English labels, so the entry you are looking for reads “Hindi”, “Tamil” and “Telugu” on a Hindi phone, a Tamil phone or an English one. That is a deliberate trade: the label has to match the file the model ships with, since the same call is what builds the list.

What the three sites that rank above this one say

Their Instagram copy is 263,728 characters across 33 pages as of 5 November 2026. “Hindi” appears once in all of it, in a list of four example languages. “Telugu” and “Tamil” appear 0 times. “Auto-detect” appears 3 times and every one of them is a feature claim rather than a method.

Last checked: 5 November 2026. The 99 keys, the id range 50259 to 50357, and the specific ids for Hindi (50276), Tamil (50287) and Telugu (50299) were read from generation_config.json of both onnx-community/whisper-base and onnx-community/whisper-tiny on this machine on that date, as were the forced_decoder_ids of [[1, null], [2, 50359]] and decoder_start_token_id 50258. The byte counts — 3×99 = 297, 1/14 of the list in three bytes, 480,000 samples and 1,920,000 bytes a window, 7,680,000 bytes for a 2-minute Reel, 23,040,000 bytes for the same minute at 48 kHz stereo, and the 6-to-1 ratio between them — are derived from the Web Audio rule that a sample is 32 bits and printed and re-checked before they were written here, with the 16,000 Hz rate, the 30-second chunk and the 4-bytes-a-sample figure taken from app.js’s own RATE = 16000 and chunk_length_s: 30. The 79.7 MB and 43.6 MB model sizes, the 54-word and 404-word measurement, the 7.481 ratio and the 350-word difference are this site’s own recorded runs in an ordinary browser tab on a two-core, four-gigabyte machine. The 33 competitor pages and 263,728 characters are this site’s own benchmark copy, not the internet. Nothing here is a search-volume or difficulty estimate — none was available and none was invented.