TTS-STT 飞轮:合成实体密集型音频弥补商用与开源系统失败的印度语言 ASR 差距 The TTS-STT Flywheel: Synthetic Entity-Dense Audio Closes the Indic ASR Gap Where Commercial and Open-Source Systems Fail
用 TTS 合成实体密集音频 + LoRA 微调,17× 提升泰卢固语 ASR 实体识别率
前置知识
LoRA 微调
LoRA 在冻结权重旁注入低秩矩阵 $A$, $B$($r \ll \min(d,k)$),$W' = W + BA$。本文用 rank=16、$\alpha$=32、dropout=0.05 微调 Whisper/vasista22。
本文在 Whisper-large-v3 和 vasista22 上做 LoRA 微调,rank=16、$\alpha$=32、dropout=0.05,4 个 GPU 小时即可训练一个语言适配器,这是方法的核心训练技术。
WER 与 EHR
WER 按词级编辑距离评 ASR;EHR 按语义实体类别评分,把「5 lakh」与「500000」等价归一。EHR 覆盖六类:digit_run、pincode、currency_amount、brand、proper_noun、spelled_digit、house_or_plot。
本文的核心论点是 WER 对实体识别任务错位,需要 EHR 才能暴露真实差距,EHR 是评价指标体系的核心创新。
Script Collapse / SFR
Script Collapse 指多语 ASR 模型输错语言脚本(如泰卢固语音频输出卡纳达语/天城文),SFR 测量假设中落在正确 Unicode 区段的字符比例。vanilla Whisper-v3 在泰卢固语 SFR 仅 0.46–0.71。
理解为什么 telugu 准确率低不能只看 WER,必须看 SFR 才能解释 vanilla 模型为什么在 telugu 上 WER > 1.5 的现象。
代码混合(Code-mix)
Code-mix 指同一句话中混合两种或多种语言,例如英语动词 + 印度本地语名词,或反之。对 ASR 而言,模型需在单一音频流中切换语言识别能力,是印度语言工作流(IVR、客服、金融科技)的真实场景。
本文识别的六类实体中包含 code-mix 类,是泰卢固语/印地语/泰米尔语 ASR 评测必须覆盖的内容类别。
研究动机
印度语言 ASR 的真实业务场景(IVR、客服、配送、金融科技)依赖转写 10 位电话号码、6 位 PIN 码、本地写法的货币金额、带拉丁嵌入词的印度地址、品牌名、英语与印度语代码混合等「实体密集型音频」,而传统朗读型 ASR 语料(维基百科、新闻、政府文本)几乎不覆盖这些内容。在合成的实体密集型泰卢固语测试集上,open-source SOTA vasista22/whisper-telugu-large-v2 的 Entity-Hit-Rate 仅 0.027,商用系统 Deepgram Nova-3 也只有 0.16;同一模型在 FLEURS-Te 朗读型上的 WER 却只有 0.33 和 0.37,说明现有系统能写流畅的泰卢固语散文,但根本无法捕捉这些关键的实体内容。
本文的目标是构建一个自包含的 TTS↔STT 飞轮:用开源印度 TTS 合成约 22,000 条覆盖泰卢固语、印地语、泰米尔语三类语言 × 六类实体(digits、currency、addresses、brands、codemix、proper_nouns)的训练语料,对 ASR 做 LoRA 微调,把泰卢固语 EHR 从 0.027 抬到 ≥0.47、印地语/泰米尔语类似提升,同时把朗读型性能回归控制在可接受范围内,最终以 <$50 边际成本对外开源。
与已有工作不同的是,现有合成数据研究(如 SpeechT5)不是针对印度语言、且不用 TTS 做数据增广;Distil-Whisper 用 Whisper 自蒸馏但没有 TTS 飞轮;vasista22 等 open SOTA 的训练语料以朗读型为主;商用 Deepgram 在 Hindi 等高资源语种上覆盖较好但泰米尔语/泰卢固语覆盖严重不足。本文切入点是「实体密集型这一尚未被任何系统服务的 niche」,并提出「TTS 飞轮 + LoRA」作为可复现、低成本(<$50)的工程方案,且诚实承认在 Hindi 上不如商用系统。
核心方法
直觉上,朗读型语料永远填不满实体密集型音频的训练分布;与其花 $660 雇人标注 22 小时实体密集音频,不如用现成的开源印度 TTS 来合成——TTS 之于 ASR,相当于「反向制造」训练标签。具体路线是:(1) 用 Anthropic Haiku-4.5 基于预构建的实体字典(来自 Wikidata + AI4Bharat 词典 + 母语者整理)生成带 span 标注的载体语句;(2) 把语句路由到多个 TTS 系统(Praxy R6 / Chatterbox / IndicF5 / ElevenLabs / Cartesia)做多样性合成;(3) 用 vasista22 自身做 CER 过滤并修正数字串写法不匹配;(4) 把 Cartesia 音频留出做评测,其余混入 IndicVoices + Common Voice + FLEURS 训练集,对 vasista22/whisper-large-v2 做 LoRA 微调。
核心创新是「合成系统的混排路由 + 实体类别级 CER 过滤 + 训练/评测按 TTS 系统解耦」:60% 路由到 Praxy(开源 Chatterbox-LoRA)、20% 到 ElevenLabs、20% 到 Cartesia,再用 Cartesia 整桶留出做评测,避免「模型只是学到了某种 TTS 的声学分布」的伪结果。与已有合成数据方法的本质区别是:(a) 面向印度语言实体密集这一空白 niche;(b) 用开源 TTS 而非商用以保证可复现(<$50 边际成本);(c) 把指标从 WER 换成语义归一化的 EHR,避开「5 lakh 与 500000 不等价」的评估失真。
方法步骤详情
方法四步:(1) 实体字典:从 Wikidata + AI4Bharat 词典 + 母语者整理每类约 500 个种子实体;(2) 文本生成:Anthropic Haiku-4.5 以 (lang, class, seed) 批量生成 10–50 条载体语句,要求本地脚本、长度 3–25 tokens、去重剩 22,193 行,成本 $13.95;(3) 多系统合成路由:5 个 TTS 系统上合成(泰卢固语 4098 Praxy/1686 ElevenLabs/1270 Cartesia/873 IndicF5=7927 行);(4) 后处理+训练:vasista22 做 CER 过滤(CER>0.5 丢弃,拒绝率 10–15%)、把数字串重写为本地拼读形式对齐标签、Cartesia 整桶留出做评测、其余按 70–80% 真实+20–30% 合成比例与 IndicVoices+CV25+FLEURS train 混合,对 vasista22 做 rank=16 LoRA 微调 4000 步、LR $4\times 10^{-5}$,单 A10G ~$13/语言。
技术新颖性
技术新颖性体现在三点:(1) EDSA(Entity-Dense Synthetic Audio)数据生成流水线作为可复现工件开源(paper/stt_flywheel/data_pipeline.py + 实体字典 CC-BY-4.0),把 TTS 飞轮从工程黑箱变成科学可比较;(2) EHR 指标 + 19/19 单元测试覆盖每类归一化规则,确定性、无 LLM-judge,可直接复用;(3) 隔离实验(§V-G 表 VIII)把「LoRA 训练」与「EDSA 数据」干净分开:FLEURS-only LoRA 在同一评测上仅 0.020 EHR,证明几乎 100% 的增益来自 EDSA 语料本身而非 LoRA 工艺,方法论上是贡献点的一半。
实验结果
核心发现五个:(1) 头号结果 β-Te 在泰卢固语 Cartesia 留出集上 EHR 0.473,是 open SOTA 0.027 的 17×、Deepgram 0.16 的 3×;β-Hi 0.337(7× vs vasista22 但输给 Deepgram 0.485);β-Ta 0.543(22× vs vasista22 与 Deepgram 皆 0.025);(2) 自然人声泛化:n=20 母语泰卢固语 β-Te EHR 0.516(vs 合成 0.473)反向略升;(3) 朗读型回归 FLEURS-Te +6.6 pp 在容忍内,但 Hi +9.4 pp、Ta +8.9 pp 超出 +7 pp 阈值;(4) SFR 语言条件反指征:vanilla Whisper-v3 在泰卢固语 SFR 0.46–0.71(严重脚本坍缩)但 Hi/Ta ≥0.98,相同 LoRA 在 Hi/Ta 把 SFR 砸到 0.43–0.85;(5) FLEURS-only LoRA 在同评测仅 0.020,~100% 增益归于 EDSA 语料。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 泰卢固语实体密集识别 | Entity-Hit-Rate (macro) | 0.473 (Praxy-STT-Te-rb) | 0.027 (vasista22) / 0.160 (Deepgram Nova-3) | 17× vs open SOTA, 3× vs 商用 |
| 印地语实体密集识别 | Entity-Hit-Rate (macro) | 0.337 (Praxy-STT-Hi-rb) | 0.049 (vasista22) / 0.485 (Deepgram Nova-3) | 7× vs open SOTA,输给商用 0.485 |
| 泰米尔语实体密集识别 | Entity-Hit-Rate (macro) | 0.543 (Praxy-STT-Ta-rb) | 0.025 (vasista22) / 0.025 (Deepgram Nova-3) | 22× vs 两套基线 |
| 自然人声泰卢固语泛化 | EHR (n=20 母语录音) | 0.516 | 0.097 (vasista22) / 0.258 (Deepgram) | 5× vs open SOTA, 2× vs 商用 |
| 朗读型回归 (FLEURS-Te) | WER delta | 0.395 (+0.066) | 0.329 (vasista22) | +6.6 pp 仍在容忍区间 (< +7 pp) |
| EDSA 隔离归因 | EHR on Cartesia held-out | 0.473 (with EDSA) | 0.020 (FLEURS-only LoRA) / 0.027 (vasista22) | 24× vs FLEURS-only,证明 ~100% 增益来自 EDSA |
局限与改进
作者承认四点:(1) 头号评测是 Cartesia 合成音频留出,n=102 偏小,存在 acoustic-family overfit 风险——尽管 n=20 自然人声 sanity check 给出 0.516 EHR 反驳了「只学声学」,但单讲话人/单录音环境远不够生产部署;(2) 没有 bootstrap 置信区间,directional findings 跨多个评测稳定但 per-cell 点估计有残留方差;(3) 类别不平衡:Cartesia 留出在 digits/proper_nouns 类只有 0–2 行,被标为「—」而非 0;(4) 商用基线单一:仅 Deepgram Nova-3,ElevenLabs Scribe 与 Sarvam STT 因 rate-limit/GA 未跑。我的补充观察:EHR 的 currency_amount 类不认「数字等值但写法不同」的输出,是 v2 才改进的保守估计;Hindi 上 Praxy-Hi-rb 输给 Deepgram,flag 高资源语种商用仍是标杆。
独立分析的弱点
三个独立弱点:(1) Hindi 0.337 输 Deepgram 0.485——说明商用在有真实投入的高资源语种仍是标杆,改进方向是扩 EDSA 的 brands/addresses 多样性 + speaker rotation;(2) EDSA-isolation 仅对比「FLEURS-only LoRA」与「FLEURS+EDSA LoRA」,没跑「LoRA+random-text-only 合成」控制组,无法排除「任何 synth 语料都能贡献」的更弱假设——补一个 random-text 合成对照组即可;(3) Hi/Ta 朗读型 +9 pp 回归超阈值,原因是 vasista22 已对 FLEURS 强过拟合,扩 EDSA 时挤压朗读型流形——改进方向是 Knowledge Distillation 或 EWC 正则把朗读型锚定。
未来方向
作者明确指出三类未来工作:(1) v2 EHR:货币类增加双向 Indic-multiplier 解析,让「200000」与「ఇరవైలక్ష」算正确等价;(2) 类别平衡:显式保证每 (lang, class) cell 在留出集 n≥50;(3) 多讲话人验证:委托 Karya 多讲话人/多环境录音做生产级 cross-speaker generalization。基于成果可延伸的还有:(a) 跨语言迁移——把泰米尔语 EDSA-LoRA 适配到卡纳达语、马拉雅拉姆语等更多 Dravidian 语种;(b) 把 EDSA 流程泛化到其他「未服务 niche」如医疗术语、姓名、缩写;(c) 与 LLM 后处理串联——把 ASR 输出扔进 LLM 做实体规范化。
复现评估
复现门槛较低:完整代码与数据在 https://github.com/praxelhq/stt-flywheel 公开(MIT 代码 + CC-BY-4.0 数据 + CC0 自然录音);EHR 评测器(eval_ehr.py)+ 19/19 单元测试已开源;六个 LoRA adapter 在 HuggingFace(Praxel/praxy-stt-{te,hi,ta}-r{b2})以 Apache-2.0 发布,hi-r2/ta-r2 在 model card 上明确标注「contraindicated for production」。算力:合成 22k 音频 + 6 个 LoRA + 评测矩阵总计 Modal A10G/A100 ~$130,加 Anthropic 文案 $13.95 + Deepgram 评测 $5 + ElevenLabs/Cartesia 免费额度,总真实花费 $241。复现难度中等:需 pinning transformers 4.36.2 + peft 0.10.0 解决 vasista22 生成配置兼容问题,并调度 5 个 TTS 系统。
论文图表
表给出泰卢固语 4098 praxy + 1686 ElevenLabs + 1270 Cartesia + 873 IndicF5 = 7927 行;印地语 4407 + 1877 + 1384 + 893 = 8561;泰米尔语 2241 + 1045 + 1038 + 878 = 5202。Cartesia 行在训练时被排除,成为实体密集评测集。
这是方法章节的关键表,展示 EDSA 数据集的多系统路由如何按 60/20/20 分配、Cartesia 如何被干净留出做评测;没有这张表读者无法理解「评测集是 Cartesia 合成」的隔离设计。
5 列系统(Vanilla Whisper-v3、Praxy-r2、vasista22、Deepgram Nova-3、Praxy-rb)× 3 语言(Te/Hi/Ta)的 EHR 矩阵:Te 上 0.560 / 0.853 / 0.027 / 0.160 / 0.473;Hi 上 — / — / 0.049 / 0.485 / 0.337;Ta 上 — / — / 0.025 / 0.025 / 0.543。
这是 cross-language 头号结果表,与 Fig. 1 互为补充——把泰卢固语的胜利推广到印地语/泰米尔语,并诚实标出 Deepgram 在 Hindi 上 0.485 仍胜本文 0.337。
六类(addresses/brands/codemix/currency/proper_nouns/digits)的 vasista22 vs Praxy-STT-rb EHR 对比:addresses 0.000→0.786、brands 0.235→0.529、codemix 0.000→0.366、currency 0.000→0.500,digits 与 proper_nouns 类因留出集 n=0 标为「—」。Deepgram 仅给 macro 0.160 未拆分类。
把 macro 0.473 拆开看,能看清哪些类被真正学到(addresses 0.786 最高)、哪些仍是薄弱环节(codemix 0.366 最低),帮助读者理解模型的具体行为而非仅看汇总数。
四个系统在 20 句母语泰卢固语人声上的 EHR/WER/SFR:Vanilla Whisper-v3 0.548/2.522/0.564、vasista22 0.097/0.537/0.997、Deepgram Nova-3 0.258/0.679/0.932、Praxy-STT-Te-r2 0.839/0.515/0.753、Praxy-STT-Te-rb 0.516/0.358/0.881。
这是解决「模型只是学到 Cartesia 声学」质疑的关键实验:β-Te 在人声上 EHR 0.516 反而高于合成的 0.473,证实学到的是实体而非 TTS 声学;与 limitations 章节的 acoustic-family overfit 风险呼应。
Te/Hi/Ta × {FLEURS, CV25, IV} 九个 cell 的 WER 对比:Te-FLEURS 0.329→0.395 (+0.066)、Te-CV25 0.483→0.495 (+0.012)、Te-IV 0.420→0.420 (0);Hi-FLEURS 0.182→0.276 (+0.094)、Hi-CV25 0.278→0.371 (+0.093);Ta-FLEURS 0.326→0.415 (+0.089)、Ta-CV25 0.455→0.488 (+0.033);Hi-IV/Ta-IV 都在 +1.4 pp 内。
回答「实体提升有没有破坏朗读型?」的追问,泰卢固语 +6.6 pp 在容忍区间但 Hi/Ta 上 +9 pp 超出 +7 pp 阈值,是评估方法 trade-off 的核心表。
Te/Hi/Ta × {FLEURS, CV25, IV} 上的 WER/SFR 对比:Te-FLEURS vanilla 1.503/0.701 → Praxy-r2 0.829/0.969(WER 降 45%、SFR 升 27 pp);Te-CV25 vanilla 4.122/0.462 → 1.046/0.944;Hi-CV25 vanilla 0.424/0.983 → 1.113/0.736(WER 涨 162%、SFR 跌 25 pp);Ta-CV25 vanilla 0.669/0.998 → 0.885/0.853。
把 §V-E 的语言条件反指征发现量化:LoRA 配方在泰卢固语上显著增益但 Hi/Ta 上反向崩坏,是 diagnostics-before-deployment 建议的实验依据。
九 cell 的 WER/SFR 对比:Te-CV25 vasista22 0.483 / Deepgram 0.441;Te-IV 0.420 / 0.507;Hi-CV25 0.278 / 0.363(Open SOTA 赢);Ta-CV25 0.455 / 0.246(商用赢);Ta-IV 0.573 / 0.591;FLEURS 三 cell 因 vasista22 训练重叠标作 caveat。
把 open vs commercial 的对比放到朗读型任务上重新框架化:实体密集之外,open-source SOTA 与商用在朗读型上各有胜负(Hi-CV25 0.278 vs 0.363 差距最大),反驳「商用一定更好」的简单叙事。
三种训练数据 × vasista22 base 下的 EHR/WER/SFR:(a) 无 LoRA 即原 vasista22 0.027/0.582/1.000;(b) LoRA + FLEURS-Te train(2281 句朗读型) 0.020/0.582/1.000;(c) β-Te 即 LoRA + EDSA 0.473/0.324/0.928。
这是方法章节论证 EDSA 语料为 load-bearing input 的关键归因表,FLEURS-only LoRA 与原模型在 ±0.007 噪声内等同,把 24× EHR 增益几乎全部归于 EDSA 语料本身,是贡献 (1)(2) 的证据。