Source-linked AI summary
The TTS-STT Flywheel: Synthetic Entity-Dense Audio Closes the Indic ASR Gap Where Commercial and Open-Source Systems Fail
Venkata Pushpak Teja Menta
TL;DR
Niche-domain Indic ASR lacks coverage for entity-dense content such as numbers, currency, addresses, brands, and code-mix. The paper uses a self-contained TTS–STT flywheel to synthesize multilingual entity-dense audio and LoRA-fine-tune Indic ASR. The approach improves entity recovery over open-source baselines across Telugu, Hindi, and Tamil, but remains below preregistered targets and underperforms commercial Hindi ASR.
Problem
Indic ASR systems under-cover entity-dense speech containing digit strings, currency amounts, addresses, brand names, and English/Indic code-mix.
Method
A self-contained flywheel generates approximately 22,000 multilingual entity-dense utterances with open-source and commercial TTS, then applies LoRA adaptation to vasista22 models.
Results
The flywheel beats vasista22 across Telugu, Hindi, and Tamil, reaching EHR 0.473 in Telugu, 0.337 in Hindi, and 0.543 in Tamil; commercial Deepgram remains stronger on Hindi.
Takeaways & Limitations
Targeted synthetic entity-dense data can improve Indic ASR where commercial entity coverage is weak, while gains are language-dependent.
Takeaways & Limitations
The native-speech validation is limited to 20 Telugu utterances from one speaker, leaving cross-speaker and cross-environment generalisation untested.
Abstract
from arXiv · showhide
Niche-domain Indic ASR -- digit strings, currency amounts, addresses, brand names, English/Indic codemix -- is under-served by both open-source SOTA and commercial systems. On a synthesised entity-dense Telugu test set (held-out by synthesis system), vasista22/whisper-telugu-large-v2 (open SOTA) achieves Entity-Hit-Rate (EHR) 0.027 and Deepgram Nova-3 (commercial) 0.16. We close this gap with a self-contained TTS<->STT flywheel: an open-source Indic TTS pipeline synthesises ~22,000 entity-dense Indic-English code-mix utterances at <$50 marginal cost, and a LoRA fine-tune on top of vasista22 achieves EHR 0.473 on the held-out test (17x over open SOTA, 3x over commercial), with read-prose regression bounded to +6.6 pp WER on FLEURS-Te. Cross-language: beta-Hi 0.337 (7x vs vasista22) and beta-Ta 0.543 (22x vs vasista22, 22x vs Deepgram); on Hindi where Deepgram has substantial entity coverage, the flywheel underperforms commercial. All three beta models fall below pre-registered EHR targets (0.75 for Te, 0.65 for Hi/Ta); we report honestly. A native-human-recorded sanity check (n=20 Telugu) confirms transfer to real speech (beta-Te EHR 0.516 on native vs 0.473 on synth). An EDSA-isolation ablation (LoRA on FLEURS-Te alone) yields EHR 0.020 on the same held-out, attributing ~100% of the gain to the EDSA corpus. We additionally report a language-conditional finding: vanilla Whisper-large-v3 has Telugu-specific Script Collapse (SFR 0.46-0.71) that a per-language LoRA corrects (SFR 0.81-0.97), but the recipe is contraindicated on Hindi and Tamil where vanilla SFR >= 0.98. Code, holdouts, predictions, EDSA corpus, and entity dictionaries are released open-source.
I. Introduction
Entity-dense Indic audio contains phones, pincodes, currency, addresses, brands, and code-mix that read-prose ASR under-covers. A TTS–STT flywheel targets this gap with synthetic data, entity-aware evaluation, and language-conditional script-fidelity adaptation.
- Motivation: 0.027 EHR for vasista22 and 0.16 for Deepgram Nova-3 reveal a large entity-dense Telugu gap despite read-prose WERs of 0.33 and 0.37.The held-out test is synthesised entity-dense Telugu audio.
- Contribution: ∼22,000 entity-dense utterances across Telugu, Hindi, and Tamil support a self-contained TTS↔STT flywheel with LoRA adaptation.The pipeline uses open-source TTS for data generation and reports EHR gains over open-source SOTA.
- Contribution: EHR evaluates entity recovery with class-specific semantic normalisation, addressing mismatches that conventional WER treats as errors.The implementation is deterministic and has 19/19 unit tests passing.
- Results: The flywheel reaches EHR 0.473 in Telugu, 0.337 in Hindi, and 0.543 in Tamil, beating open-source SOTA by 7–22× and commercial Deepgram in two languages.Hindi is the exception against commercial Deepgram.
- Results: Per-language LoRA corrects Telugu Script Collapse from SFR 0.46–0.71, but the same recipe is contraindicated on Hindi and Tamil where vanilla SFR ≥0.98.The finding is language-conditional rather than a universal recipe.
III. Method
The method constructs Entity-Dense Synthetic Audio from curated multilingual entity classes, generated carrier utterances, diverse TTS systems, and filtering. Cartesia audio is withheld by synthesis system to evaluate transfer beyond training acoustics.
- EDSA corpus: Six entity classes cover digits, currency, addresses, brands, code-mix, and proper nouns, with approximately 500 seed entities per language-class cell.Seeds come from Wikidata, AI4Bharat lexicons, and native-speaker curation.
- EDSA corpus: 22,193 rows survive generation, deduplication, and script-purity filtering across Telugu, Tamil, and Hindi at an Anthropic spend of $13.95.Utterances are conditioned on language, class, and seed entity.
- EDSA corpus: Digit runs are rewritten into language-specific spelled-out forms after an audit found that synthetic audio could realise labels such as “OTP 54235” as a currency phrase.Approximately 5,174 rows are affected across digit, pincode, and house-or-plot classes.
- Multi-system synthesis routing: Five TTS systems provide synthesis diversity because a naive single-TTS pipeline can overfit STT to one voice’s acoustic distribution.Routing uses Praxy, Chatterbox, IndicF5, ElevenLabs, and Cartesia.
- Filtering: ∼10–15% of clips are rejected by a per-class CER filter, leaving ∼19,500 clips and ∼22 audio-hours.The filter uses the same vasista22 models used as experimental baselines.
- Held-out evaluation: ∼1,270 Cartesia rows per language are withheld, and class-balanced Cartesia subsets of n = 86–102 form the entity-dense evaluation sets.Other synthesis systems remain in the training mix.
C. LoRA fine-tuning recipe
The paper applies language-specific LoRA fine-tuning to Whisper-based models, using different base checkpoints and conservative settings for the already fine-tuned vasista22 models. Training combines real Indic speech with a smaller synthetic EDSA component while excluding Cartesia holdouts.
- Whisper-large-v3 recipe: Whisper-large-v3 models are fine-tuned per language with rank-16 LoRA adapters targeting attention projections and language-specific decoder prefixes.The recipe uses 6,000 steps and a peak learning rate of 8 · 10^-5.
- vasista22 recipe: The vasista22 recipe uses 4,000 steps and a peak learning rate of 4 · 10^-5 to reduce catastrophic forgetting of read-prose competence.Cartesia rows are excluded from the training manifest.
- Training data: Training mixes approximately 40 hours of IndicVoices, 5–30 hours of Common Voice, 10 hours of FLEURS, and 22 hours of EDSA per language.The resulting mix is approximately 70–80% real and 20–30% synthetic, depending on language.
D. Entity-Hit-Rate (EHR) metric
EHR measures reference entity-token recovery with class-specific normalisation, unlike WER’s surface-form sensitivity. The headline macro-EHR weights entity classes equally, while strict matching remains a stated limitation.
- Definition: EHR measures the fraction of reference entity tokens correctly recovered with class-specific normalisation.This avoids treating semantically equivalent currency forms as automatically different under ordinary WER.
- Class normalisation: Digit runs and pincodes require NFKC-normalised exact matches, with pincodes additionally requiring length six.These rules define class-specific entity recovery.
- Class normalisation: Currency matching allows numeric values within ±0.5% after parsing Latin numerals and Indic word multipliers.Brand, proper-noun, spelled-digit, and house-or-plot classes use separate matching rules.
- Aggregation: Macro-EHR averages per-class EHRs equally, preventing classes with more tokens from dominating headline results.Micro-EHR instead pools entity tokens across classes.
- Caveat: EHR conservatively misses cross-form equivalents when the hypothesis and reference use different surface renderings, including Latin digits versus Telugu number words.The paper leaves bidirectional currency parsing for a future version.
E. Script Fidelity Rate (SFR)
SFR measures how closely transcript letters remain in the expected language script, complementing WER by exposing script-collapsed outputs. The evaluation spans real and synthesised holdouts, including a Cartesia-held-out entity-dense set.
- SFR is the fraction of transcript letter characters falling within the expected language script’s Unicode block, excluding whitespace, digits, and punctuation.
- The evaluation uses FLEURS read-prose utterances, Common Voice volunteer recordings, IndicVoices-General conversational speech, and a Cartesia-held-out entity-dense set.
- The entity-dense holdout contains 86–102 utterances per language and excludes Cartesia synthesis rows from training to isolate entity-dense capability from synth-system-specific acoustics.
B. Systems benchmarked
The benchmark compares zero-shot, open-source, commercial, and two paper systems, with Praxy-STT-rb evaluated as the headline entity-adapted model. Its Telugu result substantially improves EHR while retaining high script fidelity, although the headline score remains below the preregistered target.
- Five systems are benchmarked: vanilla Whisper-large-v3, vasista22 open-source SOTA, Deepgram Nova-3, Praxy-STT-r2, and headline Praxy-STT-rb.
- The headline EHR of 0.473 falls below the preregistered target of ≥0.75, so entity-dense Indic ASR remains substantially open.
- “—” denotes unrun scorecards or zero-count holdout classes rather than a system failure, depending on the table.
- 17× and 3× are the reported gap closures over open-source SOTA and commercial systems, respectively, on the Telugu held-out set.
- 0.473 EHR is achieved by Praxy-STT-rb on Telugu while preserving SFR at 0.928, compared with vasista22 at 0.027 EHR and Deepgram at 0.160.
B. Native human-recorded sanity check
A 20-utterance native-human Telugu sanity check tests whether the synthetic-data gain transfers to natural speech. The reported EHR, WER, and SFR remain comparable or better on native audio, while broader cross-language and read-prose evaluations define the surrounding scope.
- The native sanity check uses 20 class-balanced Telugu utterances read naturally by one native speaker with a consumer microphone.
- 0.516 EHR on native speech exceeds the 0.473 EHR on synthesised speech for β-Te, with no reported degradation.
- Native WER is 0.358 versus 0.324 on synthesis, while SFR is 0.881 versus 0.928, indicating broadly stable transfer across these metrics.
- 7–22× EHR lifts over vasista22 occur across Telugu, Hindi, and Tamil, while Hindi trails Deepgram’s 0.485 EHR.
- +6.6 pp absolute WER is the Telugu FLEURS regression, while Hindi and Tamil exceed the preregistered +7 pp threshold on specified read-prose holdouts.
E. Language-conditional Script Collapse fix
The per-language LoRA fixes Telugu Script Collapse but harms Hindi and Tamil, where vanilla Whisper-v3 already preserves script fidelity. The open-source vasista22 baseline remains near-perfect across all three languages.
- Language-conditional Script Collapse fix: SFR rises from 0.46–0.71 to 0.81–0.97 on Telugu with the per-language LoRA, while WER falls by 1.5×–3.9×.Vanilla Telugu errors include Kannada or Devanagari script emissions, although WER remains above 0.8 on all three holdouts.
- Language-conditional Script Collapse fix: SFR is ≥0.98 for vanilla Whisper-v3 on every Hindi and Tamil holdout, leaving no Script Collapse to fix.The same LoRA recipe instead regresses these languages.
- Language-conditional Script Collapse fix: vasista22 sits at approximately 1.0 SFR across Telugu, Hindi, and Tamil, unlike the language-conditional behavior of Whisper-v3 and its LoRA variant.Figure 2 compares vanilla Whisper-v3, Praxy-STT-r2, and vasista22 on CV25.
- Language-conditional Script Collapse fix: WER regresses by 20–160% relative (+19 to +69 pp absolute) and SFR falls as low as 0.43 on Hindi and Tamil with the same recipe.The paper therefore contraindicates this recipe outside Telugu and recommends first computing vanilla SFR on a small development sample.
- Open-source versus commercial read-prose: On non-overlapping read-prose holdouts, vasista22 wins or ties Deepgram on three of six relevant cells, while Deepgram wins the other three.CV25-Hi shows the largest stated open-versus-commercial gap: vasista22 0.278 versus Deepgram 0.363.
G. EDSA-isolation ablation
The EDSA-isolation ablation shows that entity-dense recognition comes from the synthetic EDSA training signal, not LoRA adaptation alone. A read-prose-only LoRA remains at the vasista22 baseline floor, while full EDSA-LoRA reaches 0.473 EHR.
- EDSA-isolation ablation: EHR is 0.020 for the FLEURS-only LoRA control versus 0.473 for full EDSA-LoRA on the same held-out entity-dense Telugu set.The control uses the same LoRA recipe but replaces EDSA with approximately 2,281 read-prose FLEURS-Te clips.
- EDSA-isolation ablation: The paper attributes approximately 100% of β-Te’s entity-dense gain to the EDSA corpus rather than to the LoRA process.The comparison holds the LoRA recipe fixed while changing the training corpus.
- EDSA-isolation ablation: The FLEURS-only control is slightly below the 0.027 vasista22 baseline, indicating that LoRA adaptation without entity-dense data does not add entity-recognition capability.Its WER is identical to the vasista22 base at 0.582, so the control does not actively damage read-prose performance.
- Motivation: Targeted niche-data adaptation addresses the entity-dense gap that remains despite strong read-prose performance from existing systems.The entity-dense holdout reports vasista22 EHR 0.027 and Deepgram EHR 0.16.
B. Why a TTS flywheel beats human-curated entity-dense data
The TTS flywheel offers a substantially cheaper route to entity-dense ASR adaptation than paid human transcription, while exposing language-conditional risks and several evaluation limits. Its practical use depends on diagnosing base-model suitability and expanding validation beyond small or imbalanced holdouts.
- Cost and data strategy: $16 in generation plus $15 in Modal time produces the EDSA pipeline, versus $660 for 22 hours of paid human transcription.Vendor-ratecard ElevenLabs+Cartesia synthesis would cost approximately $400, but this work used promotional credits.
- Language-conditional applicability: A 30-utterance vanilla-SFR diagnostic is proposed: apply the LoRA recipe only when SFR is <0.85 on at least two holdouts.The rule reflects Telugu’s under-trained base representations and avoids degrading Hindi and Tamil.
- Validation boundary: β-Te transfers from synthetic speech EHR 0.473 to native-human Telugu EHR 0.516, but the sanity check uses only 20 utterances from one speaker.The paper identifies cross-speaker and cross-environment validation as the next step.
- Evaluation limitations: No bootstrap confidence intervals are reported, so per-cell point estimates retain residual variance that is not formally quantified.Directional findings are described as stable across multiple holdouts.
- Benchmark scope: The study benchmarks only Deepgram commercially, excludes ElevenLabs Scribe and Sarvam STT, and notes residual WER variance from differing post-processing.The exclusions reflect rate limits and uncertain Sarvam API availability at evaluation time.
- Evaluation limitations: The Cartesia entity-dense holdout contains only 0–2 rows for some entity classes, which are reported as N/A rather than imputed.Future work will explicitly class-balance the held-out set.
- Ablation scope: Synth-fraction and source-mix LoRA ablations were deferred because 24 additional retrains were unfundable at the available compute budget.The language-conditional applicability ablation was run and its negative Hindi/Tamil result was reported.
VIII. Reproducibility
The project releases code, datasets, predictions, model adapters, and evaluation artifacts needed to reproduce or re-score the reported experiments. Licensing and audited spending are also documented.
- Released artifacts: Code, holdout JSONLs, predictions JSONLs, the EDSA corpus, and entity dictionaries are released in the stt-flywheel repository.The repository includes evaluation harnesses, ground truths, and per-utterance predictions for every reported system.
- Released artifacts: Holdout files expose ids, text, audio paths, entity tokens, and entity classes for Telugu, Tamil, and Hindi evaluations.The files are released under CC-BY-4.0.
- Released artifacts: Per-utterance hypothesis JSONLs enable third-party re-scoring against alternative metrics.These predictions cover every system reported in the paper.
- Model releases: All six LoRA adapters are released on Hugging Face under Apache-2.0.The release includes both vasista22-base entity-dense adapters and Whisper-v3 language-conditional adapters.
- Cost transparency: Total audited real spend is approximately $241, including $13.95 for Anthropic generation, approximately $130 for Modal compute, and approximately $5 for Deepgram.ElevenLabs and Cartesia synthesis used free credits.