新闻详情

新闻详情

首页 / 资讯中心 / 详情

ESPnet2 中的 GRABO 数据集实战:低资源语音命令识别(ASR)端到端流程与 Conformer 训练配置详解

发布时间:2026/9/25 17:56:15来源:尧图网络
ESPnet2 中的 GRABO 数据集实战:低资源语音命令识别(ASR)端到端流程与 Conformer 训练配置详解
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本文以 ESPnet2 仓库中 egs2/grabo/asr1/README.md 记录的结果报告为骨架完整还原在 ESPnet2 上跑通 GRABO荷兰语顺序词/语音命令数据集的端到端流程从数据集下载与随机划分、单 token 化标注到 Conformer 模型的训练/解码配置解析再到分类准确率与 WER 两种指标的评测实现。读完本文你可以直接复用 run.sh 复现该 recipe并理解每个关键配置项的作用与底层脚本调用链。任务与数据集背景GRABOGRAtuitous BOrdinals是卡普顿大学发布的低资源语音数据集用于“顺序词”ordinal word如第一、第二……等语音命令的识别。该 recipe 的 README 中给出了两篇数据集背景文献Renkens, V., et al. Acquisition of ordinal words using weakly supervised NMF.2014 IEEE SLT, IEEE, 2014.Renkens, V., and Van hamme, H. Capsule networks for low resource spoken language understanding. arXiv:1805.02922 (2018).训练/验证/测试集的划分方式则参考了第三篇文献Tian, Y., and Gorinski, P. J. Improving end-to-end speech-to-intent classification with Reptile. arXiv:2008.01994 (2020).这个任务的关键特性是每条语音命令被当作一个单一 token。也就是说每个参考句子reference sentence只包含一个 token——这使 ASR 退化为语音到意图intent的单标签分类问题。README 中也明确指出由于数据集较小划分是随机的结果不能被严格复现如果想得到稳定结论更好的做法是跑多次实验并取平均准确率。这一点后文会结合数据准备脚本进一步说明。数据下载与准备下载local/data.sh数据准备入口是 local/data.sh。它从 KULeuven 的 FTP 服务器拉取约 2.1 GB 的原始包data_urlftp://ftp.esat.kuleuven.be/psi/speech/vrenkens/grabo.tar.gz data_targrabo.tar.gz data_tar_size2102543961脚本会先校验本地文件字节数是否与data_tar_size一致不一致则删除重下下载后解包到${GRABO}/grabo目录。GRABO这一变量的取值来自 db.sh默认值为downloads表示该语料可由 recipe 自动下载GRABOdownloads # db.sh在 CMU TIR 集群环境中db.sh 还会根据 hostname 自动改写为项目绝对路径/projects/tir5/data/speech_corpora/Grabo体现 ESPnet2 recipe 对多环境路径的适配方式。标注与随机划分local/data_prep.py核心标注脚本是 local/data_prep.py它完成三件事从 XML 解析出命令 token。原始数据中每个 utterance 对应一个帧级 XML 标注文件framedir/cmd/utt.xml脚本中的frametotask()函数把 XML 解析为根元素名 属性字典再序列化成单行字符串root ET.parse(infile).getroot() semantic[name] root[0].text.strip() ... root ET.Element(semantic[name], attribsemantic[args]) return ET.tostring(root).decode(ascii)最终经task_str -.join(task_str.split())压缩空白后写入text文件——这就是每条命令 一个 token的直接实现。按说话人 × 命令的随机 2/4/9 划分。代码对每个说话人如pp2的spchdatadir/command/下的录音排序、洗牌后切分random.seed(2021) ... wav_list.sort() random.shuffle(wav_list) random.shuffle(wav_list) wav_dict {train: wav_list[:2], dev: wav_list[2:6], test: wav_list[6:]}即每个说话人的每条命令2 条训练、4 条验证、剩余 9 条测试。注意 README 中randomly split… please modify the data preparation script to make the procedure deterministic的提醒正源于此尽管代码里写有random.seed(2021)但os.listdir()的目录遍历顺序在不同文件系统/OS 上并不保证有序洗牌前的样本顺序可能不一致因此跨环境严格复现存在风险。生成 Kaldi 风格的 data 目录text、wav.scp、utt2spk。两个值得注意的细节wav.scp不落地中间文件而是直接写入 sox 管道命令在特征提取时在线重采样到 16 kHz 单声道downsampled_wav ( f{args.sox_path} {sample[wav_abspath]} -t wav -r 16k -c 1 - | )utt2spk中每条 utterance 都指向自身utt2spk_f.write(sample[wav_id] sample[wav_id])从源码结构看这是把每个 utterance 当作独立说话人处理规避了说话人级别信息对分类任务的干扰。data.sh 在 stage 2 调用该脚本后还会对train/dev/test三个目录依次执行utt2spk_to_spk2utt.pl、fix_data_dir.sh与validate_data_dir.sh --no-feats完成目录规整与校验。训练入口run.sh 的完整参数整个 recipe 由 run.sh 驱动它调用 ESPnet2 的通用 asr.sh。完整命令如下保留原文件全部参数train_settrain valid_setdev test_setsdev test asr_tagconformer_mono16k_warmup800_lr2e-4_accum2 inference_taginfer asr_configconf/train_asr.yaml inference_configconf/decode_asr.yaml # speed perturbation related # (train_set will be ${train_set}_sp if speed_perturb_factors is specified) speed_perturb_factors0.9 0.95 1.0 1.05 1.1 ./asr.sh \ --skip_data_prep false \ --skip_train false \ --skip_eval false \ --ngpu 1 \ --nj 8 \ --inference_nj 8 \ --speed_perturb_factors ${speed_perturb_factors} \ --feats_type fbank_pitch \ --audio_format wav \ --fs 16000 \ --token_type word \ --use_lm false \ --asr_tag ${asr_tag} \ --asr_config ${asr_config} \ --inference_tag ${inference_tag} \ --inference_config ${inference_config} \ --inference_asr_model valid.acc.ave.pth \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} \ --local_score_opts --inference_tag ${inference_tag} \ --lm_train_text data/${train_set}/text $关键参数的含义结合 asr.sh 中的注释与实现参数取值说明--feats_typefbank_pitch特征类型asr.sh支持raw、raw_copy、fbank_pitch等fbank_pitch分支会调用steps/make_fbank_pitch.sh提取 Fbank基频特征并在dumpdir/fbank_pitch中写入feats_type标记文件--speed_perturb_factors0.9 0.95 1.0 1.05 1.1语速扰动因子指定后训练集实际会变为train_sp见 asr.sh 与#L580-L601的扰动数据构造对小数据量任务等效于 5 倍数据增强--token_typeword本任务中每条命令即一个词级 token--use_lmfalse不训练独立语言模型解码仅依赖内部 LM 权重见后文decode_asr.yaml--inference_asr_modelvalid.acc.ave.pth推理时加载验证集上准确率平均的最优 checkpoint--local_score_opts--inference_tag infer透传给 local/score.sh 的评分脚本--ngpu/--nj/--inference_nj1/8/8单卡训练CPU 并行度 8需要说明的是README 中记录了feats_type: raw与feats_type: fbank_pitch两组实验但当前 run.sh 只保留了fbank_pitch这一组的入口raw组是通过把--feats_type改为raw复用的同一套模型配置得到的asr.sh在feats_typeraw时把数据放在dumpdir/raw跳过 Kaldi 特征提取直接对 16 kHz 波形建模。训练配置解析conf/train_asr.yaml训练超参见 conf/train_asr.yamlconf/tuning/train_asr_conformer_adam.yaml 为内容相同的历史存档。逐段说明批处理与优化策略batch_type: numel # 按元素个数凑批 batch_bins: 2000000 # 每个 batch 的总元素数上限特征元素数量 accum_grad: 2 # 梯度累积 2 步等效 batch 翻倍 max_epoch: 250 patience: none # 不做早停 best_model_criterion: - - valid - acc - max # 以验证集准确率为模型选择准则 keep_nbest_models: 10 # 保留 10 个最优 checkpointbest_model_criterion直接决定了run.sh中--inference_asr_model valid.acc.ave.pth的选取逻辑训练结束后取验证集准确率最高的若干模型做平均。对于单 token 分类任务用 accuracy 而非 loss 选模型是更贴合最终指标的做法。编码器12 层 Conformerencoder: conformer encoder_conf: output_size: 256 attention_heads: 4 linear_units: 2048 num_blocks: 12 dropout_rate: 0.1 positional_dropout_rate: 0.1 attention_dropout_rate: 0.0 input_layer: conv2d # Conv2d 前端把 mel 特征图下采样为序列 normalize_before: true # Pre-LN macaron_style: true # Macaron 风格双 FFN 结构 rel_pos_type: legacy pos_enc_layer_type: rel_pos # 相对位置编码 selfattention_layer_type: rel_selfattn activation_type: swish use_cnn_module: true # Conformer 标志性的卷积模块 cnn_module_kernel: 15input_layer: conv2d意味着该配置同时兼容fbank_pitch与raw两种输入对 raw 波形ESPnet2 会在 Conformer 前接 STFT 前端对应 tag 中的mono16k对 fbank_pitch则把 Fbank 与基频拼接后送入 Conv2d。这与 README 中两组实验共享同一 tag 名asr_conformer_mono16k_warmup800_lr2e-4_accum2相吻合。解码器与损失decoder: transformer decoder_conf: attention_heads: 4 linear_units: 2048 num_blocks: 6 dropout_rate: 0.1 positional_dropout_rate: 0.1 self_attention_dropout_rate: 0.0 src_attention_dropout_rate: 0.0 optim: adam optim_conf: lr: 0.0002 scheduler: warmuplr # pytorch v1.1.0 required scheduler_conf: warmup_steps: 800 model_conf: ctc_weight: 0.0 # 纯 Attention 模型不用 CTC lsm_weight: 0.0 length_normalized_loss: false模型名中的三个数字都能在这里找到出处warmup800对应warmup_steps: 800lr2e-4对应lr: 0.0002accum2对应accum_grad: 2。ctc_weight: 0.0说明模型完全依赖 Attention 解码路径这在解码配置中会再次得到印证。SpecAugment 数据增强specaug: specaug specaug_conf: apply_time_warp: true time_warp_window: 5 time_warp_mode: bicubic apply_freq_mask: true freq_mask_width_range: [0, 30] num_freq_mask: 2 apply_time_mask: true time_mask_width_range: [0, 40] num_time_mask: 2配合run.sh中的语速扰动训练侧共有两层增强时间维度的 SpecAugment时变/频带掩蔽 时间扭曲与语速 5 倍扰动这是对数据集小这一根本约束的主要应对手段。特征参数fbank_pitch模式下Fbank 与基频分别由 conf/fbank.conf 与 conf/pitch.conf 控制# fbank.conf --sample-frequency16000 --num-mel-bins80# pitch.conf --sample-frequency16000均为 16 kHz 采样率下的 80 维 mel 滤波组与data_prep.py中 sox 在线重采样到-r 16k的约定一致。解码配置conf/decode_asr.yamllm_weight: 0.0 ctc_weight: 0.0 beam_size: 1 maxlenratio: -1这份极简配置与训练侧ctc_weight: 0.0形成闭环解码时既无外部 LMlm_weight: 0.0也无 CTC 分支ctc_weight: 0.0beam_size: 1即等价于 greedy 解码。由于每条假设只有一个 tokenbeam search 的宽度本来就无意义beam_size: 1使解码退化为对单一 token 的 argmax进一步印证了单 token 分类的任务本质。maxlenratio: -1则关闭输出长度比约束允许任意长度假设参与排序。评测分类准确率与 WER评测由asr.sh的推理阶段统一调度WER 分数由通用评分流程产出而分类准确率则由 recipe 自带的两个脚本计算local/score.sh遍历exp/asr_tag/inference_tag/下各测试集子目录对每个目录调用score.py并把逐测试集结果追加汇总为accuracy.csvlocal/score.py读取推理输出的hyp.trn与ref.trn逐 utterance 做整句字符串精确匹配来统计准确率for sample_id in ref_dict: n_samples 1 if ref_dict[sample_id] hyp_dict[sample_id]: n_correct 1结果写入accuracy.csv表头total,correct,accuracy。由于每条参考只有一个 token二者是互补的视角分类准确率统计整句命中WER 的 Snt 列则给出替换率。两者满足近似关系accuracy ≈ 1 - Sub/100本任务 Del、Ins 均为 0README 中的结果表也验证了这一点如 fbank_pitch 组 devaccuracy 0.965 对应 Sub 3.5%。实验结果README 原文记录feats_type: raw环境Python 3.9.7 / espnet 0.10.5a1 / PyTorch 1.9.0 / Git hash09ddefe8fd5b6394338b0c653c3f6ec50063a8432021-11-20模型asr_conformer_mono16k_warmup800_lr2e-4_accum2Zenodo 记录 5716386datasetSntWrdCorrSubDelInsErrS.Errinfer/dev1584158497.92.10.00.02.12.1infer/test3631363197.62.40.00.02.42.4feats_type: fbank_pitch环境Python 3.8.12 (conda-forge) / espnet 0.10.3a3 / PyTorch 1.9.0 / Git hash3d17c072348a1a9a4a3f179ad642c0d9f07f44062021-10-01模型asr_conformer_mono16k_warmup800_lr2e-4_accum2Zenodo 记录 5637566分类准确率datasettotalcorrectaccuracydev158415290.965test363135280.972WERdatasetSntWrdCorrSubDelInsErrS.Errinfer/dev1584158496.53.50.00.03.53.5infer/test3631363197.22.80.00.02.82.8从表中可以读出几点全部错误都是替换Sub没有删除/插入——与单 token 输出结构必然导致的 DelIns0 一致raw 特征组略优于 fbank_pitch 组test 2.4% vs 2.8%差距很小test 集3631 条明显大于 dev1584 条符合 2/4/9 的划分比例约 1:2:4.5。复现注意事项与适用边界随机划分的不可复现性如 README 所述划分依赖os.listdir()顺序与洗牌跨环境结果可能有微小波动。README 建议跑多次实验取平均准确率而非追求单点可复现若要确定性划分需自行修改 local/data_prep.py 中的排序/切分逻辑仓库只读请在本地副本中修改。运行前提需要 soxdata_prep.py通过command -v sox定位fbank_pitch特征提取依赖 Kaldi 工具链asr.sh 中fbank_pitch分支注释为[Require Kaldi]数据约 2.1 GB 且来自 FTP 源下载环境需放行 FTP。适用场景该 recipe 展示了 ESPnet2 如何用通用 ASR 流程 单 token 文本实现低资源语音命令/意图识别。其设计单 token 参考、accuracy 选模、greedy 解码、语速扰动 SpecAugment可以直接迁移到其他小型命令词表任务但训练/测试集规模1584/3631 条决定了它只能作为流程与配置参考不构成大规模识别系统的性能基线。相关文件索引文件作用egs2/grabo/asr1/README.md数据集文献、随机划分说明与两组实验结果报告egs2/grabo/asr1/run.sh一键训练/推理入口定义全部命令行参数egs2/grabo/asr1/local/data.sh数据下载、解包与 data 目录构建egs2/grabo/asr1/local/data_prep.pyXML 命令解析、2/4/9 随机划分、sox 重采样管道egs2/grabo/asr1/conf/train_asr.yamlConformer 训练超参、SpecAugment 配置egs2/grabo/asr1/conf/decode_asr.yaml纯 Attention greedy 解码配置egs2/grabo/asr1/conf/fbank.conf / conf/pitch.conf16 kHz 下 80 维 Fbank 与基频参数egs2/grabo/asr1/local/score.sh / local/score.py分类准确率统计与汇总egs2/grabo/asr1/db.sh语料路径变量GRABOdownloads赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet2 SPGispeech ASR Recipe 详解Conformer RNN-LM 混合解码的端到端语音识别训练与结果解读ESPnet2 SPGispeech ASR Recipe 详解Conformer RNN LM 混合解码的端到端语音识别训练与结果解读 本文基于 ESP人工智能语音音频深度学习NLPESPnet2 瑞士法语多音词语料 ASR 实战Conformer 端到端语音识别 Recipe 与结果复盘ESPnet2 瑞士法语多音词语料 ASR 实战Conformer 端到端语音识别 Recipe 与结果复盘 本篇基于 ESPnet 仓库中 egs2/pol人工智能语音音频深度学习NLPESPnet2 端到端语音处理实战教程Recipe 体系、训练配置、流式 ASR 与 Transducer 模型全解析ESPnet2 端到端语音处理实战教程Recipe 体系、训练配置、流式 ASR 与 Transducer 模型全解析 导读 本文是基于 ESPnet 仓库人工智能语音音频深度学习NLP上一篇pytest 6.2.5 发布解析bug-fix 版本、Python 3.10 支持与 pluggy 1.0 兼容性升级指南下一篇unity-mcp 中 unity_reflect 工具全解析用实时反射校验 Unity C API告别过时的训练数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

