资讯动态

ESPnet 日语电视语音 ASR 实战:LaboroTVSpeech 配方(egs2/laborotv/asr1)的数据、训练、解码与流式推理全解析

发布时间:2026/9/25 5:35:23 来源:尧图企业网站定制
人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载本篇技术指南以 ESPnet 仓库中egs2/laborotv/asr1配方为核心完整解析如何在大型日语电视节目语音语料 LaboroTVSpeech 上构建字符级端到端 ASR 系统从db.sh语料路径配置、local/data.sh数据切分与文本清洗到 Conformer/Transformer/流式 Transformer 训练配置、CTC-注意力混合解码与语言模型浅融合最后结合配方 README 中的 CER 结果表解读实验结论。读完本文你将掌握 ESPnet2 日语 ASR 配方从数据到解码的完整落地流程并可直接迁移到其他egs2/TEMPLATE/asr1派生配方。配方概览README 记录了什么egs2/laborotv/asr1/README.md是一份由scripts/utils/show_asr_result.sh自动生成的结果报告它浓缩了该配方最有价值的产出实验环境快照记录的实验运行于 2020 年 12 月Python 3.7.3、ESPnet 0.9.5、PyTorch 1.4.0并附带了可复现的 Git commitc40d6e238dd443188f8eb68c8f2b3ebc3fe1c479预训练模型入口实验对应的 Conformer 模型托管于 Zenodo记录号 4304245详见 README可直接用于推理或迁移学习三组评测集 CER 明细dev12,000 句、dev_4k3,971 句、tedx-jp-10k10,000 句的逐字错误统计。配方目录本身则提供了完整的可执行资产结构如下egs2/laborotv/asr1/ ├── run.sh # 离线 ASR 主入口Conformer ├── run_streaming.sh # 流式 ASR 入口contextual_block_transformer ├── asr.sh # ESPnet2 通用 ASR 流水线脚本 ├── cmd.sh # 并行后端选择local/sge/pbs/slurm/ssh ├── db.sh # 语料路径配置LABOROTV / TEDXJP ├── path.sh # 环境初始化 ├── conf/ │ ├── train_asr_conformer.yaml │ ├── train_asr_transformer.yaml │ ├── train_asr_streaming_transformer.yaml │ ├── train_asr_rnn.yaml │ ├── train_lm.yaml │ ├── decode_asr.yaml │ ├── decode_asr_streaming.yaml │ └── tuning/ # 调参用的候选配置 ├── local/ │ ├── data.sh # 数据准备三阶段流水线 │ ├── laborotv_data_prep.sh # LaboroTVSpeech 数据目录构建 │ ├── tedx-jp-10k_data_prep.sh │ ├── csj_rm_tag_sp_space.sh / csj_rm_tag.py # 文本清洗 │ └── path.sh └── scripts/ # ESPnet2 共享脚本含 show_asr_result.sh实验环境与预训练模型README 记录的环境信息是复现实验的前提约束项目版本dateThu Dec 3 07:50:56 EST 2020python3.7.3espnetespnet 0.9.5pytorchpytorch 1.4.0Git hashc40d6e238dd443188f8eb68c8f2b3ebc3fe1c479提交于 2020-12-01实验中训练得到的模型命名为asr_train_asr_conformer2_latest33_raw_char_sp其命名遵循 ESPnet2 惯例asr_train_asr_config 名称_raw_token_type[_sp]即使用 raw 波形特征、char 词元、并叠加了 speed perturbation_sp后缀。该命名对应的配置族就是本配方 conf/train_asr_conformer.yaml 所定义的 Conformer 架构。解码时使用的模型为 ASR 验证集 acc 平均权重valid.acc.ave语言模型则为验证集 loss 平均权重valid.loss.ave。数据准备从语料到 ESPnet 数据目录语料路径配置db.sh所有 ESPnet2 配方都通过 db.sh 声明语料位置。本配方需要两个变量LABOROTV # 指向 LaboroTVSpeech 语料根目录 TEDXJP # 指向 TEDxJP-10K 数据目录这两个变量默认为空运行前必须填入实际路径local/data.sh会在启动时检查若为空则直接报错退出。db.sh中还按主机名/域名提供了 CMU TIR、JHU CLSP 等特定集群的预置路径普通用户只需修改顶部对应变量即可。stage 1校验 TEDxJP-10K 原始文件local/data.sh由asr.sh的 stage 1 调用首先校验 TEDxJP-10K 是否完整要求目录下同时存在segments spk2utt text utt2spk wavlist.txt wav/TEDxJP-10K 源自 laboroai 的 TEDxJP 项目评测集规模为 10,000 句见 README 结果表的Snt10000用于日语语音识别的跨域评测。若文件缺失脚本会提示按原始发布说明重新构建数据。stage 2TEDxJP-10K 预处理local/tedx-jp-10k_data_prep.sh 将原始数据拷贝为 ESPnet 标准数据目录data/tedx-jp-10kcp ${RAW_DATA_DIR}/{segments,spk2utt,text,utt2spk} ${dst_dir} # 依据 wavlist.txt 构造 wav.scp统一经 sox 转为 16kHz 单声道 wav 流 echo ${id} sox \${filepath}\ -c 1 -r 16000 -t wav - | ${dst_dir}/wav.scp utils/data/validate_data_dir.sh --no-feats ${dst_dir}这里的wav.scp是管道式音频入口sox ... -t wav - |在解码/特征提取时即时完成 16 kHz 重采样与单声道转换。stage 3LaboroTVSpeech 预处理与训练/验证切分local/laborotv_data_prep.sh 针对语料自带的train/dev两个子集执行for x in train dev; do mkdir -p data/${x} # 将 text.csv 的逗号分隔转录文本转换为空格分隔的 text perl -pe s/,/ / ${CORPUS_DIR}/data/${x}/text.csv data/${x}/text # 由 CSV 第一列生成 wav.scputterance_id 绝对路径.wav cut -d, -f1 ${CORPUS_DIR}/data/${x}/text.csv | awk -v dir${CORPUS_DIR}/data/${x}/wav/ {print dir\$1\.wav\} | sort | perl -pe s,(.*/)([^/]*)(\.wav),\2 \1\2\3,g data/${x}/wav.scp # 每句视为独立说话人构造 utt2spk / spk2utt awk {print $1,$1_spk} data/${x}/text data/${x}/utt2spk utils/utt2spk_to_spk2utt.pl data/${x}/utt2spk data/${x}/spk2utt utils/fix_data_dir.sh data/${x} utils/validate_data_dir.sh --no-feats data/${x} done随后local/data.sh做两件关键的事文本清洗对data/train、data/dev、data/tedx-jp-10k依次执行 local/csj_rm_tag_sp_space.sh。它调用 local/csj_rm_tag.py 剥离 CSJ 风格标签按切分保留词根再剔除sp停顿标记与文本内空格——这对日语电视节目口语文本的去噪至关重要训练/验证切分从data/train取前 4,000 句作为验证集其余作为训练集utils/subset_data_dir.sh --first data/train 4000 data/dev_4k n$(($(wc -l data/train/text) - 4000)) utils/subset_data_dir.sh --last data/train ${n} data/train_nodev最终数据划分与run.sh中的变量一一对应train_settrain_nodev、valid_setdev_4k、test_setsdev_4k dev tedx-jp-10k。注意dev12,000 句是语料自带评测集dev_4k3,971 句则是训练集内切出的快速验证子集README 对两者都报告了 CER。训练主入口 run.sh 与 Conformer 配置run.sh 参数总览run.sh 是离线训练的完整入口train_settrain_nodev valid_setdev_4k test_setsdev_4k dev tedx-jp-10k asr_configconf/train_asr_conformer.yaml inference_configconf/decode_asr.yaml lm_configconf/train_lm.yaml # speed perturbation训练集将自动变为 train_nodev_sp speed_perturb_factors0.9 1.0 1.1 # NOTE: 默认配置需要 4 张 32GB 显存的 GPU ./asr.sh \ --ngpu 4 \ --nj 128 \ --inference_nj 256 \ --lang jp \ --token_type char \ --feats_type raw \ --asr_config ${asr_config} \ --inference_config ${inference_config} \ --lm_config ${lm_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} \ --speed_perturb_factors ${speed_perturb_factors} \ --lm_train_text data/${train_set}/text $关键参数含义参数取值作用--ngpu 44训练使用 4 块 GPU配合 32GB 显存要求--nj 128128特征提取/数据处理的并行 job 数--inference_nj 256256解码阶段的并行 job 数测试集较大--lang jpjp语言标注供分词/文本处理参考--token_type charchar词元类型为字符级适合无词边界歧义的日语--feats_type rawraw直接以原始波形为输入前端由编码器的 conv2d6 承担--speed_perturb_factors0.9 1.0 1.1三档速度扰动数据增强训练集变为train_nodev_sp--lm_train_textdata/train_nodev/text用训练集转录文本训练语言模型asr.sh是 ESPnet2 的通用 ASR 流水线模板见 egs2/TEMPLATE/asr1/asr.sh它按 stage 依次执行数据准备 → 特征提取与 CMVN → 词元表构建 → 语言模型训练 → ASR 模型训练 → 解码 → 打分。Conformer 编码器配置conf/train_asr_conformer.yaml 定义了本次实验的模型asr_conformer2_latest33即此类配置的历史命名batch_type: numel batch_bins: 15000000 # 按元素数动态批大小约 1500 万元素/批 accum_grad: 6 # 梯度累积 6 步 max_epoch: 33 patience: none init: xavier_uniform best_model_criterion: - - valid - acc - max keep_nbest_models: 10 # 保留 top-10 权重解码时可用 avg 平均 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 # 6 层卷积下采样前端替代手工 fbank 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 # 大卷积核的卷积模块Conformer 特色解码器与混合目标decoder: transformer decoder_conf: attention_heads: 8 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 ctc_conf: ignore_nan_grad: true model_conf: ctc_weight: 0.3 # CTC 与注意力联合训练CTC 占 0.3 lsm_weight: 0.1 # label smoothing 权重 length_normalized_loss: false optim: adam optim_conf: lr: 0.002 scheduler: warmuplr scheduler_conf: warmup_steps: 25000数据增强采用 SpecAugmentspecaug: specaug specaug_conf: apply_time_warp: true # 时间弯曲窗口 5bicubic 插值 time_warp_window: 5 time_warp_mode: bicubic apply_freq_mask: true # 频率掩码宽度 0~302 个掩码 freq_mask_width_range: [0, 30] num_freq_mask: 2 apply_time_mask: true # 时间掩码宽度 0~402 个掩码 time_mask_width_range: [0, 40] num_time_mask: 2语言模型配置conf/train_lm.yaml 定义了两层 LSTM 字符级语言模型用于解码时的浅融合README 中的模型名lm_train_lm_largh1_char即对应此类大容量 char LMoptim: sgd patience: 3 max_epoch: 40 batch_type: folded batch_size: 256 lm: seq_rnn lm_conf: rnn_type: lstm nlayers: 2 unit: 2024 # 隐藏单元数 best_model_criterion: - - valid - loss - min keep_nbest_models: 1候选架构Transformer、RNN 与调参目录除 Conformer 主配置外配方还提供多种备选conf/train_asr_transformer.yaml纯 Transformer 编码器18 层、output_size 512、linear_units 2048、input_layer conv2d6训练 100 epochconf/train_asr_rnn.yaml经典 vgg_rnn 编码器4 层双向 LSTM、hidden 1024 location attention 解码器ctc_weight 0.5adadelta 优化器conf/tuning/含train_asr_rnn_scheduler.yaml等调参变体可对比学习率调度策略。用户只需修改run.sh中的asr_config变量即可切换架构例如换成 Transformerasr_configconf/train_asr_transformer.yaml。解码CTC-注意力混合与 LM 浅融合conf/decode_asr.yaml 是离线解码配置lm_weight: 0.3 # 语言模型浅融合权重 beam_size: 20 # 集束搜索宽度 penalty: 0.0 # 长度惩罚 maxlenratio: 0.0 # 最大长度比例0 表示不限制 minlenratio: 0.0 ctc_weight: 0.3 # 解码时 CTC 前缀概率权重与训练保持一致解码使用valid.acc.aveASR 平均权重与valid.loss.aveLM 平均权重在 CTC 前缀得分与注意力得分之间按ctc_weight 0.3 / lm_weight 0.3折中形成混合 CTC/注意力 LM 浅融合的典型 ESPnet 解码范式。流式 ASRrun_streaming.sh 与上下文分块 Transformer面向实时场景配方提供 run_streaming.sh与run.sh结构一致但增加了--use_streaming true并将配置切换为模型conf/train_asr_streaming_transformer.yaml解码conf/decode_asr_streaming.yaml推理模型valid.acc.ave.pth。流式编码器采用contextual_block_transformer通过分块自注意力实现低延迟encoder: contextual_block_transformer encoder_conf: output_size: 512 attention_heads: 8 linear_units: 2048 num_blocks: 18 input_layer: conv2d6 normalize_before: true block_size: 40 # 块内帧数约 0.4s按 10ms 帧移计 hop_size: 16 # 相邻块步长 look_ahead: 16 # 每块允许前瞻的帧数 init_average: true ctx_pos_enc: true # 上下文位置编码流式解码配置额外引入了 chunk 级模拟参数sim_chunk_length: 512 # 模拟的块长度帧 disable_repetition_detection: true # 关闭重复检测 decoder_text_length_limit: 0 # 0 表示不限制解码文本长度 encoded_feat_length_limit: 0 # 0 表示不限制编码特征长度需要注意流式与离线两套配置都需要4 张 32GB 显存 GPU配置文件头部的 NOTE 注释明确标注训练与解码资源需求较高。实验结果README CER 表解读README 的核心成果是下表实验名asr_train_asr_conformer2_latest33_raw_char_sp解码使用lm_train_lm_largh1_char_valid.loss.ave与asr_model_valid.acc.avedatasetSntWrdCorrSubDelInsErrS.Errdev1200027300493.04.12.92.79.750.4dev_4k39719842495.12.72.22.17.045.1tedx-jp-10k_verbatim1000019056889.15.15.72.213.062.1指标口径说明字符级Snt句子数Wrd字符总数Corr正确率Sub替换率Del删除率Ins插入率Err字符错误率CER Sub Del Ins是核心指标S.Err句子错误率SER只要句内出现任何字符错误即计为句错。从结果可以读出三点域内表现dev_4k与训练集同域的 TV 语音CER 仅 7.0%说明 Conformer SpecAugment 速度扰动在域内数据上收敛良好完整 dev 集更大的dev集 CER 为 9.7%SER 达 50.4%反映电视节目口语的语句级难度跨域评测tedx-jp-10k_verbatimTEDx 演讲逐字标注CER 升至 13.0%SER 62.1%体现了从电视节目到演讲场景的领域迁移损失——这也解释了为何配方将两个异质数据集放在同一测试集中做鲁棒性考察。复现与运行指南完整复现流程# 1. 编辑 db.sh填写 LABOROTV 与 TEDXJP 的本地路径 # 2. 确认 cmd.sh 的 cmd_backend 与集群环境匹配默认 local # 3. 执行默认配方Conformer 离线版 ./run.sh # 4. 或分阶段执行便于排查 ./run.sh --stage 1 --stop_stage 1 # 仅数据准备 ./run.sh --stage 2 --stop_stage 2 # 特征提取等 ./run.sh --stage 3 --stop_stage 3 # 词元表 ./run.sh --stage 4 --stop_stage 4 # 语言模型训练 ./run.sh --stage 5 --stop_stage 5 # ASR 模型训练 ./run.sh --stage 6 --stop_stage 6 # 解码与打分 # 5. 流式版本 ./run_streaming.shrun.sh末尾的$允许覆盖任意参数例如减少资源占用./run.sh --ngpu 1 --nj 32 --inference_nj 64注意默认配置按 4×32GB 显存设计降配可能影响批大小表现。并行后端与相关资源任务调度由 cmd.sh 的cmd_backend决定可选local/stdout/sge/pbs/slurm/ssh/jhu对应conf/queue.conf、conf/pbs.conf、conf/slurm.conf中的集群参数结果报告由 scripts/utils/show_asr_result.sh 生成README 即为该脚本输出音频 VAD 与静音裁剪工具位于scripts/audio/compute_vad.sh、trim_silence.sh适合对电视节目做预处理时参考。总体而言egs2/laborotv/asr1是一个数据规模大、评测维度丰富域内 跨域、离线 流式的 ESPnet2 日语 ASR 参考实现其local/data.sh的三阶段数据流程与conf/下的多架构配置矩阵对搭建同类日/双语 ASR 项目具有很强的模板复用价值。赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐ESPnet2 低资源英语 ASR 实战Makerere 电台语料配方egs2/makerere/asr1数据准备、模型配置与评测全解析ESPnet2 低资源英语 ASR 实战Makerere 电台语料配方egs2/makerere/asr1数据准备、模型配置与评测全解析 本篇以 ESPn人工智能语音音频深度学习NLPESPnet 大规模无标注日语语音 ASR 实战ReazonSpeech Conformer 训练与推理配置详解ESPnet 大规模无标注日语语音 ASR 实战ReazonSpeech Conformer 训练与推理配置详解 本文围绕 egs2/reazonspeech人工智能语音音频深度学习NLPFlutter 引擎 iOS Scenario App 测试指南运行、Platform View 与 Golden 测试详解Flutter 引擎 iOS Scenario App 测试指南运行、Platform View 与 Golden 测试详解 本文以 Flutter 引擎测试人工智能语音音频深度学习NLP上一篇解决Android底部导航栏痛点CommonTabLayout图标文字上下布局全攻略下一篇Featureform开源社区如何参与贡献并成为核心开发者创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