ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PaddleSpeech 中的 AISHELL-1 中文语音数据集:语料特性、目录结构与端到端 ASR 应用实践

PaddleSpeech 中的 AISHELL-1 中文语音数据集:语料特性、目录结构与端到端 ASR 应用实践 人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载AISHELL-1AISHELL-ASR0009-OS1是开源社区使用最广泛的中文普通话语音识别语料之一也是 PaddleSpeech 仓库内置支持的基准数据集。本文以 paddlespeech/dataset/aishell/README.md 为主体结合 aishell.py 源码与examples/aishell下的真实训练脚本系统讲解该语料的构成、目录结构、标注格式以及如何在 PaddleSpeech 中完成下载、校验、manifest 生成与 ASR 模型训练全流程帮助读者从数据到模型完整走通中文普通话识别基线。一、语料库概况为什么 AISHELL-1 适合做中文 ASR 基线AISHELL-1 是一个开放源码的中文普通话语料库AISHELL-ASR0009-OS1总时长约178 小时属于 AISHELL-ASR0009 系列的一部分。其语料覆盖11 个领域包括智能家居smart home、自动驾驶autonomous driving、工业生产industrial production等日常场景词表覆盖面广非常适合作为通用中文 ASR 的评测基准。从录制条件看整个录音过程在安静的室内环境中完成并使用 3 种设备同时采集设备采样率位深高保真麦克风44.1kHz16-bitAndroid 系统手机16kHz16-bitiOS 系统手机16kHz16-bit其中高保真音频被重采样到 16kHz用于构建 AISHELL-ASR0009-OS1 发布版本。这意味着整个语料库统一为 16kHz/16-bit 的 WAV 格式与 PaddleSpeech 各 ASR 模型的输入约定一致这一点在后续源码校验中也会被强制检查。语料库共邀请400 位来自中国不同口音地区的说话人参与录制保证了语音多样性与口音覆盖。所有文本经由专业语音标注与严格质检人工转写准确率在 95% 以上。语料被划分为训练集train、开发集dev和测试集test三部分可直接用于模型训练、调参与最终评估。使用限制该数据库免费用于学术研究未经许可不得用于商业用途。二、数据集目录结构transcript 与 wav 的组织方式下载并解压后data_aishell目录顶层包含两个子目录transcript文本标注目录与wav音频目录。从仓库文档给出的结构看data_aishell ├── transcript # 文本目录 └── wav # 音频目录 ├── dev # 开发集 │ ├── S0724 # 说话人spk目录 │ ├── S0725 │ └── S0726 ├── train # 训练集 │ ├── S0724 │ ├── S0725 │ └── S0726 └── test # 测试集 ├── S0724 ├── S0725 └── S0726展开一层后可以看到标注文件与音频文件的完整路径data_aishell ├── transcript │ └── aishell_transcript_v0.8.txt # 文本标注文件 └── wav ├── dev │ └── S0724 │ ├── BAC009S0724W0121.wav # S0724 的音频 │ ├── BAC009S0724W0122.wav │ └── BAC009S0724W0123.wav ├── test │ └── S0724 │ └── BAC009S0724W0121.wav └── train └── S0724 └── BAC009S0724W0121.wav可以归纳出三条命名规律三级目录wav/{train|dev|test}/{说话人ID}/{音频文件}说话人 ID 形如S0724音频命名BAC009S0724W0121.wav其中S0724即所属说话人 IDW0121为该说话人的句序号标注文件单一文件aishell_transcript_v0.8.txt汇总全部音频的转写文本。三、标注文件格式utt tokens标注文件aishell_transcript_v0.8.txt采用每行一条记录的简单格式字段以空格分隔utt tokens其中utt为音频 ID即去掉.wav后缀的文件名tokens为该句的中文文本且每个汉字/词之间以空格分词。文档给出的真实示例 head data_aishell/transcript/aishell_transcript_v0.8.txt BAC009S0002W0122 而 对 楼市 成交 抑制 作用 最 大 的 限 购 BAC009S0002W0123 也 成为 地方 政府 的 眼中 钉 BAC009S0002W0124 自 六月 底 呼和浩特 市 率先 宣布 取消 限 购 后 BAC009S0002W0125 各地 政府 便 纷纷 跟进 BAC009S0002W0126 仅 一 个 多 月 的 时 间 里 BAC009S0002W0127 除了 北京 上海 广州 深圳 四 个 一 线 城市 和 三亚 之外 BAC009S0002W0128 四十六 个 限 购 城市 当中 BAC009S0002W0129 四十一 个 已 正式 取消 或 变相 放松 了 限 购 BAC009S0002W0130 财政 金融 政策 紧随 其后 而来 BAC009S0002W0131 显示 出 了 极 强 的 威力注意两点文本以utf-8编码保存源码中使用codecs.open(..., utf-8)读取分词粒度不统一——既有单字如而 对也有词如楼市、呼和浩特、四十六。因此在使用该语料训练字级模型时通常需要做进一步的文本规整。四、源码视角aishell.py 的下载、校验与 manifest 生成PaddleSpeech 仓库在 paddlespeech/dataset/aishell/aishell.py 中提供了 AISHELL-1 的一键数据准备脚本其 docstring 明确说明其职责Download, unpack and create manifest files。整个模块被init.py 导出暴露check_dataset、create_manifest、download_dataset、prepare_dataset、main等接口。4.1 数据源与完整性校验脚本顶部定义了数据源常量DATA_HOME os.path.expanduser(~/.cache/paddle/dataset/speech) URL_ROOT http://openslr.elda.org/resources/33 DATA_URL URL_ROOT /data_aishell.tgz MD5_DATA 2f494334227864a8a8fec932999db9d8 RESOURCE_URL URL_ROOT /resource_aishell.tgz MD5_RESOURCE 957d480a0fcac85fc18e550756f624e5关键信息默认缓存目录为~/.cache/paddle/dataset/speech最终数据存放于其下的Aishell目录需要下载两个压缩包data_aishell.tgz音频标注主体与resource_aishell.tgz辅助资源均带 MD5 校验MD5 校验逻辑位于 paddlespeech/dataset/download.py 的download()若文件已存在且 MD5 匹配则跳过下载否则通过wget -c断点续传下载后再次校验失败则抛出RuntimeError(MD5 checksum failed.)解压使用tarfile完成音频目录下还存在若干分卷 tar 包download_dataset会遍历wav目录将所有*.tar逐一解包到对应子目录。4.2 命令行参数aishell.py支持通过命令行控制行为参数默认值说明--target_dir~/.cache/paddle/dataset/speech/Aishell数据集保存目录--manifest_prefixmanifest输出 manifest 的文件名前缀一个典型调用来自 asr0 的 data.shpython3 ${TARGET_DIR}/aishell/aishell.py \ --manifest_prefixdata/manifest \ --target_dir${TARGET_DIR}/aishell脚本主流程main()会依次打印参数 → 展开~路径 → 以checkTrue准备主体数据下载解压校验生成 manifest→ 准备 resource 资源包不生成 manifest→ 输出完成提示。4.3 标注解析与 manifest 字段设计create_manifest()是核心函数其数据处理逻辑可以拆解为四步构建转写字典逐行读取aishell_transcript_v0.8.txt用line.split( , 1)将行拆成audio_id与text随后执行text .join(text.split())——移除所有空白字符把分词后的文本拼接为连续汉字串这正是训练字级模型的预处理与第三节示例中的空格分词格式形成对照遍历音频目录分别处理train、dev、test三个子集用os.walk递归扫描wav/{dtype}下所有.wav文件计算时长借助soundfile.read()读取音频duration len(audio_data) / samplerate过滤无标注音频若audio_id不在转写字典中则跳过。每条有效音频生成一行 JSON manifest字段如下{ utt: BAC009S0724W0121, utt2spk: S0724, feat: /abs/path/to/BAC009S0724W0121.wav, feat_shape: [4.02], text: 而 对 楼市 成交 抑制 作用 最 大 的 限 购 }字段含义utt音频 ID文件名去扩展名utt2spk说话人 ID取音频所在父目录名feat音频文件的绝对路径feat_shape时长信息单位秒以元组存储text转写文本注意manifest 中的text保留的是分词后的原始文本json.dumps(..., ensure_asciiFalse)保证中文可读而训练时所需的连续字序列由后续的format_data.py结合词表再转换。此外脚本会按子集输出统计元信息到manifest_prefix.dtype.meta文件内容包含dtype、utts句数、hours时长、text总字数、text/sec平均语速与sec/utt句均时长便于训练前快速评估语料规模。4.4 数据校验16kHz 采样率的强制约束check_dataset()提供了数据完整性校验能力并在prepare_dataset(..., checkTrue)中被启用。校验内容包括transcript/aishell_transcript_v0.8.txt必须存在否则抛出FileNotFoundErrorwav/{train|dev|test}三个目录必须存在否则抛出IOError遍历所有音频时执行assert samplerate 16000——采样率非 16kHz 会直接断言失败这与语料库设计统一 16kHz及下游模型输入要求严格对应对找不到转写的音频打印 Warning 并计数。五、在 PaddleSpeech 中的实战从数据到 ASR 模型AISHELL-1 在examples/aishell目录下驱动了多套 ASR 基线包括 asr0DeepSpeech2 离线/在线、asr1U2 架构Transformer/Conformer、asr3wav2vec 预训练微调等它们的 Stage 0 数据准备均复用上述aishell.py。5.1 数据处理管线以 asr0 为例examples/aishell/asr0/local/data.sh 把数据处理组织为 4 个 stageStage内容关键命令/产物-1下载数据、生成 raw manifestpython3 ${TARGET_DIR}/aishell/aishell.py --manifest_prefixdata/manifest随后把manifest.{train,dev,test}重命名为.raw0计算 CMVN 均值方差python3 ${MAIN_ROOT}/utils/compute_mean_std.py产出data/mean_std.jsonfbank 161 维、窗长 25ms、帧移 10ms、采样率 16000、采样 2000 条1构建字级词表python3 ${MAIN_ROOT}/utils/build_vocab.py --unit_typechar产出data/lang_char/vocab.txt2格式化 manifestformat_data.py结合 CMVN、词表把 raw manifest 转为含 token id 的manifest.{train,dev,test}asr1 的 data.sh 流程一致仅将 fbank 维度改为 80、--num_samples-1使用全部数据计算 CMVN、词表仅基于训练集构建更适配 U2/Conformer 架构。最终data/目录结构如下asr0/asr1 README 中均有记载data/ ├── dev.meta ├── lang_char/ │ └── vocab.txt ├── manifest.dev ├── manifest.dev.raw ├── manifest.test ├── manifest.test.raw ├── manifest.train ├── manifest.train.raw ├── mean_std.json ├── test.meta └── train.meta5.2 端到端训练run.sh 的分阶段执行数据就绪后可直接借助run.sh完成训练与评估。以 asr0DeepSpeech2为例examples/aishell/asr0/README.md 将实验划分为 0~6 共 7 个阶段Stage功能0数据处理下载、CMVN、词表、manifest1模型训练2Top-k 模型参数平均k1 即取最优模型3测试最终模型性能4导出静态图模型5静态图模型测试6单音频文件推理核心用法是设置stage与stop_stage控制执行区间例如# 只跑数据准备 bash run.sh --stage 0 --stop_stage 0 # 训练平均测试 bash run.sh --stage 0 --stop_stage 3 # 指定 GPU 与平均模型个数 bash run.sh --gpus 0,1 --avg_num 1常用本地变量包括gpusGPU 编号置空表示纯 CPU、conf_path模型配置路径如conf/deepspeech2.yaml、avg_numTop-k 平均个数、model_typeoffline/online、ckptcheckpoint 前缀如deepspeech2。asr1Transformer/Conformer的 README.md 采用相同模式额外提供 stage 4 用于基于最终模型对测试数据做 CTC 对齐。5.3 多样化的 manifest 形式asr3 的 CSV 路线除aishell.py的 JSON manifest 外仓库还提供了另一种数据处理实现examples/aishell/asr3/local/aishell_prepare.py源自 speechbrain 改造用于 wav2vec 预训练微调路线。它同样读取data_aishell/transcript/aishell_transcript_v0.8.txt构建filename2transcript字典但输出的是按train/dev/test划分的CSV manifest每行一个音频路径与转写并支持--skip_prep跳过准备阶段。这体现了同一语料在不同训练范式下的适配方式JSON manifest 服务于 PaddleSpeech 常规训练管线CSV manifest 服务于 speechbrain 风格的数据加载。六、使用注意事项总结结合文档与源码使用 AISHELL-1 时建议关注以下要点采样率统一为 16kHzcheck_dataset会强制断言自行采集或转换的音频必须先重采样转写文本分词粒度不统一单字与词混用训练字级模型需由预处理脚本.join(text.split())拼接连续文本词级建模则需额外分词工具学术用途限制语料免费用于学术研究商业使用需获得授权目录约定wav/{train|dev|test}/{spk}/{utt}.wav与transcript/aishell_transcript_v0.8.txt是下游所有脚本的公共假设改动目录结构会导致 manifest 生成或校验失败MD5 校验data_aishell.tgz与resource_aishell.tgz均有固定 MD5若下载被代理/镜像污染会直接报错可在 aishell.py 中核对并切换备用镜像源。综上AISHELL-1 凭借 178 小时规模、11 领域覆盖、400 说话人多样性与统一 16kHz 格式配合 PaddleSpeech 内置的一键准备脚本是一条开箱即用的中文 ASR 实验路线从aishell.py的下载校验与 manifest 生成到examples/aishell下 DeepSpeech2、U2/Conformer、wav2vec 等多套基线的训练评测读者可以在此基础上快速复现中文语音识别基线并开展后续研究。赞分享人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐AISHELL-1 中文语音识别实战用 SpeechBrain 训练 Transformer 端到端 ASR含 wav2vec2 微调方案AISHELL 1 中文语音识别实战用 SpeechBrain 训练 Transformer 端到端 ASR含 wav2vec2 微调方案 本篇文章围绕人工智能深度学习语音音频NLP预训练PaddleSpeech 中的 AISHELL-3 多说话人中文语音语料库数据规格、多说话人 TTS 应用与完整训练实践PaddleSpeech 中的 AISHELL 3 多说话人中文语音语料库数据规格、多说话人 TTS 应用与完整训练实践 AISHELL 3 是当前开源社区中人工智能语音音频8种语言一个模型LFM2.5-1.2B-Thinking-bf16多语言能力深度评测8种语言一个模型LFM2.5 1.2B Thinking bf16多语言能力深度评测 LFM2.5 1.2B Thinking bf16 是一款仅约11.7亿人工智能语音音频NLP媒体生成上一篇Perspective 版本演进全解从 v0.0.1 到 v5.2.0 的数据可视化引擎变迁史下一篇Paddle-Lite 量化训练Quant Aware Training模型部署完全指南从 PaddleSlim 产出到端侧推理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表