首页/新闻资讯/正文详情

ESPnet2 瑞士法语多音词语料 ASR 实战:Conformer 端到端语音识别 Recipe 与结果复盘

发布时间:2026/9/25 14:48:31 来源:云帆数科 栏目:资讯中心
ESPnet2 瑞士法语多音词语料 ASR 实战:Conformer 端到端语音识别 Recipe 与结果复盘
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本篇基于 ESPnet 仓库中egs2/polyphone_swiss_french/asr1的官方结果报告README展开完整复盘一次在瑞士法语多音词Polyphone Swiss French语料上训练的 Conformer ASR 实验从语料清洗与划分、run.sh一键训练参数到 ASR/LM/解码三套 YAML 配置的逐项解读并给出该实验在 dev/test 集上的 WER、CER、TER 结果表格。读完后你可以理解 ESPnet2 ASR recipe 的标准工作流并具备复现或改造该法语识别实验的完整能力。一、Recipe 总览数据准备、训练与评测的完整链路该 recipe 位于 egs2/polyphone_swiss_french/asr1是 ESPnet2 标准的 ASR 目录结构核心文件包括run.sh一键驱动脚本固定了数据划分、GPU 数、BPE 词表规模等实验参数asr.shESPnet2 通用 ASR 主脚本数据准备 → 特征提取 → 多 GPU 训练 → LM 训练 → 解码 → 评分 → 生成结果报告local/data_prep.py语料专属的 Kaldi 风格数据准备脚本local/train.lst、local/dev.lst、local/test.lst固定的训练/开发/测试话语 ID 列表用于实验复现conf/ 目录ASR 训练、LM 训练与解码配置train_asr_conformer.yaml、train_lm.yaml、decode_asr.yaml及其tuning/调参版本README.md由scripts/utils/show_asr_result.sh自动生成的训练环境信息与最终评测结果报告。整体流程为原始语料经data_prep.py清洗并输出 Kaldi 格式目录 →asr.sh提取 80 维 mel 特征并切分 BPE 词表 → 训练 Conformer ASR 模型与 RNN-LM → 带 LM 加权解码 → 用 sclite 系列工具计算 WER/CER/TER 并写回 README。二、语料与数据准备ELRA 瑞士法语多音词语料该 recipe 面向 ELRA 目录中的 Swiss French Polyphone 语料ELRA-S0030_02 版本语料元信息见 data_prep.py 的类文档字符串。local/data_prep.py 中的FrPolyphonePrepper类实现了完整的准备流程几个值得注意的工程细节文本清洗_cleantext方法约 L80-L120先丢弃含数字的转写然后小写化删除[hésitation]、[prononciation bizarre]、[inintelligible]等事件标注以及方括号杂项统一各类变音符ҫœ→oe、ò→o、ҫ→ç等最后把空转写的 utterance 整体剔除说话人级划分utterance ID 的前 5 个字符如F0000即为说话人 ID首字母为性别标记f/m。make_train_dev_test支持两种模式——提供固定train/dev/test列表时按列表复现原实验_replicate_existing否则按说话人粒度随机划分确保 dev/test 中的说话人在训练集完全缺席文件扫描findfiles递归查找.ALW音频与.LST转写文件合并 DOS/UNIX 两套目录并去重音频接口wav.scp不落地复制音频而是直接写ffmpeg -i src -f wav -ar 16000 -ab 16 - |管道命令把原始 .ALW 实时转 16 kHz WAV 流特征采样率由 conf/fbank.conf 指定为 16 kHz、80 个 mel 通道--sample-frequency16000 --num-mel-bins80固定的 ID 列表保证可复现性例如 local/train.lst 共有 133468 条话语。三、一键训练run.sh 的参数与数据划分run.sh 是整个 recipe 的入口内容很短但信息密度很高train_setvalid_train valid_setvalid_dev test_setsvalid_dev valid_test asr_configconf/tuning/train_asr_conformer.yaml lm_configconf/tuning/train_lm_adam.yaml inference_configconf/decode_asr.yaml ./asr.sh \ --lang fr \ --ngpu 8 \ --nbpe 800 \ --max_wav_duration 30 \ --speed_perturb_factors 0.9 1.0 1.1 \ --asr_config ${asr_config} \ --lm_config ${lm_config} \ --inference_config ${inference_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} \ --lm_train_text data/${train_set}/text \ --bpe_train_text data/${train_set}/text $各参数含义参数取值说明--langfr语言设为法语供词典/评分等环节使用--ngpu8使用 8 块 GPU 训练注意run.sh使用 8 卡而conf/tuning/train_asr_conformer.yaml注释说明该配置至少需要 4 块 32GB 显存 GPU两者均满足--nbpe800BPE 词表大小 800与结果模型名bpe800对应--max_wav_duration30训练时单条 wav 最长 30 秒超过则切分--speed_perturb_factors0.9 1.0 1.1速度扰动把训练数据量近似放大 3 倍--train_set / --valid_set / --test_setsvalid_train / valid_dev / valid_dev valid_testdev 集同时用于模型选择和评测--lm_train_text / --bpe_train_textdata/${train_set}/textLM 训练文本与 BPE 词表均取自训练集转写结果模型命名asr_train_asr_conformer_raw_bpe800_sp即由此导出raw表示直接喂 80 维 fbankraw_wav风格入口encoder 用conv2d6做前端bpe800表示词表规模sp表示启用了速度扰动。四、ASR 训练配置Conformer 编码器 Transformer 解码器run.sh实际加载的是 conf/tuning/train_asr_conformer.yaml与 conf/train_asr_conformer.yaml 内容一致。完整配置解读如下4.1 训练控制参数batch_type: numel # 按元素数帧数动态组 batch batch_bins: 20000000 # 每个 batch 的帧数上限约 2000 万帧 accum_grad: 4 # 梯度累积 4 步 max_epoch: 60 patience: none # 不用早停训满 60 epoch init: xavier_uniform best_model_criterion: - - valid # 以验证集 acc 最大者为最佳模型 - acc - max keep_nbest_models: 10 # 保留 10 个最优 checkpointnumelbatch_bins是 ESPnet2 推荐的动态 batch 策略以帧数总和而非固定条数控制显存占用对法语这类句长差异大的语料更稳定accum_grad: 4使有效 batch 相当于 8 卡 × 4 次累积。4.2 Conformer 编码器encoder: conformer encoder_conf: output_size: 512 attention_heads: 8 linear_units: 2048 num_blocks: 12 dropout_rate: 0.1 positional_dropout_rate: 0.1 attention_dropout_rate: 0.1 input_layer: conv2d6 # 卷积前端替代传统 subsample normalize_before: true # Pre-LN macaron_style: false pos_enc_layer_type: rel_pos # 相对位置编码 selfattention_layer_type: rel_selfattn # 相对自注意力 activation_type: swish use_cnn_module: true cnn_module_kernel: 31这是一个 12 层、512 维、8 头的标准 Conformer使用相对位置编码与 Swish 激活卷积模块核宽 31conv2d6输入层直接从 80 维 mel 特征做卷积下采样2×2 卷积核、步长 2共 6 个卷积块是 ESPnet 中 raw-waveform/fbank 入口 Conformer 的常用做法。4.3 解码器与损失decoder: transformer decoder_conf: attention_heads: 8 linear_units: 2048 num_blocks: 6 dropout_rate: 0.1 ... model_conf: ctc_weight: 0.3 # joint CTCAttention 训练CTC 权重 0.3 lsm_weight: 0.1 # label smoothing length_normalized_loss: false4.4 优化器、调度与 SpecAugmentoptim: adam optim_conf: lr: 0.001 scheduler: warmuplr scheduler_conf: warmup_steps: 25000 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: 2Adam 25000 步线性 warmup配合 SpecAugment 的时间扭曲窗口 5与频域/时域掩蔽各 2 条是 ESPnet 官方 recipe 的常规增强组合。五、语言模型与解码配置5.1 RNN-LMconf/tuning/train_lm_adam.yaml 定义了一个 4 层、2048 维的 RNN-LMlm_conf: nlayers: 4 unit: 2048 optim: adam optim_conf: lr: 0.001 batch_type: folded # 按总 token 数折行组 batch batch_size: 400 # batch size in LM training max_epoch: 20 # if the data size is large, we can reduce this patience: 3 best_model_criterion: - - valid - loss - min keep_nbest_models: 1LM 文本来自data/valid_train/text由run.sh的--lm_train_text指定以验证集 loss 最小为选模标准仅保留 1 个最佳 checkpoint。5.2 解码conf/decode_asr.yaml 只有三行但决定了解码行为lm_weight: 0.6 ctc_weight: 0.4 beam_size: 10即 beam search 宽度 10采用score 0.4×ctc 0.6×lm的加权评分。由于训练时ctc_weight: 0.3解码权重取 0.4/0.6 属于 LM 权重略高的典型设置可进一步调参对比。六、训练环境与最终结果原报告全文继承以下环境信息与结果表格完整继承自 README.md由 ESPnet2 的show_asr_result.sh在训练结束后自动生成。6.1 训练环境date:Mon Dec 14 21:54:15 UTC 2020python version:3.7.4 (default, Aug 13 2019, 20:35:49) [GCC 7.3.0]espnet version:espnet 0.9.6pytorch version:pytorch 1.7.06.2 WER词错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_dev98467236894.84.21.00.85.920.4decode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_test42613144694.94.01.00.75.719.56.3 CER字/字符错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_dev984640233198.00.81.20.82.820.4decode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_test426117526198.10.81.10.82.719.56.4 TER词序列错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_dev984611863894.83.41.81.16.320.4decode_asr_lm_lm_train_lm_adam_bpe800_valid.loss.ave_asr_model_valid.acc.ave/valid_test42615180495.13.21.71.15.919.5几点解读dev/test 规模dev 集 9846 句、test 集 4261 句test 集 WER 5.7%、CER 2.7%Sub 主导而 Ins/Del 很低说明该 ConformerLM 组合在该语料上漏词/多词很少错误集中在词内替换——这与法语多音词语料中重音/元音相近词易混淆的特性相符S.Err 与 Err 的差值句级错误率dev 20.4%、test 19.5%远高于词级错误率5.9/5.7意味着约五分之一的句子至少包含一个错误词对需要整句精确的场景仍需后处理耗时README 末行显示Successfully finished. [elapsed7980s]即整个asr.sh主流程8 卡约 133 分钟完成训练到评测这是 60 epoch Conformer 训练在该语料规模下的参考量级。原报告还指出该预训练模型曾发布在 Zenodo 归档record 4319575如需离线获取可在原文中查阅出处本文不再外链。七、复现与调参建议环境前提按 doc/installation.md 安装 ESPnet2 依赖Python 3.7、PyTorch、ffmpeg 等语料本身需先从 ELRA 获取并放入下载目录recipe 的data_prep.py期望的输入结构Polyphone*子目录、.ALW/.LST文件与原语料包一致复现固定划分保留 local/train.lst、local/dev.lst、local/test.lst 三个列表即可完全复现原实验的 train/dev/test 划分data_prep.py支持通过--config传入的 YAML 指定trainlist/devlist/testlist显存conf/tuning/train_asr_conformer.yaml首行注释要求 4×32GB GPU原实验用 8 卡训练若卡数不同建议同比例下调batch_bins或上调accum_grad以维持有效 batch可调点decode_asr.yaml中的lm_weight/ctc_weight组合、encoder 层数12 层为上限配置可降到 6 层做轻量模型、BPE 规模800 → 更大以覆盖法语词形变化都是低风险的调参方向参考同族 recipe仓库中 egs2/mini_an4/asr1 提供了结构相同的完整 ASR recipe含更多数据准备脚本适合对照理解asr.sh各阶段。八、小结该 recipe 展示了 ESPnet2 处理一个小而脏的专用语料的完整方法论用data_prep.py做领域特化的文本归一化与说话人级划分用numel动态 batch SpecAugment 训练 12 层 ConformerCTC 权重 0.3 的联合训练再叠加 4 层 RNN-LM 以 0.4/0.6 权重做 beam 解码最终在该法语多音词语料上取得 test 集 WER 5.7% / CER 2.7%。所有配置、ID 列表与结果表格均可在 egs2/polyphone_swiss_french/asr1 目录内直接查证与复现。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet2 端到端语音处理实战教程Recipe 体系、训练配置、流式 ASR 与 Transducer 模型全解析ESPnet2 端到端语音处理实战教程Recipe 体系、训练配置、流式 ASR 与 Transducer 模型全解析 导读 本文是基于 ESPnet 仓库人工智能语音音频深度学习NLPfairseq S2T 实战指南基于 CoVoST 2 复现端到端语音识别ASR与语音翻译ST全流程fairseq S2T 实战指南基于 CoVoST 2 复现端到端语音识别ASR与语音翻译ST全流程 本指南围绕 decoding/IAD/fairs人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调fairseq S2T 实战在 MuST-C 上完成端到端语音翻译ST与语音识别ASR全流程fairseq S2T 实战在 MuST C 上完成端到端语音翻译ST与语音识别ASR全流程 导读 本文基于仓库 decoding/IAD/fairs人工智能大模型预训练深度学习NLP计算机视觉多模态语音音频微调上一篇BepInEx 6.0.0版本架构深度解析与Unity游戏插件框架稳定性优化实践下一篇Unity插件框架BepInEx 6.0.0架构深度解析与企业级部署实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