WinForm+SQL Server酒店管理系统实战指南 2026/9/25 17:56:15

WinForm+SQL Server酒店管理系统实战指南

简介:这是一套基于C# WinForm与SQL Server开发的酒店管理系统完整毕设项目,面向计算机类专业在校生、教师及初级开发者,适用于课程设计、毕业设计、项目实训与.NET桌面应用入门实践。资源包含170个文件,以63个C#源码文件&#xff…

阅读更多 →
【2026年12月国内外各地国际学术会议推荐】数据科学、通信工程、计算机视觉、艺术文化、交通安全、智能系统、人机交互、航空航天工程、控制科学、环境科学、科技创新、高性能计算、机电工程等主题可选!... 2026/9/25 17:56:02

【2026年12月国内外各地国际学术会议推荐】数据科学、通信工程、计算机视觉、艺术文化、交通安全、智能系统、人机交互、航空航天工程、控制科学、环境科学、科技创新、高性能计算、机电工程等主题可选!...

年末12月是科研成果收官、论文投稿冲刺的关键窗口期,也是广大学者积累学术成果、开展学术交流的黄金阶段。为帮助各领域科研人员高效筛选适配的投稿渠道,特此整理2026年12月国内外各地国际学术会议清单。本次会议资源覆盖面极广,涵盖数据科学…

