ESPnet 的 Kathbath 多语种印度语 ASR 配方:E-Branchformer 训练、解码与评测全解析

发布时间:2026/9/25 6:02:48

ESPnet 的 Kathbath 多语种印度语 ASR 配方:E-Branchformer 训练、解码与评测全解析 人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本篇技术指南基于 ESPnet 2 开源语音处理工具包中的 Kathbath 语音识别配方egs2/kathbath/asr1系统讲解如何利用 E-Branchformer 编码器 Transformer 解码器架构在 12 种印度语言上完成从数据下载、格式转换、BPE 分词、模型训练到 WER/CER 评测的完整流程。读者读完本文后将掌握该配方的全部关键参数含义、可复现的 WER/CER 结果基线以及如何将预训练模型迁移到自己的推理场景。数据集与任务背景Kathbath 与 IndicSUPERBKathbath 是 IndicSUPERB 基准推出的多语种语音数据集覆盖12 种印度语言乌尔都语urdu、泰卢固语telugu、卡纳达语kannada、马拉雅拉姆语malayalam、孟加拉语bengali、奥里亚语odia、古吉拉特语gujarati、印地语hindi、泰米尔语tamil、旁遮普语punjabi、梵语sanskrit和马拉地语marathi。该数据集具有两大设计特点对 ASR 鲁棒性研究非常有价值干净与噪声双版本数据分为kb_data_clean_m4a干净语音与kb_data_noisy_m4a噪声语音两部分说话人 known/unknown 双测试集测试阶段包含test总集、test_known已知说话人、test_noisy噪声、test_known_noisy已知说话人 噪声四类评测划分。在 egs2/kathbath/asr1/local/data.sh 中可以看到全部数据源的下载入口被定义为train_data_url、valid_data_url、clean_test_known_data_url、clean_test_unknown_data_url、noisy_test_known_data_url、noisy_test_unknown_data_url以及干净/噪声两份转录文件transcript_clean_url、transcript_noisy_url托管在公共对象存储服务上配方会在 stage 1 自动执行wgettar完成下载与解包。配方结构速览该配方目录是标准的 ESPnet2 recipe 布局核心文件如下文件作用run.sh配方入口定义语言、数据集划分与训练/解码参数asr.sh通用 ASR 流程脚本按 stage 串联数据准备、分词、训练、解码、评测local/data.shKathbath 专属的数据下载与 Kaldi 风格数据目录构建脚本conf/train_asr.yaml模型结构E-Branchformer Transformer与训练超参配置conf/decode_asr.yaml解码beam search CTC 联合配置db.sh数据集根路径配置其中KATHBATHdownloads表示可自动下载cmd.sh并行执行后端选择local/sge/slurm 等path.sh环境变量与工具链路径加载环境与硬件基线原 README 记录了本次基线实验的完整运行环境egs2/kathbath/asr1/README.md项目值实验日期Thu Jul 27 01:21:08 IST 2023Python3.8.10 (GCC 9.4.0)ESPnet 版本espnet 202304PyTorch1.10.1cu113Git hash4c8aeda5de44f08d3617cdfc7aeb30bdf3d53d72GPU单张 NVIDIA GeForce RTX 3090 24GB模型参数量35M模型文件大小140.03 MB训练耗时16349 ~ 34072 秒约 4.5 ~ 9.5 小时值得注意训练配置 conf/train_asr.yaml 首行注释写的是A40 (48 GB) x 1 GPUs而 README 记录为 3090 24GB两者存在出入从 README 的实测记录看最终基线是在单张 24GB 显存的 3090 上完成的这也说明该 35M 参数模型对显存要求并不苛刻。端到端复现从数据下载到模型训练第 1 步配置数据根目录在 db.sh 中KATHBATHdownloads表示数据由配方自动下载到本地downloads目录若你的数据已手动放置在其他路径将该项改为对应绝对路径即可。local/data.sh 会检查KATHBATH是否为空为空则报错退出因此这一步是必须的。第 2 步下载与数据准备stage 1–2local/data.sh 承担两个 stagestage 1数据下载依次下载噪声测试集、噪声转录、干净测试集、训练集、验证集与干净转录解包后写入download_done标记文件若标记已存在则跳过。stage 2数据准备遍历kb_data_clean_m4a与kb_data_noisy_m4a下每种语言、每个划分目录核心操作包括使用ffmpeg将.m4a统一转为16kHz 单声道.wav生成 Kaldi 风格数据目录wav.scp、utt2spk、text、spk2utt对文本做清洗将不间断空格\xC2\xA0替换为普通空格调用utils/fix_data_dir.sh校验数据目录一致性。其中噪声数据中valid_noisy划分会被跳过见if [ $splitname valid_noisy ]分支因为噪声版本不提供独立验证集。最终得到data/lang/train、data/lang/valid、data/lang/test、data/lang/test_known、data/lang/test_noisy、data/lang/test_known_noisy等目录。第 3 步训练入口 run.shrun.sh 默认以langurdu运行即单语言训练每个语言一个独立实验并将所有参数透传给通用训练脚本 asr.shlangurdu train_set$lang/train valid_set$lang/valid test_sets$lang/test $lang/test_known $lang/test_noisy $lang/test_known_noisy asr_configconf/train_asr.yaml inference_configconf/decode_asr.yaml ./asr.sh \ --lang $lang \ --ngpu 1 \ --stage 1 \ --nj 32 \ --inference_nj 32 \ --token_type bpe \ --nbpe 500 \ --max_wav_duration 30 \ --feats_type raw \ --use_lm false \ --asr_config ${asr_config} \ --inference_config ${inference_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} $关键参数含义如下参数值说明--langurdu当前训练语言可切换为 telugu/kannada 等其余 11 种--ngpu1单卡训练--nj/--inference_nj32特征提取与解码阶段的并行 job 数--token_typebpe词元类型孟加拉语、古吉拉特语使用char其余语言用bpe--nbpe500BPE 词表大小梵语为 200见结果表中的实验名--max_wav_duration30最长音频时长秒超出会被过滤asr.sh 默认值为 20此处被覆盖为 30--feats_typeraw直接使用原始波形由前端在线计算 Fbank 特征--use_lmfalse不训练语言模型解码仅依赖模型内部--train_set/--valid_set/--test_sets上述划分训练、验证与 4 个测试集运行./run.sh时asr.sh 会按 stage 依次执行数据准备 → 统计量计算与 CMVN → BPE 词表训练 → 特征 dump → 训练 → 解码 → 打分。由于--use_lm false流程会跳过 LM 训练阶段。第 4 步解码与评估解码配置见 conf/decode_asr.yamlbeam_size: 20 ctc_weight: 0.3 lm_weight: 0.0 maxlenratio: 0.0 minlenratio: 0.0 penalty: 0.0即使用beam size 20的集束搜索以ctc_weight: 0.3将 CTC 路径与注意力解码路径联合评分lm_weight: 0.0对应不加载外部 LMmaxlenratio/minlenratio均为 0由模型自动推断输出长度无长度惩罚。评测环节由 asr.sh 内部调用score_sclite.sh生成 WER字符级语言则额外产出 CER。模型配置深度解析train_asr.yaml完整训练配置见 conf/train_asr.yaml下面分层解析。E-Branchformer 编码器encoder: e_branchformer encoder_conf: output_size: 256 attention_heads: 4 attention_layer_type: rel_selfattn pos_enc_layer_type: rel_pos rel_pos_type: latest cgmlp_linear_units: 1024 cgmlp_conv_kernel: 31 use_linear_after_conv: false gate_activation: identity num_blocks: 12 dropout_rate: 0.1 positional_dropout_rate: 0.1 attention_dropout_rate: 0.1 input_layer: conv2d layer_drop_rate: 0.0 linear_units: 1024 positionwise_layer_type: linear use_ffn: true macaron_ffn: true merge_conv_kernel: 31E-Branchformer 是 Branchformer 的增强版参考论文Kwangyoun Kim et al.,E-Branchformer: Branchformer with Enhanced merging for speech recognition, SLT 2022其核心思想是双分支并行一个分支使用自注意力捕捉全局依赖另一个分支使用**卷积门控 MLPConvolutionalGatingMLPCGMLP**捕捉局部依赖最后通过一个带深度可分离卷积的merge 模块将两个分支的输出增强式融合。在 ESPnet 中的实现位于 espnet2/asr/encoder/e_branchformer_encoder.pyEBranchformerEncoderLayer同时持有attn注意力分支、cgmlp卷积门控分支与可选的feed_forward/feed_forward_macaronFFN 与 Macaron-FFN 分支并通过merge_conv_kernel控制融合卷积核大小见__init__参数merge_conv_kernel: int 3。该文件还提供了面向 CTC 的 e_branchformer_ctc_encoder.py 变体。本配方对 E-Branchformer 的关键设定output_size: 256模型维度hidden size配合attention_heads: 4每头 64 维attention_layer_type: rel_selfattnpos_enc_layer_type: rel_posrel_pos_type: latest使用相对位置自注意力RelPositionMultiHeadedAttention对长序列与噪声场景更友好cgmlp_linear_units: 1024cgmlp_conv_kernel: 31CGMLP 分支的线性单元数与卷积核大小大卷积核31提供更宽的局部感受野use_ffn: truemacaron_ffn: true同时启用 FFN 与 Macaron-FFN 分支属于 Branchformer 家族的三/四分支增强配置num_blocks: 1212 个编码器层input_layer: conv2dConv2d 子采样将 80 维 Fbank 输入降采样 4 倍缩短序列长度各类 dropout 统一为0.1layer_drop_rate: 0.0不使用随机层丢弃。Transformer 解码器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.1 src_attention_dropout_rate: 0.1 layer_drop_rate: 0.06 层 Transformer 解码器linear_units: 2048的 FFN 隐藏层4 头注意力dropout 均为 0.1。模型级损失与特征前端model_conf: ctc_weight: 0.3 lsm_weight: 0.1 length_normalized_loss: false frontend_conf: n_fft: 512 win_length: 400 hop_length: 160ctc_weight: 0.3训练时 CTC 与注意力损失的混合权重与解码端ctc_weight: 0.3一致lsm_weight: 0.1标签平滑label smoothing强度前端为短时傅里叶变换n_fft: 512、win_length: 40025ms 窗、hop_length: 16010ms 帧移对应 16kHz 采样率。训练策略seed: 2022 num_workers: 4 batch_type: numel batch_bins: 10000000 accum_grad: 4 max_epoch: 70 patience: none init: none best_model_criterion: - - valid - acc - max keep_nbest_models: 10 use_amp: true optim: adam optim_conf: lr: 0.002 weight_decay: 0.000001 scheduler: warmuplr scheduler_conf: warmup_steps: 15000 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 - 27 num_freq_mask: 2 apply_time_mask: true time_mask_width_ratio_range: - 0. - 0.05 num_time_mask: 5训练侧要点动态批大小batch_type: numel按元素数量token 总数动态组 batchbatch_bins: 10000000为上限配合accum_grad: 4梯度累积训练轮数与选优max_epoch: 70best_model_criterion以验证集准确率acc最大化为标准keep_nbest_models: 10保留 10 个最优检查点优化器与调度Adamlr0.002weight_decay1e-6 warmuplr 预热调度15000 步预热SpecAugment 数据增强启用时间弯曲窗口 5、bicubic 插值、频率掩蔽每次最多 2 个宽度 0–27与时间掩蔽每次最多 5 个宽度为序列长度的 0–5%对噪声鲁棒性贡献明显混合精度use_amp: true开启自动混合精度训练这也是单卡 3090 上数小时即可收敛的原因之一。实验结果12 种语言的 WER 与 CER以下是 README 记录的基线结果评测集含干净/噪声 × known/unknown 组合WER如下langexptesttest_knowntest_known_noisytest_noisyurduasr_train_asr_raw_urdu_bpe50014.813.115.821.1teluguasr_train_asr_raw_telugu_bpe50025.121.223.928.4kannadaasr_train_asr_raw_kannada_bpe50019.217.918.727.4malayalamasr_train_asr_raw_malayalam_bpe50039.230.031.343.1bengaliasr_train_asr_raw_bengali_char17.213.216.221.8odiaasr_train_asr_raw_odia_bpe50023.616.719.927.5gujaratiasr_train_asr_raw_gujarati_char19.315.118.427.2hindiasr_train_asr_raw_hindi_bpe50012.510.112.614.3tamilasr_train_asr_raw_tamil_bpe50023.320.124.324.2punjabiasr_train_asr_raw_punjabi_bpe50015.914.314.224.9sanskritasr_train_asr_raw_sanskrit_bpe20040.327.739.349.8marathiasr_train_asr_raw_marathi_bpe50016.615.116.719.7CER如下langexptesttest_knowntest_known_noisytest_noisyurduasr_train_asr_raw_urdu_bpe5004.83.74.77.7teluguasr_train_asr_raw_telugu_bpe5005.03.74.67.3kannadaasr_train_asr_raw_kannada_bpe5004.03.33.97.1malayalamasr_train_asr_raw_malayalam_bpe5007.85.46.29.4bengaliasr_train_asr_raw_bengali_char3.92.63.75.6odiaasr_train_asr_raw_odia_bpe5006.03.34.48.1gujaratiasr_train_asr_raw_gujarati_char5.23.54.99.1hindiasr_train_asr_raw_hindi_bpe5004.23.14.35.4tamilasr_train_asr_raw_tamil_bpe5004.33.34.94.7punjabiasr_train_asr_raw_punjabi_bpe5005.23.84.59.4sanskritasr_train_asr_raw_sanskrit_bpe20010.15.69.814.6marathiasr_train_asr_raw_marathi_bpe5004.13.84.35.2对结果的两点观察基于上表可确认的事实语言间难度差异显著印地语hindi表现最好test WER 12.5 / CER 4.2而马拉雅拉姆语malayalam与梵语sanskrit难度最高test WER 接近 40%与数据量与书写系统复杂度相关噪声是主要挑战几乎所有语言的test_noisy都是最差划分如 urdu 从 14.8 升至 21.1sanskrit 从 40.3 升至 49.8说明在未见噪声场景下仍存在明显性能回落而test_known已知说话人普遍优于test反映出说话人泛化同样影响指标。另外注意实验命名细节绝大多数语言使用bpe500BPE 词表 500孟加拉语与古吉拉特语使用char字符级分词梵语在 WER/CER 表中记为bpe200。分词方式与语言文字特性直接相关。预训练模型README 同时提供了每种语言对应的预训练模型发布记录作者账号viks66发布在 Hugging Face Hub模型名与 WER/CER 表中的实验名一一对应可直接检索例如lang预训练模型标识urduasr_train_asr_raw_urdu_bpe500teluguasr_train_asr_raw_telugu_bpe500kannadaasr_train_asr_raw_kannada_bpe500malayalamasr_train_asr_raw_malayalam_bpe500bengaliasr_train_asr_raw_bengali_charodiaasr_train_asr_raw_odia_bpe500gujaratiasr_train_asr_raw_gujarati_charhindiasr_train_asr_raw_hindi_bpe500tamilasr_train_asr_raw_tamil_bpe500punjabiasr_train_asr_raw_punjabi_bpe500sanskritasr_train_asr_raw_sanskrit_bpe500WER/CER 表为 bpe200请以 Hub 实际为准marathiasr_train_asr_raw_marathi_bpe500获取预训练模型后可通过 ESPnet2 的标准推理流程espnet2.bin.asr_inference加载model.pth与配套config.yaml完成单句解码无需重新训练。若需自行复现直接按上文步骤在对应语言上运行./run.sh --lang 语言即可单卡 3090 数小时内可完成全部训练与评估。复现与调参建议数据与磁盘Kathbath 含干净/噪声两版完整音频下载量较大请确保KATHBATH目录所在磁盘空间充足local/data.sh中的download_done与dataprep_done标记可保证断点续跑不重复处理。并行度--nj 32适合多核机器资源紧张时可降低nj/inference_nj仅影响预处理与解码速度。分词选择对孟加拉语、古吉拉特语等原配方选择字符级--token_type char如需 BPE 可参照其他语言的bpe500配置自行切换。训练成本README 记录的 16349~34072 秒训练时长是在开启use_amp与accum_grad: 4前提下的实测值若显存更大如 A40 48GB见配置注释可增大batch_bins或减少梯度累积步数来缩短墙钟时间。噪声鲁棒性若目标场景噪声严重可考虑引入更多 SpecAugment 掩蔽强度如增大num_time_mask或参考 egs2/kathbath/asr1 中噪声数据增强相关脚本进一步扩展训练集。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐快速上手postcss-scss5分钟实现SCSS代码的PostCSS转换快速上手postcss scss5分钟实现SCSS代码的PostCSS转换 postcss scss是一个强大的SCSS解析器专为PostCSS打造它能让人工智能语音音频深度学习NLPESPnet Fisher CallHome Spanish 语音识别实战E-Branchformer 与 Conformer 配置、训练与评测全解ESPnet Fisher CallHome Spanish 语音识别实战E Branchformer 与 Conformer 配置、训练与评测全解 本篇技术人工智能语音音频深度学习NLPAphasiaBank 英语失语症语音识别与失语检测ESPnet E-Branchformer/WavLM 配方全解AphasiaBank 英语失语症语音识别与失语检测ESPnet E Branchformer/WavLM 配方全解 AphasiaBank 是一个面向失语症人工智能语音音频深度学习NLP上一篇5分钟实现Compose图片缩放Zoomable基础示例教程下一篇告别模糊SeedVR2助力Sora2视频高清化免费云服务器实操指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/25 5:57:48

