中文方言 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

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