不靠RSSI靠CSI:WiFi穿墙感知原理及RuView开源项目解析
不靠RSSI靠CSI:WiFi穿墙感知原理及RuView开源项目解析

1. WiFi"看穿墙"并不玄:CSI才是关键说实话,我第一次在GitHub上看到RuView这个开源项目时,第一反应是"标题党"——WiFi还能看穿墙壁?家里路由器又不是X光机。但把整个原理捋了一遍之后,我必须承认&… · 2026/9/25 14:48:25

Matlab/Simulink汽车电机控制仿真能力四阶跃迁
Matlab/Simulink汽车电机控制仿真能力四阶跃迁

1. 这不是学软件,是在练“电机控制的肌肉记忆”Matlab/Simulink 仿真汽车电机控制——这句话在秋招季的简历筛选池里,已经从加分项悄悄滑向“基础门槛”。我带过37个应届生做电驱系统岗面试辅导,其中21个卡在“你这个Simulink模型&#xff0c… · 2026/9/25 14:48:19

嵌入式固件升级机制全解析:从Bootloader到双备份
嵌入式固件升级机制全解析:从Bootloader到双备份

搞嵌入式这些年,经手过的驱动板卡少说也有几十种:液晶屏驱动板、步进电机驱动板、工业IO控制板、电源管理板,形态各异,但有个共同点——它们都绕不开固件升级。我见过太多板卡第一次出厂好好的,真正让售后崩溃、让用户… · 2026/9/25 14:48:13