STM32+W5500硬件协议栈UDP通讯实战:驱动移植与避坑指南

简介:基于STM32F103与W5500以太网模块的UDP通信完整工程,面向物联网嵌入式开发者,解决MCU通过SPI接口接入以太网并实现UDP收发的问题。例程涵盖DHCP动态获取IP、创建UDP、等待客户端连接、关闭连接等关键流程,可直接在Keil中打开&…

2026/9/25 7:57:52

OptiScaler实战教程:免费切换游戏超采样与帧生成

OptiScaler实战教程:免费切换游戏超采样与帧生成 【免费下载链接】OptiScaler OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2/XeSS/FSR2 inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nukem mod for…

2026/9/25 7:57:52

Atlas 300V 24G部署YOLOv5实战:从环境配置到推理调优全流程

1. 先搞清楚:Atlas 300V 24G到底是一张什么卡我在过去半年里陆续接手过几个CV项目,从最开始在GPU服务器上跑YOLO,到后来被客户要求落地到国产加速卡上,可以说踩了不少坑。Atlas这个名字,很多人第一次听说时都会有个困惑…

2026/9/25 7:57:52

基于VUE的食堂管理系统毕业设计

摘 要 针对传统厨房管理效率低、信息协同滞后、资源浪费严重等问题,本文设计并实现了一套基于Vue.js框架的智能厨房管理系统。系统采用前后端分离架构,前端以Vue 3组合式API为核心,结合Element Plus组件库构建响应式用户界面,通过…

2026/9/25 7:52:52

豆瓣图书知识图谱实战:Neo4j图数据库推荐系统搭建

简介:本资源是一套面向高校计算机及相关专业(人工智能、自动化、物联网等)学生的毕业设计级实践项目,聚焦豆瓣图书推荐系统与知识图谱构建,深度融合Neo4j图数据库应用开发。项目完整覆盖数据采集、清洗、图模型设计、实…

2026/9/24 20:24:47

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/25 0:02:35

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:02:35

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:02:35

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