d
gcw_GYGYTJUF/ASR
数据集
数据集查看器
文件和版本
Pull Requests
讨论

sota-asr-tts-evaluator — SOTA ASR/TTS 模型搜索 & 验证技能

搜索最新 ASR/TTS 模型,验证其声明的 WER/MOS 指标,建立并维护本地 SOTA 模型库。

工作流

阶段 1:模型搜索

任务 1.1:搜索模型源 并行搜索以下源:

  • HF Speech Recognition Leaderboard: https://huggingface.co/spaces/hf-audio/open_asr_leaderboard
  • Modelscope ASR: https://modelscope.cn/models?task=auto-speech-recognition
  • PapersWithCode ASR: https://paperswithcode.com/task/automatic-speech-recognition
  • HF Models: https://huggingface.co/models?pipeline_tag=automatic-speech-recognition
  • 直接搜索关键词: arabic asr whisper fine-tune, common voice wer, fleurs benchmark

任务 1.2:提取模型元数据 对每个候选模型,提取:

  • 模型名称 / 路径
  • 架构 (Whisper / QwenASR / Conformer / etc.)
  • 语言支持
  • 声明的 WER/CER/MOS 分数
  • 测试数据集 (FLEURS / Common Voice / LibriSpeech / etc.)
  • 模型大小 (参数数量)
  • License

阶段 2:分数真实性校验

任务 2.1:交叉验证 WER 分数

  • 搜索外部来源验证声明分数
  • 对比 HF Leaderboard 排名
  • 检查论文/README 的一致性

任务 2.2:智能筛选(跳过次优模型) 加载 SOTA 库 (/mnt/d00924525/sota_asr_tts_library.csv) 获取当前最佳 WER:

def get_best_wer(language, dataset):
    """返回当前库中某语言+数据集的最优 WER"""
    # 读取 CSV 找到最小值

淘汰规则:

  1. 如果候选模型的声称 WER >= 当前最佳 WER → 跳过下载
  2. 如果声明 WER 比当前最佳低 10% 以上 → 下载验证
  3. 如果声明 WER 略低但模型架构/速度有优势 → 可下载

任务 2.3:选择候选模型进行本地验证 经过筛选后的优先级标准:

  1. 支持我们关注的语种(阿拉伯语优先)
  2. 在 FLEURS / Common Voice 上有公开 WER
  3. 本地可部署(文件大小 < 20GB,transformers/vllm 兼容)

阶段 3:本地部署 & 验证

任务 3.1:下载模型权重

  • 从 HuggingFace / Modelscope 下载 safetensors 权重
  • 保存到 /mnt/d00924525/{model_name}/

任务 3.2:启动推理服务 两种方式:

# Option A: vLLM serve (如果 vllm 支持该架构)
vllm serve /path/to/model --trust-remote-code --port 18001

# Option B: PyTorch transformers (回退方案)
python3 -c "from transformers import AutoModelForSpeechSeq2Seq; model = ..."

任务 3.3:运行验证测试

  • 测试数据集:CV 25.0 /mnt/d00924525/cv-corpus-25.0-2026-03-09/ + FLEURS
  • 样本数:每个数据集 100-500 条
  • 计算指标:WER / CER / RTF (Real-Time Factor) / RTFx
import re, jiwer

U02BB = chr(0x02BB)  # Modifier Letter Turned Comma

def normalize_uzbek(text):
    """
    乌兹别克文本归一化——处理所有撇号变体。

    核心问题: 乌兹别克拉丁文用 ʻ (U+02BB) 表示特殊辅音,
    但各数据集的标注方式完全不同:
    - FLEURS: ASCII ' (U+0027) 为主体 (513次/200条)
    - CV: ʻ (U+02BB) + 单引号 (U+2018/19) + ASCII '
    - Qwen3-ASR 模型输出: ʻ (U+02BB) 为主
    - Whisper 模型输出: ASCII ' 为主

    如果不归一化,ASCII ' 被 re.sub(r"[^\w\s\u0400-\u04ff]"," ", text)
    替换为空格 -> 单词断裂 -> WER 被人为高估 10%+ !
    例如: o'zbek -> o zbek (从1个词变成2个词)

    实测影响 (Qwen3-ASR-Uzbek-v2, n=200):
      CV:     旧 WER=27.23% -> 新 WER=22.66%
      FLEURS: 旧 WER=36.70% -> 新 WER=27.05%
    """
    text = text.lower()
    text = text.replace("\u0027", U02BB)   # ASCII '
    text = text.replace("\u2018", U02BB)   # left single quote
    text = text.replace("\u2019", U02BB)   # right single quote
    text = text.replace("\u02bc", U02BB)   # modifier letter apostrophe
    text = re.sub(r"[^\w\s\u0400-\u04ff\u02bb]", " ", text)
    text = re.sub(r"\s+", " ", text).strip()
    return text