RT-Thread 5.3 在 QEMU virt AArch64 平台上的 BSP 移植与全外设开发验证指南
RT-Thread 5.3 在 QEMU virt AArch64 平台上的 BSP 移植与全外设开发验证指南

操作系统嵌入式物联网嵌入式OSRTOS 【免费下载链接】rt-thread RT-Thread is an open source IoT Real-Time Operating System (RTOS). https://rt-thread.github.io/rt-thread/ 项目地址: https://gitcode.com/gh_mirrors/rt/rt-thread 点击查看 免费下载 导读 本… · 2026/9/25 15:18:59

MyDAC v5.10源文件解析:Delphi连接MySQL的Direct模式与避坑指南
MyDAC v5.10源文件解析:Delphi连接MySQL的Direct模式与避坑指南

简介:MyDAC v5.10是一套定位明确的MySQL数据访问组件源码,面向长期使用Delphi或CBuilder的桌面应用开发者,用于在不依赖中间件的情况下直连MySQL服务器,实现增删改查、事务处理、批量提交、存储过程与异步调用等常见数据库需求&am… · 2026/9/25 15:18:59

KytyPS5系统库模拟策略:40+ PS5系统模块的符号注册机制与逆向实现完整指南
KytyPS5系统库模拟策略:40+ PS5系统模块的符号注册机制与逆向实现完整指南

