ARTICLE DETAIL

资讯详情

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

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

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),仅供参考
返回列表