ARTICLE DETAIL

资讯详情

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

ESPnet2 ru_open_stt 配方实战:俄语开放式语音识别数据的 Conformer 训练与评测结果解析

ESPnet2 ru_open_stt 配方实战:俄语开放式语音识别数据的 Conformer 训练与评测结果解析 人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本技术指南以 ESPnet2 中egs2/ru_open_stt/asr1配方目录的 README 结果报告为核心完整梳理 ru_open_sttRussian Open Speech To Text语料库的数据来源、下载与清洗流程、Conformer Transformer 声学模型与 Transformer 语言模型的配置细节、端到端训练管线asr.sh 各 stage并逐表解读 README 中首个 Conformer 结果的 WER / CER / TER 评测数据最后给出复现该实验所需的完整环境前提与命令。读完本文你将掌握在 ESPnet2 框架下复现一个多来源俄语 ASR 配方、解读其结果报告并据此调参的完整方法。一、配方与数据背景ru_open_stt 是什么egs2/ru_open_stt/asr1是 ESPnet2 中面向俄语--lang ru开放式语音识别数据的 ASR 配方。其语料来源于开源社区项目 open_stt 收集整理的俄语语音资源包含电话通话、有声书朗读、讲座、YouTube 视频等多样来源数据总量较大且同时覆盖了真实电话语音与高质量朗读语音适合验证 Conformer 类模型在多领域混合数据上的泛化能力。从 run.sh 可以清楚看到本配方的数据切分方式train_settrain valid_setdev test_setsasr_calls_2_val buriy_audiobooks_2_val public_youtube700_val三个测试集分别对应三种差异明显的语音领域asr_calls_2_val真实电话通话语音噪声与口语化程度高识别难度最大buriy_audiobooks_2_val有声书朗读语音发音清晰、文本规范识别难度最低public_youtube700_valYouTube 公开视频语音属于两者之间的一般性口语场景。README 的结果表格正是针对这三个验证集分别打分因此可以直观观察模型在不同语音条件上的表现落差这也是本配方实验设计上的亮点。数据下载与清洗流程数据下载由 local/ru_open_stt_download_data.sh 完成其要点包括从 open_stt 仓库抓取md5sum.lst与download.sh并按清单下载、解压各*.tar.gz数据包排除radio_v4、public_speech、radio_v4_add等 manifest额外下载两个排除名单exclusion listpublic_exclude_file_v5.csv与exclude_df_youtube_1120.csv分别用于剔除公开数据与 YouTube 数据中的脏样本数据下载目录由 db.sh 中的RU_OPEN_STT变量指定默认downloads未设置时 local/data.sh 会直接报错退出。数据整理逻辑集中在 local/ru_open_stt_prepare_data.py其处理流程值得细读读取两个排除名单 CSV通过get_uttid()构建坏样本集合bad_utts凡是命中的 utterance 一律丢弃依次遍历 16 个数据子集3 个验证集 13 个训练集将每个样本的文本统一转为小写words text_file.read().strip().lower()防数据泄漏设计验证集*_val中的转写文本会被收集进val_words集合训练阶段凡是文本出现在验证集里的样本都会被跳过elif words in val_words: continue从根源上避免训练集与测试集文本重叠造成的评估虚高从训练集中切出约 10% 作为开发集dev_size min(int(len(...) * 0.1), len(test.all))以固定随机种子random.seed(1)打乱最终在data/train、data/dev下生成text、wav.scp、utt2spk三个 Kaldi 风格数据文件其中wav.scp通过sox --norm-1 ... -r 16k -t wav -c 1 -b 16 -e signed -管道将音频统一重采样为 16 kHz、单声道、16-bit PCM最后调用utils/fix_data_dir.sh校验数据目录。配方前置操作在运行主流程之前需要先在 db.sh 中确认RU_OPEN_STTdownloads或改为本地语料路径随后执行数据准备# 在 egs2/ru_open_stt/asr1 目录下 ./local/data.sh该脚本内部包含两个阶段stage 1 下载原始数据stage 2 调用ru_open_stt_prepare_data.py生成data/{train,dev}目录。数据准备完成后即可进入主训练流程。二、配方核心运行脚本 run.sh 参数详解run.sh 是配方的总入口它以 6 个关键参数调用 ESPnet2 通用 ASR 流水线 asr.sh./asr.sh \ --lang ru \ --ngpu 4 \ --nbpe 100 \ --max_wav_duration 30 \ --audio_format flac.ark \ --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 $各参数作用如下参数取值作用--lang ruru指定语言为俄语影响 BPE 与文本处理--ngpu 44训练使用 4 块 GPU32GB 显存与train_asr_conformer.yaml头部注释的要求一致--nbpe 100100BPE 词表大小模型名为bpe100即由此而来--max_wav_duration 3030秒过滤时长超过 30 秒的音频过长样本在 stage 4 被剔除--audio_format flac.arkflac.ark音频以 flac 格式的 ark 归档存放兼顾压缩率与随机读取--lm_train_textdata/train/text以训练集文本作为语言模型训练语料尾部$—透传用户追加的参数如--stage、--stop_stage便于断点续跑值得说明的是--nbpe 100仅 100 个 BPE 子词单元属于偏小的词表适合俄语这类词形变化丰富、字符级信息密度高的语言——小词表配合字符级建模往往比大词表更稳。三、模型配置Conformer 编码器 Transformer 解码器本配方首个实验结果使用的声学模型配置为 conf/train_asr_conformer.yaml其头部注释明确写着This configuration requires 4 GPUs with 32GB memory是典型的大规模 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 normalize_before: true 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 层 Conformer 编码器每层同时包含自注意力与卷积模块cnn_module_kernel: 31的深卷积核input_layer: conv2d6表示用 6 层 2D 卷积对原始特征进行下采样rel_pos/rel_selfattn采用相对位置编码与相对自注意力swish激活解码器为6 层 Transformerlinear_units: 2048各 dropout 均为 0.1训练目标为CTC 注意力机制的混合ctc_weight: 0.3联合lsm_weight: 0.1标签平滑与length_normalized_loss: false优化采用adamlr0.001warmuplr25000 步预热accum_grad: 2配合batch_type: numel按元素数量 27000000 动态组批训练 30 个 epochpatience: none以验证集 acc 最大为标准保留keep_nbest_models: 10个最佳模型数据增强采用SpecAugment时域 warpbicubic、2 次频率掩码宽度 0–30、2 次时间掩码宽度 0–40。配套特征与语言模型特征提取由 conf/fbank.conf 定义--sample-frequency16000 --num-mel-bins80即 16 kHz 采样率下的 80 维 Fbank可选叠加 pitch.conf 的音高特征。语言模型配置为 conf/train_lm_transformer.yaml16 层 Transformer LMembed 128 / att 512 / 8 头 / ffn 2048训练 10 个 epoch、patience: 3以验证集 loss 最小为准则选择模型lm: transformer lm_conf: pos_enc: null embed_unit: 128 att_unit: 512 head: 8 unit: 2048 layer: 16 dropout_rate: 0.1解码阶段参数位于 conf/decode_asr.yamllm_weight: 0.1 ctc_weight: 0.2 beam_size: 5即在解码时对 Transformer LM 施加 0.1 的插值权重、CTC 施加 0.2 权重配合 beam size 5 的束搜索——这也是 README 中decode_asr_lm_lm_train_lm_transformer_ru_bpe100_valid.loss.ave_asr_model_valid.acc.ave/...这一长目录名的来源它表示使用 LM 验证 loss 平均模型 ASR 验证 acc 平均模型进行联合解码。四、端到端训练管线asr.sh 的 15 个阶段asr.sh 是 ESPnet2 通用的 ASR 流水线脚本本配方复现时依次经过以下阶段可在run.sh后追加--stage N断点续跑Stage说明1数据准备调用local/data.sh生成data/{train,dev}本配方中已在主流程前完成2速度扰动speed perturbation默认跳过3格式化wav.scp并提取特征make_fbank.sh输出 80 维 Fbank生成dump/目录4剔除过长/过短样本对应--max_wav_duration 305用run_spm.sh基于训练文本训练 SentencePiece BPE词表 100生成data/token_list/bpe_unigram1006LM 统计collect stats7LM 训练espnet2/lm的 Transformer LM8计算 LM 困惑度9N-gram 训练可选10ASR 统计collect stats11ASR 训练Conformer encoder Transformer decoderespnet2训练入口12解码对 3 个测试集分别执行espnet2/bin/asr_inference.py使用decode_asr.yaml参数13评分show_asr_result.sh生成 WER/CER/TER 结果表也就是本 README 的生成方式14打包模型pack_model.sh15上传模型到 HuggingFace可选需要特别指出本 README 正是 stage 13 评分产物的自动落盘。文件首行!-- Generated by scripts/utils/show_asr_result.sh --明确表明它由 show_asr_result.sh 自动生成表格中的解码目录名也完整对应 stage 12 的输出路径。这也解释了 README 为何只包含环境信息与结果表格——它是实验记录的标准化产物而非手写文档。五、结果解读首个 Conformer 模型的 WER / CER / TERREADME 报告了使用asr_model_valid.acc.ave验证集 acc 平均模型lm_train_lm_transformer_ru_bpe100_valid.loss.aveLM 验证 loss 平均模型在 3 个验证集上的评测结果。表格中的指标定义如下Snt句子数Wrd词/字符/音素单元数CorrCorrect正确率SubSubstitution、DelDeletion、InsInsertion替换、删除、插入错误占比Err Sub Del Ins总错误率S.Err句子级错误率。WER词错误率datasetSntWrdCorrSubDelInsErrS.Errasr_calls_2_val129507919070.216.113.71.531.373.6buriy_audiobooks_2_val78503972185.511.72.85.019.463.7public_youtube700_val73114231782.610.66.81.518.956.9电话语音31.3%与朗读语音19.4%之间约 12 个点的 WER 差距直观体现了真实电话信道噪声、口语省略对识别带来的挑战asr_calls_2_val高达 13.7% 的删除率也说明电话语音中大量音素被吞掉。CER字符错误率datasetSntWrdCorrSubDelInsErrS.Errasr_calls_2_val1295043965785.33.611.21.516.273.6buriy_audiobooks_2_val785024558396.31.02.82.36.063.7public_youtube700_val731125412493.51.65.01.17.756.9俄语是形态丰富的语言词形变化多、拼写与发音高度对应因此字符级错误率远低于词级朗读语音的 CER 低至 6.0%。电话语音 CER 16.2% 中删除错误占 11.2%与 WER 的删除率特征一致表明电话语音的主要损失来自音节缺失而非音节混淆。TER音素错误率datasetSntWrdCorrSubDelInsErrS.Errasr_calls_2_val1295030558082.15.911.91.219.173.6buriy_audiobooks_2_val785016966294.92.22.92.07.163.7public_youtube700_val731117426592.02.85.20.98.956.9结果小结三张表格呈现高度一致的规律模型在朗读类数据audiobooks上表现最好CER 仅 6.0%说明 Conformer 对清晰语音的建模非常到位电话类数据calls难度最大WER 31.3% 且删除错误占比突出提示后续调优可针对性地引入更强的信道鲁棒性如额外加噪、频谱增强或针对电话语音做数据扩充三个测试集 Wrd 数量差异显著电话 79k 词 vs 朗读 39.7k 词说明各领域样本规模与内容分布不同比较时应同时参考百分比与绝对样本量。六、复现指南环境前提与运行步骤环境要求README 的 Environments 节给出了该结果的原始运行环境可作为复现参考基线日期2021-02-10实验产出时间Python3.8.7GCC 10.2.1ESPnet 版本0.9.6PyTorch1.7.1cu110Git 提交d72131db420e8a3455f7de9abd4c67cb8fa151a5Commit date: 2021-01-07需要说明的是当前仓库的 ESPnet 版本已经远新于 0.9.6不同版本之间的训练细节、默认值与评测脚本可能存在差异因此复现时不必强求还原旧环境只要保证配置语义一致Conformer Transformer 100 BPE 对应训练参数在当前版本上训练得到的指标走势应具有可比性。硬件方面train_asr_conformer.yaml与train_lm_transformer.yaml头部注释均要求4 块 32GB 显存的 GPU如果显存不足可相应降低batch_bins并调整accum_grad保持等效 batch size。运行步骤# 1. 安装依赖espnet、espnet2、pytorch、sentencepiece 等 # 2. 在 db.sh 中确认 RU_OPEN_STT 路径默认 downloads cd egs2/ru_open_stt/asr1 # 3. 下载并整理数据stage 1-2 ./local/data.sh # 4. 训练 解码 评分stage 1-13等价于 run.sh 全流程 ./run.sh # 5. 断点续跑示例只做 stage 12 解码 ./run.sh --stage 12 --stop_stage 13队列系统方面cmd.sh 默认使用cmd_backendlocalrun.pl本地并行如需在 SGE/Slurm/PBS 集群上运行可切换cmd_backend并配合 conf/queue.confSGE或 conf/slurm.conf 调整队列参数。评分阶段会调用 show_asr_result.sh 自动生成与本 README 同格式的 WER/CER/TER 报告供后续对比验证。七、延伸阅读通用 ASR 流水线入口egs2/ru_open_stt/asr1/asr.sh15 个 stage 的完整定义训练配置conf/train_asr_conformer.yaml、conf/train_lm_transformer.yaml解码配置conf/decode_asr.yaml数据脚本local/ru_open_stt_download_data.sh、local/ru_open_stt_prepare_data.py结果生成脚本scripts/utils/show_asr_result.sh通用模板参考egs2/TEMPLATE/asr1各阶段脚本的权威实现赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet2 方言语音识别实战iwslt22_dialect 配方评测结果、Conformer/Transformer 配置与复现指南ESPnet2 方言语音识别实战iwslt22_dialect 配方评测结果、Conformer/Transformer 配置与复现指南 导读 本文以 ESP人工智能语音音频深度学习NLPESPnet2 NSC 语料库 ASR Recipe 实战基于 Transformer 的语音识别训练、数据准备与评测结果解析ESPnet2 NSC 语料库 ASR Recipe 实战基于 Transformer 的语音识别训练、数据准备与评测结果解析 本指南围绕 ESPnet2 仓人工智能语音音频深度学习NLPESPnet2 AISHELL-4 远场会议语音识别配方Conformer 中文 ASR 训练、解码与基准结果解析ESPnet2 AISHELL 4 远场会议语音识别配方Conformer 中文 ASR 训练、解码与基准结果解析 本篇技术指南以仓库中 egs2/aishe人工智能语音音频深度学习NLP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表