拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

PaddleSpeech 在 TALCS 中文普通话 ASR 上的 Conformer 与 Chunk Conformer 实验:指标、解码方法与完整复现指南

PaddleSpeech 在 TALCS 中文普通话 ASR 上的 Conformer 与 Chunk Conformer 实验:指标、解码方法与完整复现指南 人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载本篇文章基于 examples/tal_cs/asr1/RESULTS.md 的实验记录系统解读 PaddleSpeech 在 TALCSTAL-CS 中文普通话语音语料上的 Conformer 与 Chunk Conformer 端到端 ASR 评测结果包括实验配置、四种解码方法的差异与 MER 指标对比并结合仓库中的配置文件和训练/测试脚本给出从数据准备到指标复现的完整操作路径。读完本文你将掌握 PaddleSpeech 中 u2 框架下Transformer/Conformer 混合 CTC/Attention 架构流式与非流式模型的配置差异、解码方法选择策略以及如何在本仓库中复现这些实验结果。TALCS 实验结果一览RESULTS.md记录了两种模型在 TALCS 测试集上的完整评测结果。实验使用了相同的训练流程Epoch 1003 块 V100-32G GPU最终模型由 best 前 10 个 checkpoint 平均得到best avg: 10。两种模型参数量均为 47.63 M分别对应conf/conformer.yaml与conf/chunk_conformer.yaml两套配置数据增强统一采用 spec_augSpecAugment评测指标为 MER。ModelParamsConfigAugmentationTest setDecode methodLossMERconformer47.63 Mconf/conformer.yamlspec_augtest-setattention9.850910282135010.102786conformer47.63 Mconf/conformer.yamlspec_augtest-setctc_greedy_search9.850910282135010.103538conformer47.63 Mconf/conformer.yamlspec_augtest-setctc_prefix_beam_search9.850910282135010.103317conformer47.63 Mconf/conformer.yamlspec_augtest-setattention_rescoring9.850910282135010.084374chunk_conformer47.63 Mconf/chunk_conformer.yamlspec_augtest-setattention9.8971395492553710.080488chunk_conformer47.63 Mconf/chunk_conformer.yamlspec_augtest-setctc_greedy_search9.8971395492553710.093244chunk_conformer47.63 Mconf/chunk_conformer.yamlspec_augtest-setctc_prefix_beam_search9.8971395492553710.093251chunk_conformer47.63 Mconf/chunk_conformer.yamlspec_augtest-setattention_rescoring9.8971395492553710.079193从表中可以提取出几个关键结论解码方法对结果影响显著无论 Conformer 还是 Chunk Conformerattention_rescoring注意力重打分都是四种解码方法中 MER 最低的方案ctc_greedy_search与ctc_prefix_beam_search相对较差attention居中。Loss 列与解码方法无关同一模型在四种解码方式下 Loss 完全一致如 conformer 均为 9.85091028213501这是因为 Loss 是模型本身的测试集损失由模型参数与数据决定与解码策略无关。Chunk Conformer 在引入流式约束后精度未明显下降在attention_rescoring下chunk_conformer 的 MER0.079193甚至略优于非流式 conformer0.084374在attention解码下 chunk_conformer 的优势更明显0.080488 vs 0.102786。这说明动态 chunk 的因果注意力设计在牺牲极少精度甚至获得收益的同时换来了流式解码能力。记录中还给出了两个实验对应的代码版本 commitconformer 实验基于fa724285f3b799b97b4348ad3b1084afc0764f9b2023.1.6chunk_conformer 实验基于4f62ff05b7c9974d5642b26306ff3c7140c843122025.8.11便于按版本复现。实验环境与训练设置RESULTS.md记录了训练资源配置Epoch 1003 块 V100-32Gbest avg: 10。结合 run.sh 与 conformer.yaml 可以还原完整训练细节run.sh默认gpus0,1,2,3实验中实际使用 3 卡通过avg_num10控制最终模型取 best 前 10 个 checkpoint 平均即avg_ckptavg_10。训练器配置n_epoch: 100、accum_grad: 4、global_grad_clip: 5.0、优化器为 Adamlr: 0.002、weight_decay: 1.0e-6配合 warmuplr 学习率调度warmup_steps: 25000。checkpoint 管理kbest_n: 50保留 best 50 个、latest_n: 5保留最近 5 个avg.sh 依据验证集表现挑选 best 并完成参数平均。数据并行train.sh在 GPU 数量大于 0 时通过paddle.distributed.launch --gpus...启动分布式训练并设置了FLAGS_allocator_strategynaive_best_fit以避免显存耗尽时的训练挂起。Conformer 与 Chunk Conformer同一架构的两种因果形态两种模型共享conformer编码器 transformer解码器的混合 CTC/Attentionu2结构参数量均为 47.63 M。对比 conformer.yaml 与 chunk_conformer.yaml 可以看到两者完全相同的部分编码器output_size: 512、attention_heads: 8、linear_units: 2048、num_blocks: 12、input_layer: conv2d、cnn_module_kernel: 15、use_cnn_module: True、activation_type: swish、pos_enc_layer_type: rel_pos相对位置编码、selfattention_layer_type: rel_selfattn。解码器attention_heads: 8、linear_units: 2048、num_blocks: 6。混合损失ctc_weight: 0.3、lsm_weight: 0.1标签平滑、init_type: kaiming_uniform。chunk_conformer.yaml 独有的流式关键项这是两者 MER 差异的根源causal: true编码器自注意力变为因果形式只能看到当前及之前帧。use_dynamic_chunk: true启用动态 chunk 机制将输入按块切分并配合因果注意力完成流式编码。use_dynamic_left_chunk: false不启用动态左 chunk控制上下文依赖范围。cnn_module_norm: layer_normCNN 模块使用 LayerNorm注释指出可加快收敛。batch_size: 32非流式配置为 5。从 decode.yaml 可以看到流式解码的配套参数decoding_chunk_size: -1-1 表示解码时使用完整 chunk、num_decoding_left_chunks: -1、simulate_streaming: False。test.sh通过检测配置文件名是否包含chunk_自动进入 chunk_mode流式解码强制decode_batch_size1代码注释明确stream decoding only support batchsize1而非流式解码 batch_size 为 64。数据与预处理管线实验的输入特征与数据增强由 preprocess.yaml 定义这些配置直接决定了模型看到的输入形态特征提取fbank_kaldi采样率fs: 16000、n_mels: 80、n_shift: 160即 10 ms 帧移、win_length: 40025 ms 窗长、dither: 1.0。conformer.yaml中的feat_dim: 80、stride_ms: 20.0、window_ms: 30.0与 data.sh 中stride_ms20 / window_ms30 / feat_dim80保持一致。CMVN 归一化cmvn_json加载data/mean_std.json该文件由utils/compute_mean_std.py在训练集data/manifest.train.raw上统计生成。SpecAugmentspec_aug即注释中these three processes are a.k.a. SpecAugment的三步——time_warpmax_time_warp: 5PIL 模式、freq_maskF: 30、n_mask: 2、time_maskT: 40、n_mask: 2均以inplace: true原地生效。这就是RESULTS.md表格中 Augmentation 列标记的spec_aug。词表方面data.sh 使用 sentencepiece 训练 BPE 词表nbpe11297、bpemodebpe、spm_character_coverage1生成data/lang_char/bpe_bpe_11297.model、bpe_bpe_11297.vocab与vocab.txt。conformer.yaml中unit_type: spm、spm_model_prefix: data/lang_char/bpe_bpe_11297即指向该词表。TALCS 语料的生成入口在 dataset/tal_cs/tal_cs.pydata.sh会在检测到dataset/tal_cs/TALCS_corpus缺失时提示先下载解压md5 参考值4c879b3c9c05365fc9dee1fc68713afe再生成 train/dev/test 三份 manifest。四种解码方法原理与实测对比decode.yaml 注释给出了四种可用方法attention、ctc_greedy_search、ctc_prefix_beam_search、attention_rescoring。结合 test.sh 的调用方式--opts decode.decoding_method ${type}它们各自代表解码方法机制batch_sizeConformer MERChunk Conformer MERattention纯 Transformer 解码器自回归逐 token 生成依赖编码器输出64chunk 模式为 10.1027860.080488ctc_greedy_search仅用 CTC 分支逐帧取最大概率并合并重复/空白64chunk 模式为 10.1035380.093244ctc_prefix_beam_searchCTC 分支 前缀束搜索beam对齐路径按前缀合并10.1033170.093251attention_rescoring先用 CTC 前缀束搜索生成候选再用注意力解码器对候选重打分10.0843740.079193实测结论非常清晰attention_rescoring 在两种模型上都是最优解码方案。这是 u2 架构混合解码的经典结果——CTC 分支负责快速剪枝候选注意力分支提供更强的语言建模能力进行精排。decode.yaml中ctc_weight: 0.5即用于 attention_rescoring 模式下的候选评分加权beam_size: 10控制候选束宽。测试脚本对ctc_prefix_beam_search与attention_rescoring强制使用decode_batch_size1与流式解码的 batch 限制一致。MER 指标说明TALCS 实验的评测指标为MERMandarin Error Rate普通话错误率即在字符/音节级上统计识别错误的占比其数值含义与 CER字错误率同类。配套的 decode.yaml 中error_rate_type: cer表明评测流程按字符级错误率口径计算本仓库 utils/compute-wer.py 提供了相应的指标计算工具。理解指标时需注意表中最优值 0.079193chunk_conformer attention_rescoring意味着测试集上约 7.9% 的字符级错误。同一模型的四种解码方法 MER 差异可达约 2 个百分点如 conformer 的 0.103538 与 0.084374说明在部署选型时解码策略与模型架构同样重要。复现实验从数据到指标的完整流水线README.md 与run.sh将整个流程组织为多个 stageRESULTS.md 中的每一项指标都可通过以下流水线复现环境与参数约定先加载环境变量与命令行参数解析支持. ./path.sh source ${MAIN_ROOT}/utils/parse_options.shpath.sh 将MAIN_ROOT指向仓库根目录、BIN_DIR指向paddlespeech/s2t/exps/u2/bin。run.sh中可覆盖的局部变量包括gpusGPU 列表置空则纯 CPU、stage/stop_stage起止阶段、conf_path模型配置、avg_numtop-k 平均个数、audio_file单音频推理文件。Stage 0数据准备bash run.sh --stage 0 --stop_stage 0内部执行 data.sh完成解析 TALCS 语料生成 manifest →compute_mean_std.py计算训练集 fbank 的均值方差data/mean_std.json→build_vocab.py训练 BPE 词表11297 词→format_data.py将 raw manifest 格式化为带 token id 的最终 manifest。完成后data/目录包含manifest.{train,dev,test}、manifest.{train,dev,test}.raw、mean_std.json、lang_char/词表与 spm 模型以及{train,dev,test}_set.meta。Stage 1模型训练bash run.sh --stage 1 --stop_stage 1 # 或单条命令CPUCUDA_VISIBLE_DEVICES ./local/train.sh conf/conformer.yaml conformertrain.sh按CUDA_VISIBLE_DEVICES数量决定单卡/分布式启动方式输出目录为exp/conformer/ckpt 名取自配置文件名。Stage 2Top-k 模型平均bash run.sh --stage 2 --stop_stage 2 # 等价于avg.sh best exp/conformer/checkpoints 10按验证集表现选取 best 前 10 个 checkpoint 平均得到exp/conformer/checkpoints/avg_10——即RESULTS.md中 best avg: 10 对应的评测模型。Stage 3测试bash run.sh --stage 3 --stop_stage 3 # 等价于CUDA_VISIBLE_DEVICES ./local/test.sh conf/conformer.yaml conf/tuning/decode.yaml exp/conformer/checkpoints/avg_10test.sh 会依次以四种解码方法调用test.py将各方法结果写入ckpt_prefix/method.rsl。注意若想复现 chunk_conformer 的指标应将conf_path改为conf/chunk_conformer.yaml脚本会自动识别 chunk_mode 并调整 batch 策略。单音频推理CUDA_VISIBLE_DEVICES ./local/test_wav.sh conf/conformer.yaml conf/tuning/decode.yaml exp/conformer/checkpoints/avg_10 data/demo_01_03.wavtest_wav.sh 针对单个 16 kHz wav 文件执行attention_rescoring解码示例音频与预训练模型的获取方式含解压与复测命令详见 README.md 的 Pretrained Model 与 Stage 5 两节。关键文件索引为便于继续深入本文涉及的核心文件汇总如下实验记录examples/tal_cs/asr1/RESULTS.md使用指南examples/tal_cs/asr1/README.md模型配置conf/conformer.yaml、conf/chunk_conformer.yaml、conf/preprocess.yaml、conf/tuning/decode.yaml流水线脚本run.sh、local/data.sh、local/train.sh、local/test.sh、local/test_wav.sh数据与工具dataset/tal_cs/tal_cs.py、utils/avg.sh、utils/compute-wer.py预训练模型发布页docs/source/released_model.md如需在自有数据上复用本实验的完整配置只需替换data.sh中 manifest 生成逻辑与conformer.yaml的 manifest 路径其余训练、平均、解码流程均可原样沿用。赞分享人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐深入解析 LeRobot FastWAM wan 包基于 Wan2.2 定制的 MoT 视频 DiT 实现深入解析 LeRobot FastWAM wan 包基于 Wan2.2 定制的 MoT 视频 DiT 实现 wan 是 LeRobot https://lin人工智能语音音频NLP媒体生成基于 PaddleSpeech 在 TALCS 数据集上训练 Transformer/Conformer ASR 的完整实战指南基于 PaddleSpeech 在 TALCS 数据集上训练 Transformer/Conformer ASR 的完整实战指南 本指南以 PaddleSpee人工智能语音音频NLP媒体生成PaddleSpeech 呼叫中心 8k 采样率中文 ASRMandarinK8 上 Conformer 与 Chunk Conformer 的配置、解码与 CER 实测指南PaddleSpeech 呼叫中心 8k 采样率中文 ASRMandarinK8 上 Conformer 与 Chunk Conformer 的配置、解码与人工智能语音音频NLP媒体生成上一篇Bilibili-Evolved主题切换用户研究偏好与行为下一篇告别卡顿iOS开发必备SVProgressHUD状态查看工具全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表