【ASR数据集】中文方言ASR数据集KeSpeech实测:开源模型对决,FireRedASR性能遥遥领先!
KeSpeech数据集覆盖普通话及北京、西南、中原、东北、兰银、江淮、冀鲁、胶辽宫8 种方言。在开源 ASR 模型测试中,中文以字错误率(CER)为指标,FireRedASR 表现最优,总 CER 仅 4.7511,显著优于其他模型;Qwen2-Audio、Paraformer、Dolphin 性能相近,总 WER 在 11-13 区间;Whisper 与 PaddleSpeech 表现较弱,总
中文方言 ASR 数据集 KeSpeech 实测:开源模型对决,FireRedASR 性能遥遥领先!
【github】【论文】【百度网盘】【ModelScope】
KeSpeech数据集包含由来自中国 34 个城市的27237名说话人录制的1542小时语音信号,发音类型涵盖标准普通话及其8种方言。
数据集中的方言分类
- Beijing Mandarin(Beijing)(北京官话):尽管以 “北京” 命名,但该方言由中国华北多个地区(包括北京、天津、河北、朝阳、赤峰)使用的一系列相近方言组成。值得注意的是,北京官话是普通话的基础,而河北省的 “普通话之乡”—— 滦平县,为普通话提供了语音标准依据。
- Southwestern Mandarin or Upper Yangtze Mandarin(Southwestern)(西南官话又称上江官话):该方言通行于中国西南地区,包括四川、重庆、云南、贵州、湖北、湖南、广西等地。
- Zhongyuan Mandarin or Central Plains Mandarin(Zhongyuan)(中原官话):该方言通行于中国中部地区,包括陕西、河南、山西、甘肃、河北、安徽、江苏、新疆、山东等地。
- Northeastern Mandarin(Northeastern)(东北官话):该方言通行于中国东北地区,包括黑龙江、吉林、辽宁、河北、内蒙古等地。
- Lan-Yin Mandarin(Lan-Yin)(兰银官话):“兰银” 由相邻两省的省会名称组合而成,即甘肃省会兰州和宁夏首府银川。因此,该方言主要由兰州、银川及其周边地区(甚至包括新疆、内蒙古的部分区域)的人群使用。
- Jiang-Huai Mandarin or Lower Yangtze Mandarin(Jiang-Huai)(江淮官话又称下江官话):“江淮” 指长江与淮河周边区域,涵盖安徽、湖北、江苏、江西的部分地区,该方言即包含这些区域内使用的一系列相近方言。
- Ji-Lu Mandarin(Ji-Lu)(冀鲁官话):“冀”“鲁” 分别是河北省和山东省的简称,因此该方言包含这两个省份大部分地区,以及天津、北京、陕西、内蒙古邻近区域使用的相近方言。
- Jiao-Liao Mandarin(Jiao-Liao)(胶辽官话):“胶”“辽” 分别指代胶州半岛和辽东半岛,两半岛隔渤海相望。这两个半岛的代表性城市包括大连、丹东、营口、烟台、威海、青岛。此外,辽东半岛周边的吉林省部分地区也使用该方言。
测试集处理
KeSpeech数据集压缩后分为9部分,每部分18000000000字节(16.76G)
KeSpeech.tar.gz.aa
KeSpeech.tar.gz.ab
KeSpeech.tar.gz.ac
KeSpeech.tar.gz.ad
KeSpeech.tar.gz.ae
KeSpeech.tar.gz.af
KeSpeech.tar.gz.ag
KeSpeech.tar.gz.ah
KeSpeech.tar.gz.ai
合并解压
cat KeSpeech.tar.gz.* > KeSpeech.tar.gz
tar zxvf KeSpeech.tar.gz
文件结构
KeSpeech
|----Audio
|----Metadata
|----Tasks
|----ASR
|----dev_phase1
|----dev_phase2
|----test
|----spk2utt................说话人id与音频id的映射
|----text...................音频id对应的标注的识别结果
|----utt2spk................音频id与说话人id的映射
|----utt2subdialect.........音频id对应的方言类型
|----wav.scp................音频id对应的文件路径
|----train_phase1
|----train_phase1
|----SpeakerVeri
|----SubdialectID
|----README.md
提取测试集
import os
import shutil
from tqdm import tqdm
def read_text_file(file_path):
with open(file_path, 'r', encoding='utf-8') as fin:
lines = fin.readlines()
return [line.strip().split() for line in lines]
dataset_dir = "KeSpeech"
test_dataset_dir = "KeSpeech-test"
text_file = os.path.join(dataset_dir, "Tasks", "ASR", "test", "text")
wav_scp_file = os.path.join(dataset_dir, "Tasks", "ASR", "test", "wav.scp")
subdialects_file = os.path.join(dataset_dir, "Tasks", "ASR", "test", "utt2subdialect")
text_list = read_text_file(text_file)
wav_scp_list = read_text_file(wav_scp_file)
subdialects_list = read_text_file(subdialects_file)
assert len(text_list) == len(wav_scp_list) == len(subdialects_list)
print(f"Total {len(text_list)} utterances in the test set.")
with open(os.path.join(test_dataset_dir, "test.txt"), 'w', encoding='utf-8') as fout:
for i in tqdm(range(len(text_list))):
assert text_list[i][0] == wav_scp_list[i][0] == subdialects_list[i][0]
id = text_list[i][0]
text = text_list[i][1]
wav_path = wav_scp_list[i][1]
subdialect = subdialects_list[i][1]
wav_dir = os.path.join(test_dataset_dir, os.path.dirname(wav_path))
if not os.path.exists(wav_dir):
os.makedirs(wav_dir)
shutil.copy(os.path.join(dataset_dir, wav_path), wav_dir)
fout.write(f"{id}\t{text}\t{subdialect}\t{wav_path}\n")
print(f"Test dataset prepared at {test_dataset_dir}.")
开源模型测试结果(CER)
FireRedASR > Qwen2-Audio = Paraformer = Dolphin > Whisper = Paddle Speech
| 方言 | Number | Paraformer | Whisper | Dolphin | FireRedASR | PaddleSpeech | Qwen2-Audio |
|---|---|---|---|---|---|---|---|
| 总计 | 19723 | 11.6341 | 36.7897 | 12.5563 | 4.7511 | 34.9281 | 11.8357 |
| Mandarin | 5000 | 4.8431 | 13.6622 | 7.3205 | 2.5849 | 13.7821 | 6.9883 |
| Zhongyuan | 3239 | 11.0573 | 45.0273 | 14.1391 | 4.1083 | 41.3309 | 11.3753 |
| Ji-Lu | 2809 | 12.8368 | 41.1379 | 13.3006 | 5.4525 | 38.4412 | 13.1008 |
| Southwestern | 2693 | 11.8223 | 43.4810 | 12.8822 | 5.3695 | 41.4755 | 13.2719 |
| Jiang-Huai | 2271 | 21.7446 | 51.4751 | 17.4547 | 7.6663 | 47.3192 | 16.8062 |
| Lan-Yin | 1652 | 16.3248 | 50.2999 | 15.1504 | 5.3941 | 49.3142 | 14.6093 |
| Jiao-Liao | 1443 | 12.9076 | 42.7826 | 14.1476 | 5.8410 | 42.8448 | 13.6305 |
| Northeastern | 351 | 7.9588 | 19.0256 | 13.1667 | 5.1659 | 19.7186 | 10.5418 |
| Beijing | 265 | 14.4403 | 40.1531 | 13.6220 | 4.5407 | 34.0021 | 13.4108 |
Paraformer: https://www.modelscope.cn/models/iic/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-pytorch
Whisper: https://github.com/openai/whisper
Dolphin: https://github.com/newbieyd/Dolphin
FireRedASR: https://github.com/FireRedTeam/FireRedASR
PaddleSpeech:https://github.com/PaddlePaddle/PaddleSpeech
Qwen2-Audio-7B-Instruct: https://huggingface.co/Qwen/Qwen2-Audio-7B-Instruct
更多推荐



所有评论(0)