ARTICLE DETAIL

资讯详情

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

ESPnet 卡纳达语 Kannada ASR:E-Branchformer + Transformer 联合 CTC/注意力 全流程实战指南(kn_openslr126 配方)

ESPnet 卡纳达语 Kannada ASR:E-Branchformer + Transformer 联合 CTC/注意力 全流程实战指南(kn_openslr126 配方) 人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载导读本文基于 ESPnet 开源仓库中的 egs2/kn_openslr126/asr1 配方完整讲解如何利用 IISc-MILE Kannada ASR CorpusOpenSLR SLR126训练一个端到端卡纳达语语音识别系统。该配方采用E-Branchformer 编码器 Transformer 解码器的联合 CTC/注意力架构配合bpe1000 子词模型与 2 层 650 单元 RNN 语言模型进行解码是 ESPnet2 中低资源南亚语言 ASR 的可直接复现基线。读完本文你将掌握该数据集的下载与切分流程、各配置文件的完整参数语义、训练/解码命令的调用方式以及基于源码的模型原理与评测指标解读方法。一、配方概览模型结构与环境1.1 模型架构一览本配方采用的模型架构可概括为E-Branchformer 编码器12 层输出维度 256 │ ├── CTC 分支ctc_weight 0.3 │ └── Transformer 解码器6 层linear_units 2048 │ └── 联合注意力解码Joint CTC/Attentionlsm_weight 0.1编码器E-Branchformerencoder: e_branchformer是 Branchformer 的增强版本在传统注意力与卷积门控 MLPcgMLP两个并行分支的基础上引入 E-Branchformer 特有的改进兼顾全局依赖建模与局部模式捕捉能力。源码实现位于 espnet2/asr/encoder/e_branchformer_encoder.py另有带 CTC 分支的变体 espnet2/asr/encoder/e_branchformer_ctc_encoder.py。解码器标准 Transformer 解码器decoder: transformer配合编码器特征做注意力解码。语言模型lm: seq_rnn即顺序 RNN 语言模型实现见 espnet2/lm/seq_rnn_lm.pySequentialRNNLM默认nlayers2。1.2 训练环境原文档记录原 README 记录了本次实验的复现环境仅供参考date:Thu Jun 18 05:59:41 EDT 2026python version:3.10.20espnet2 version:espnet2 202604pytorch version:pytorch 2.9.1cu126Git hash:295ef69aed650d97ce44088ce2ee1675a6b287db注意训练环境记录用于追踪复现版本并非硬性要求。实际运行请以当前仓库的 README.md 与 tools/README.md 中的安装步骤为准。二、数据准备IISc-MILE Kannada 语料与数据划分2.1 数据集来源与下载本配方使用IISc-MILE Kannada ASR CorpusOpenSLR SLR126卡纳达语下载与解压逻辑实现在 egs2/kn_openslr126/asr1/local/data.sh语料根目录由db.sh中的KANNADA变量指定脚本从https://www.openslr.org/resources/126下载mile_kannada_train.tar.gz与mile_kannada_test.tar.gz两个压缩包分别解压到${corpus}/train/与${corpus}/test/每个 split 下应包含audio_files/wav 音频与trans_files/每句一条 UTF-8 文本转写脚本还会自动“拍平”归档文件中可能存在的多余顶层目录并校验audio_files与trans_files是否完整。2.2 数据划分说话人无关 dev 集数据整理逻辑在 egs2/kn_openslr126/asr1/local/data_prep.py 中实现关键设计点test 集直接采用语料官方提供的 test 划分原样写入data/testdev 集从 train 部分按说话人级别切分。脚本从训练音频的 utt-id形如MILE_03_SP_2496_UTT_0116中解析出说话人MILE_03_SP_2496按说话人去重后随机打乱--seed 0可复现取约--dev-spk-percent 4默认 4%的说话人作为 dev 集其余作为 train 集保证 dev 与 train无说话人重叠最终在data/{train,dev,test}目录下生成 Kaldi 风格文件wav.scp、text、utt2spk、spk2utt脚本末尾还打印各集合的句数与说话人数统计。数据准备完成后还需要对每个数据目录运行utils/fix_data_dir.sh与utils/validate_data_dir.sh --no-feats校验数据目录的完整性见 data.sh 第 66-68 行。三、训练配置深度解析3.1 主 ASR 配置主配置为 conf/train_asr.yaml调优配置为 conf/tuning/train_asr_e_branchformer_size256_mlp1024_linear1024_e12_mactrue_edrop0.0_ddrop0.0.yamlREADME 引用版本二者内容一致。文件名即参数摘要size256encoder output_size、mlp1024cgmlp_linear_units、linear1024linear_units、e1212 层、mactruemacaron_ffn、edrop0.0/ddrop0.0layer_drop_rate。3.1.1 E-Branchformer 编码器参数参数值含义encodere_branchformer编码器类型output_size256编码器输出维度attention_heads4自注意力头数attention_layer_typerel_selfattn相对位置自注意力pos_enc_layer_typerel_pos相对位置编码rel_pos_typelatest相对位置编码实现版本cgmlp_linear_units1024卷积门控 MLP 分支的中间维度cgmlp_conv_kernel31cgMLP 深度卷积核大小use_linear_after_convfalse卷积后是否接线性层gate_activationidentity门控激活函数恒等映射num_blocks12E-Branchformer 块数dropout_rate0.1编码器整体 dropoutpositional_dropout_rate0.1位置编码 dropoutattention_dropout_rate0.1注意力 dropoutinput_layerconv2d输入卷积下采样层layer_drop_rate0.0层丢弃率训练稳定性linear_units1024FFN 中间维度positionwise_layer_typelinear逐位置前馈类型use_ffntrue是否启用 FFN 分支macaron_ffntrue是否启用 Macaron 风格 FFN双 FFN 夹卷积merge_conv_kernel31双分支融合卷积核大小E-Branchformer 的核心是每个块内并行运行两个分支自注意力分支建模全局依赖与cgMLP 分支局部卷积建模cgmlp_conv_kernel31控制感受野两条分支在块末尾通过可学习的门控权重融合merge_conv_kernel31的深度卷积负责融合前的信息交互。macaron_ffn: true表示采用 Macaron 结构即在注意力两侧各放置一个 FFN。3.1.2 Transformer 解码器参数参数值含义decodertransformer解码器类型attention_heads4解码器注意力头数linear_units2048FFN 中间维度num_blocks6解码器层数dropout_rate0.1解码器 dropoutpositional_dropout_rate0.1位置编码 dropoutself_attention_dropout_rate0.1自注意力 dropoutsrc_attention_dropout_rate0.1编码器-解码器交叉注意力 dropoutlayer_drop_rate0.0层丢弃率3.1.3 模型级与前端参数model_confctc_weight: 0.3CTC 损失权重注意力损失的权重相应为1 - ctc_weight 0.7构成联合 CTC/注意力训练lsm_weight: 0.1标签平滑权重length_normalized_loss: false损失不做长度归一化。frontend_conf音频前端适配 16 kHz 采样率n_fft: 512win_length: 40025 ms 窗长hop_length: 16010 ms 帧移3.1.4 训练调度与数据增强batch_type: numelbatch_bins: 5000000按总元素数token 数动态组批accum_grad: 12梯度累积 12 步等效扩大批大小max_epoch: 70、patience: none最多训练 70 epoch不提前停止best_model_criterion以valid集acctoken 准确率取max为选优标准keep_nbest_models: 10保留最优 10 个模型optim: adamlr0.002weight_decay1e-6scheduler: warmuplrwarmup_steps15000use_amp: true启用混合精度训练specaug: specaugSpecAugment 频谱增强开启时域弯曲window5bicubic 模式、频域掩码宽度 0–272 个掩码与时域掩码比例 0–0.055 个掩码seed: 2022固定随机种子。3.2 RNN 语言模型配置LM 配置见 conf/train_lm.yaml参数值含义lmseq_rnn顺序 RNN LMnlayers2RNN 层数unit650隐藏单元数optimsgd优化器batch_typefolded折叠批处理batch_size64批大小max_epoch20最多 20 epochpatience3连续 3 个 epoch 无改善则早停best_model_criterionvalid loss min以验证集 loss 最小化选优keep_nbest_models1只保留最优模型SequentialRNNLM的源码实现espnet2/lm/seq_rnn_lm.py显示其使用nn.RNN/nn.LSTM堆叠nlayers2, unit650即两层 650 维 RNN输出层接词表映射后计算交叉熵。3.3 解码配置解码配置见 conf/decode_asr.yaml参数值含义beam_size20束搜索宽度ctc_weight0.3解码时 CTC 得分权重与训练一致lm_weight0.3语言模型得分权重maxlenratio0.0最大输出长度比例0 表示不限制minlenratio0.0最小输出长度比例penalty0.0长度惩罚解码采用束搜索 CTC 得分 LM 得分联合打分score attention_score ctc_weight * ctc_score lm_weight * lm_score其中 LM 使用训练好的train_lm_kn_bpe1000_valid.loss.ave模型。四、训练与解码执行流程4.1 一键入口 run.shegs2/kn_openslr126/asr1/run.sh 是本配方的推荐执行入口核心参数数据划分train_settrain、valid_setdev、test_setstest配置文件asr_configconf/train_asr.yaml、inference_configconf/decode_asr.yaml、lm_configconf/train_lm.yaml子词token_typebpe、nbpe1000BPE 词表 1000特征feats_type raw直接用原始波形不预提取 fbank 归档、audio_format flac.ark音频以 flac 格式 ark 存储、max_wav_duration 30资源--ngpu 1单 GPU、--nj 16并行数据/特征作业数、--gpu_inference true --inference_nj 2GPU 解码2 个并行解码作业LM--use_lm trueLM 训练文本与 BPE 训练文本均取data/${train_set}/text。实际命令./run.sh或按阶段精细控制在egs2/kn_openslr126/asr1目录下# 先做数据准备下载语料并生成 data/{train,dev,test} ./asr.sh --stage 1 --stop_stage 2 # 训练 LM 与 ASR ./asr.sh --stage 3 --stop_stage 6 # 解码与评测 ./asr.sh --stage 7 --stop_stage 10说明asr.sh是 ESPnet2 配方的统一流水线脚本共 1842 行定义了大量可覆盖参数其stage划分覆盖数据准备、特征提取、token 化BPE、LM 训练、ASR 训练、打包与解码评测各阶段。更细的 stage 编号请以当前仓库 asr.sh 为准建议先执行./asr.sh --help查看本配方支持的 stage 范围与默认值。4.2 BPE 子词模型token_typebpe、nbpe1000从训练文本学习 1000 词元的 unigram BPE 模型bpemodeunigram为 ESPnet 默认见 asr.sh 第 66 行词表大小 1000 对卡纳达语这种形态丰富的语言是相对紧凑的选择配合 RNN LM 可显著提升 OOV 覆盖与解码流畅度相关脚本为 egs2/kn_openslr126/asr1/scripts/text/run_spm.sh。4.3 模型链接与打包原 README 提供了训练好的模型仓库链接Hugging Facesankarabharadwaj/kn_openslr126_e_branchformer可直接用于推理或微调。模型打包/上传由 asr.sh 的 pack/upload 阶段负责默认skip_packingtrue、skip_upload_hftrue如需开启可显式覆盖。五、评测结果解读原 README 记录了解码测试集上的官方结果。以下表格按 WER / CER / TER 分别整理Snt句数Wrd词/字/形态单位数S.Err句错误率WER词错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_kn_bpe1000_valid.loss.ave_asr_model_valid.acc.ave/test2189131911880.418.21.44.824.483.7CER字错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_kn_bpe1000_valid.loss.ave_asr_model_valid.acc.ave/test21891263420796.81.21.90.73.883.7TER词素/形态错误率datasetSntWrdCorrSubDelInsErrS.Errdecode_asr_lm_lm_train_lm_kn_bpe1000_valid.loss.ave_asr_model_valid.acc.ave/test2189192734691.54.93.61.39.870.7解读要点评测数据为21891 句测试音频与数据准备阶段data/test的划分一致CER 3.8%字级错误率最低说明模型在音素/字符层面的声学建模已相当准确WER 24.4%明显高于 CER符合卡纳达语等黏着语/形态丰富语言的特征——一个词由多个字符组成字正确但整词切分错误即产生词级替换句子级错误率S.Err 83.7%也体现了长句整句识别的难度解码结果目录名decode_asr_lm_lm_train_lm_kn_bpe1000_valid.loss.ave_asr_model_valid.acc.ave表明ASR 模型选择标准为valid.acc平均best 模型平均LM 选择标准为valid.loss平均与配置中best_model_criterion的设置一一对应。六、从源码理解关键机制6.1 E-Branchformer 编码器源码定位E-Branchformer 编码器的实现位于 espnet2/asr/encoder/e_branchformer_encoder.py其类名如E_BranchformerEncoder与配置项encoder: e_branchformer直接对应。ESPnet 的 Encoder 注册机制encoder_registry.register(...)会自动将 YAML 中的字符串映射到该实现类。6.2 联合 CTC/注意力训练model_conf.ctc_weight: 0.3对应 ESPnet2 ASR 任务的联合解码目标L (1 - ctc_weight) * L_att ctc_weight * L_ctc配合lsm_weight: 0.1的标签平滑与length_normalized_loss: false形成完整的多任务训练目标。解码时ctc_weight同样为 0.3实现训练-推理一致性。6.3 RNN LM 的作用seq_rnn语言模型espnet2/lm/seq_rnn_lm.py在解码阶段以lm_weight: 0.3参与束搜索打分对形态丰富的卡纳达语提供词汇先验缓解纯声学模型的 OOV 与长句问题——这正是 README 中 WER 相对 CER 差距较大的场景下 LM 价值所在。七、复现清单与扩展建议复现步骤摘要配置 egs2/kn_openslr126/asr1/db.sh 中的KANNADA变量指向语料存储目录运行数据准备./local/data.sh --stage 0 --stop_stage 1或直接./run.sh一键执行检查生成的数据目录data/train、data/dev、data/test训练./asr.sh内部会依次完成特征、BPE、LM、ASR 训练解码评测./asr.sh --stage 7 --stop_stage 10或查看exp/下的 decode 目录复现基准CER ≈ 3.8%WER ≈ 24.4%TER ≈ 9.8%。扩展方向基于现有配置调优配置 conf/tuning/train_asr_e_branchformer_size256_mlp1024_linear1024_e12_mactrue_edrop0.0_ddrop0.0.yaml 与主配置内容一致可作为超参实验的起点如调整num_blocks、cgmlp_conv_kernel、ctc_weight增大 BPE 词表nbpe或改用char级 token 对比效果调整lm_weight、beam_size观察解码 trade-off参考同仓库其他 ASR 配方的数据增强speed perturbation、音量扰动等进一步提升鲁棒性。八、相关文件索引配方 READMEegs2/kn_openslr126/asr1/README.md一键脚本egs2/kn_openslr126/asr1/run.sh流水线脚本egs2/kn_openslr126/asr1/asr.sh数据下载脚本egs2/kn_openslr126/asr1/local/data.sh数据切分脚本egs2/kn_openslr126/asr1/local/data_prep.py训练配置egs2/kn_openslr126/asr1/conf/train_asr.yaml、egs2/kn_openslr126/asr1/conf/tuning/train_asr_e_branchformer_size256_mlp1024_linear1024_e12_mactrue_edrop0.0_ddrop0.0.yamlLM 配置egs2/kn_openslr126/asr1/conf/train_lm.yaml解码配置egs2/kn_openslr126/asr1/conf/decode_asr.yaml前端配置egs2/kn_openslr126/asr1/conf/fbank.conf核心源码espnet2/asr/encoder/e_branchformer_encoder.py、espnet2/asr/encoder/e_branchformer_ctc_encoder.py、espnet2/lm/seq_rnn_lm.py赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet JSUT 日语语音识别实战指南E-Branchformer、Conformer 与 Transformer 全对比ESPnet JSUT 日语语音识别实战指南E Branchformer、Conformer 与 Transformer 全对比 本指南以 ESPnet 仓库人工智能语音音频深度学习NLPESPnet OGI Kids Speech ASR 实战Branchformer-Transformer 儿童语音识别 Recipe 全解析ESPnet OGI Kids Speech ASR 实战Branchformer Transformer 儿童语音识别 Recipe 全解析 本文基于 ES人工智能语音音频深度学习NLPPaddleSpeech 解码器深度解析CTC 前缀束搜索、CTC/注意力联合解码与流式解码PaddleSpeech 解码器深度解析CTC 前缀束搜索、CTC/注意力联合解码与流式解码 导读 解码器Decoder是端到端语音识别E2E ASR人工智能语音音频NLP媒体生成上一篇Quantum Katas深度剖析Microsoft Quantum Development Kit中的交互式学习体验下一篇5分钟上手twenty容器化部署从Docker Compose到生产环境的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表