阅读更多 →
【2026年11月国内外各地国际学术会议推荐】计算机应用、机器学习、智能控制、土木建筑工程、能源储能、电力电气、教育管理、遥感测绘、材料制造、图像处理、大数据、通信与信号、材料科学等主题可选!... 2026/9/25 17:55:56

【2026年11月国内外各地国际学术会议推荐】计算机应用、机器学习、智能控制、土木建筑工程、能源储能、电力电气、教育管理、遥感测绘、材料制造、图像处理、大数据、通信与信号、材料科学等主题可选!...

临近 2026 年 11 月,正是科研人把握论文投稿窗口期、筹备学术交流的黄金时段。不少硕博生、高校教师与科研从业者都在寻找学科匹配、地域灵活的国际学术会议。本次整理【2026 年 11 月国内外各地国际学术会议推荐】,覆盖计算机应用、机器学习、智能控制、…

阅读更多 →

最新相关资讯

嵌入式软件静态测试(二十八)——角色驱动审查技术:作者讲解、审查员提问与记录员跟进的协同方法 2026/9/25 18:29:25

嵌入式软件静态测试(二十八)——角色驱动审查技术:作者讲解、审查员提问与记录员跟进的协同方法

❄️ 我的个人专栏: 《智能软件工程AI4SE》 《嵌入式面试总结》 《嵌入式处理器架构解析》 《嵌入式与虚拟化》 《嵌入式软件测试》 🌟 Simplicity is the ultimate sophistication摘要:本文介绍一种以角色分工为核心的嵌入式软件静态审查技…