KytyPS5系统库模拟策略:40 PS5系统模块的符号注册机制与逆向实现完整指南 【免费下载链接】KytyPS5 PlayStation 5 emulator for Windows, Linux and MacOS 项目地址: https://gitcode.com/gh_mirrors/ky/KytyPS5 KytyPS5 是一款面向 Windows、Linux 和 macOS… · 2026/9/25 15:18:53

Flutter跨端开发实战:OpenHarmony上宝可梦搜索模块实现与性能优化
Flutter跨端开发实战:OpenHarmony上宝可梦搜索模块实现与性能优化

做 Flutter 跨端开发这几年,我一直觉得能碰到一个"既有挑战又贴近实际需求"的项目是件挺难得的事。最近在 OpenHarmony 设备上落地了一个游戏库管理 App,其中核心功能——宝可梦搜索模块从设计到实现,前后踩了不少坑,也… · 2026/9/25 15:18:40

什么是大语言模型(LLM)?它与传统机器学习模型的主要区别是什么?
什么是大语言模型(LLM)?它与传统机器学习模型的主要区别是什么?

一、LLM 是什么 LLM(Large Language Model,大语言模型) 是基于 Transformer 架构、在海量文本上预训练的超大规模神经网络,通过"预测下一个词"学习语言规律,具备理解、生成、推理等通用语言能力。典型代表&a… · 2026/9/25 15:18:40

浏览器里的真实终端?DSH-better-sidebar用xterm.js+node-pty实现真Shell的完整原理(含断线重连回放)
浏览器里的真实终端?DSH-better-sidebar用xterm.js+node-pty实现真Shell的完整原理(含断线重连回放)

浏览器里的真实终端?DSH-better-sidebar用xterm.jsnode-pty实现真Shell的完整原理(含断线重连回放) 【免费下载链接】DSH-better-sidebar 开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子… · 2026/9/25 15:18:40

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* 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 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* 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 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* 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 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码