⚠️ 重要: 对乌兹别克语,必须使用 normalize_uzbek() 替代默认的 jiwer 空值归一化。 否则 FLEURS 的 WER 会被高估约 9.7 个百分点,CV 约 4.6 个百分点。

阶段 4:更新 SOTA 模型库

任务 4.1:检查/创建 CSV 库 路径:/mnt/d00924525/sota_asr_tts_library.csv

注意:只有本地实测验证过的模型才能加入 SOTA 库! 从 HF/Modelscope 搜索到的模型如果不满足下载条件,只记录在搜索日志中,不得加入 CSV。

任务 4.1b:无候选模型时的策略 如果当前语言/数据集的所有候选模型都被淘汰,则:

  1. 更换搜索关键词重新搜索(尝试不同表述)
  2. 搜索最新发布的模型(按时间排序)
  3. 搜索其他模型源(如 Modelscope/PaperWithCode)
  4. 记录当前最佳 WER 作为基线,等待新模型出现

格式:

model_name,architecture,language,dataset,claimed_wer,verified_wer,cer,rtf,rtf25,test_date,source
whisper-large-v3-arabic-ft-v3,Whisper,ar,FLEURS,10.52,14.44,5.58,1.045,14.5,2026-06-12,huggingface

任务 4.2:追加或更新行

  • 如果模型已存在 → 更新 verified_wer 和 test_date
  • 如果是新模型 → 追加新行

阶段 5:生成摘要报告

输出格式:

## 验证摘要

### 本次测试模型
| 模型 | 数据集 | 声称WER | 验证WER | CER | RTF |
|------|--------|:------:|:-------:|:---:|:---:|
| xxx | FLEURS | 10.52% | 14.44% | 5.58% | 1.05 |

### SOTA 模型库 (当前共 N 个模型)
[CSV 表格输出]

参考代码

已有已验证的评估脚本:

  • /mnt/d00924525/eval_vllm_uzbek_api_fixed.py — vLLM HTTP API + 正确的 normalize_uzbek()
  • /mnt/d00924525/eval_vllm_uzbek_api.py — vLLM HTTP API + httpx 并发评估
  • /mnt/d00924525/eval_qwen_uzbek_direct.py — qwen_asr 直接推理
  • /mnt/d00924525/eval_uzbek_both.py — CV + FLEURS 联合评估
  • /mnt/d00924525/run_fleurs_final.py — Whisper 评估 (FLEURS)
  • /mnt/d00924525/eval_ar_v3.py — 通用评估框架 (Arabic)

已知发现 (2026-07-16)

1. 乌兹别克标点归一化 (已修复)

所有撇号变体(U+0027, U+02BB, U+2018, U+2019)必须统一归一化为 U+02BB。 见 normalize_uzbek() 实现。

2. vLLM HTTP API vs qwen_asr 直接推理对比

指标通过 vLLM HTTP API通过 qwen_asr 直接
CV WER22.66%43.47%
FLEURS WER27.05%31.26%
CV 速度0.69s/样本 (6路并发)4-7s/样本

vLLM 服务方式在两个数据集上都显著优于 qwen_asr 直接推理。

3. Zehnova-Uzbek-STT 表现

数据集WER
CV30.41%
FLEURS28.62%

已被 Qwen3-ASR-Uzbek-v2 (vLLM) 超越:

  • CV: 22.66% vs 30.41%
  • FLEURS: 27.05% vs 28.62%

4. 待测试候选

Dovud-Asadov/whisper-uzbek-multi-dataset — 声称 CV 24.52%, Whisper Turbo 架构, transformers 兼容。

输出文件

  • /mnt/d00924525/sota_asr_tts_library.csv — 模型库
  • /mnt/d00924525/eval_{model}_{dataset}.json — 每次验证的完整结果