搜索最新 ASR/TTS 模型,验证其声明的 WER/MOS 指标,建立并维护本地 SOTA 模型库。
任务 1.1:搜索模型源 并行搜索以下源:
https://huggingface.co/spaces/hf-audio/open_asr_leaderboardhttps://modelscope.cn/models?task=auto-speech-recognitionhttps://paperswithcode.com/task/automatic-speech-recognitionhttps://huggingface.co/models?pipeline_tag=automatic-speech-recognitionarabic asr whisper fine-tune, common voice wer, fleurs benchmark任务 1.2:提取模型元数据 对每个候选模型,提取:
任务 2.1:交叉验证 WER 分数
任务 2.2:智能筛选(跳过次优模型)
加载 SOTA 库 (/mnt/d00924525/sota_asr_tts_library.csv) 获取当前最佳 WER:
def get_best_wer(language, dataset):
"""返回当前库中某语言+数据集的最优 WER"""
# 读取 CSV 找到最小值淘汰规则:
任务 2.3:选择候选模型进行本地验证 经过筛选后的优先级标准:
任务 3.1:下载模型权重
/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:运行验证测试
/mnt/d00924525/cv-corpus-25.0-2026-03-09/ + FLEURSimport 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.1:检查/创建 CSV 库
路径:/mnt/d00924525/sota_asr_tts_library.csv
注意:只有本地实测验证过的模型才能加入 SOTA 库! 从 HF/Modelscope 搜索到的模型如果不满足下载条件,只记录在搜索日志中,不得加入 CSV。
任务 4.1b:无候选模型时的策略 如果当前语言/数据集的所有候选模型都被淘汰,则:
格式:
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:追加或更新行
输出格式:
## 验证摘要
### 本次测试模型
| 模型 | 数据集 | 声称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)所有撇号变体(U+0027, U+02BB, U+2018, U+2019)必须统一归一化为 U+02BB。
见 normalize_uzbek() 实现。
| 指标 | 通过 vLLM HTTP API | 通过 qwen_asr 直接 |
|---|---|---|
| CV WER | 22.66% | 43.47% |
| FLEURS WER | 27.05% | 31.26% |
| CV 速度 | 0.69s/样本 (6路并发) | 4-7s/样本 |
vLLM 服务方式在两个数据集上都显著优于 qwen_asr 直接推理。
| 数据集 | WER |
|---|---|
| CV | 30.41% |
| FLEURS | 28.62% |
已被 Qwen3-ASR-Uzbek-v2 (vLLM) 超越:
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 — 每次验证的完整结果