阅读更多 →
信息安全相关 2026/9/25 18:29:18

信息安全相关

from 王文平测试组主管俞露:主要负责信息安全测试报告,为人说话比较硬气 健忘诊断主管王伟:主要负责信息安全uds诊断方面,不会的可以向他讨教,经常会出现消息已读不回及不看消息的情况殷达,朱冰:解放项目经理方锐&…

阅读更多 →
OpenClaw + CC Switch 配置全链路排查指南 2026/9/25 18:29:18

OpenClaw + CC Switch 配置全链路排查指南

适用环境&#xff1a;Windows WSL2 (Ubuntu/Debian 等) 或 原生 Linux 或 macOS WSL 本质就是 Linux&#xff0c;本文中所有 WSL 路径&#xff08;/home/xxx/&#xff09;在原生 Linux 上完全通用&#xff0c;只需把用户名换成你自己的。 macOS 用户把 ~ 换成 /Users/<你的…

阅读更多 →
超市进销存管理系统核心设计:用例图、数据库与库存流水 2026/9/25 18:29:18

超市进销存管理系统核心设计:用例图、数据库与库存流水

简介&#xff1a;面向超市运营人员、管理信息系统学习者与开发者的进销存管理系统项目包&#xff0c;覆盖商品进货、销售管理、库存统计、订单管理等核心业务&#xff0c;并附带用例图辅助理解系统角色与交互流程。压缩包共103个文件&#xff0c;大小约2.03MB&#xff0c;以cs源…

阅读更多 →
免费的市场调研工具怎么搭:用 TraeWork 串起趋势、竞品和用户证据,TaoToken 统一 Key 打通数据链路 2026/9/25 18:29:12

免费的市场调研工具怎么搭:用 TraeWork 串起趋势、竞品和用户证据,TaoToken 统一 Key 打通数据链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
活动平台高并发架构设计与云原生实践 2026/9/25 18:29:12

活动平台高并发架构设计与云原生实践

1. 平台定位与整体架构拆解1.1 核心业务场景决定了架构方向“会会平台”这类产品&#xff0c;本质上做的是“连接”生意&#xff1a;一边连接会议活动的组织方&#xff0c;一边连接参会的行业用户。组织方需要创建活动、发布议程、管理报名、做现场签到、沉淀用户数据&#xff…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