Skip to content

14. Further reading

Each page of this tutorial compresses one or more papers. The research section has a short, structured summary of each, with the numbers the paper reports and why it matters for vaak. This page maps tutorial topics to those summaries and lists a few primary sources outside the papers.

Tutorial page Read next
4. Acoustic encoders Conformer (2020), FastConformer (2023), wav2vec 2.0 (2020), XLS-R (2021)
5. CTC Graves et al., CTC (2006)
6. Attention decoders and Whisper Listen, Attend and Spell (2015), Whisper (2022)
7. Transducers RNN Transducer (2012), TDT (2023), FastConformer (2023)
8. Tokenization and multilingual Whisper (2022), IndicVoices (2024), Vaani benchmark (2026)
10. Metrics Vaani benchmark (2026), Factors affecting Indic ASR (2026)
11. Streaming RNN Transducer (2012), TDT (2023)
12. Tiny STT from scratch CTC (2006), IndicVoices (2024) for what real data looks like
13. Fine-tuning Whisper with LoRA Whisper (2022), Factors affecting Indic ASR (2026)

If you want the history in one sitting, read the research summaries in this order. Each one answers a question the previous one raised.

  1. CTC (2006): how to train without alignments.
  2. RNN Transducer (2012): how to keep streaming and still use output history.
  3. Listen, Attend and Spell (2015): the attention alternative.
  4. Conformer (2020): the encoder that most current models use.
  5. wav2vec 2.0 (2020) and XLS-R (2021): learning from unlabelled audio, then doing it in 128 languages.
  6. Whisper (2022): scale and weak supervision instead of self-supervision.
  7. FastConformer (2023) and TDT (2023): making Conformer transducers fast.
  8. IndicVoices (2024): the data problem for Indian languages.
  9. Vaani benchmark (2026) and Factors affecting Indic ASR (2026): how to evaluate Hindi honestly.

These are code and documentation, not papers. They are the places to look when a detail in this tutorial does not match what a model actually does.

  • Whisper’s reference implementation (openai/whisper on GitHub), especially audio.py for the log-mel recipe, tokenizer.py for the special tokens, and decoding.py and transcribe.py for temperature fallback.
  • faster-whisper and CTranslate2 documentation, for the decoding options that faster-whisper: backends accept.
  • NVIDIA NeMo documentation on ASR models, for Conformer, FastConformer, CTC and TDT configuration, cache-aware streaming, and SentencePiece tokenizers.
  • Hugging Face transformers documentation for WhisperForConditionalGeneration, Wav2Vec2ForCTC and the generate options (no_repeat_ngram_size, repetition_penalty).
  • peft documentation for LoraConfig and merging adapters.
  • pyctcdecode and KenLM for CTC beam search with an n-gram language model.
  • jiwer for WER and CER, and torchaudio.functional.forced_align for alignment.
  • Silero VAD for voice activity detection.
  • AI4Bharat’s IndicConformer and IndicWav2Vec model cards, for the exact normalisation used in their training transcripts.
  • The Unicode Standard chapter on Devanagari, for what NFC does and does not do to nukta and conjunct forms.
  • FLEURS (google/fleurs): read speech, 102 languages, about 10 hours per language; the default for quick comparisons (fleurs-hi, fleurs-en).
  • Common Voice 17 (mozilla-foundation/common_voice_17_0): crowd-sourced read speech with many speakers; needs a Hugging Face token (cv-hi).
  • Kathbath (ai4bharat/Kathbath): read speech in 12 Indian languages from AI4Bharat (kathbath-hi).
  • IndicVoices (AI4Bharat): spontaneous and conversational speech, the closest to real-world Hindi; see its summary.
  • Vaani Benchmark V1.0 (ARTPARK-IISc): spontaneous Hindi with three references per utterance; see its summary.

Every benchmark number on this site states its dataset and whether it was reproduced by vaak or published by the model’s authors. If you find a mismatch between a claim here and a paper, the paper wins; please open an issue.