尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PaddleSpeech Wav2Vec2ASR 在 LibriSpeech 上的微调实践与结果解读(asr3 示例)

发布时间:2026/9/25 7:35:25

资讯中心
01
ARTICLE

PaddleSpeech Wav2Vec2ASR 在 LibriSpeech 上的微调实践与结果解读(asr3 示例)

PaddleSpeech Wav2Vec2ASR 在 LibriSpeech 上的微调实践与结果解读(asr3 示例)
人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载本篇文章以 examples/librispeech/asr3/RESULTS.md 记录的结果为起点系统讲解 PaddleSpeech 中基于 wav2vec2.0 自监督模型在 LibriSpeech 数据集上进行端到端 ASR 微调asr3 示例的完整流程。你将掌握从数据准备、模型训练、Top-k 模型平均到 CTC 解码评估、单条音频推理的全链路操作方式并了解 conf/wav2vec2ASR.yaml 中每个关键配置项的实际作用以及其在 wav2vec2_ASR.py 中的源码实现依据。一、结果概览一份可复现的基线成绩RESULTS.md记录了 asr3 示例在 LibriSpeech 上的实验配置与最终词错误率WER训练资源Epoch 11 × V100-32Gbatchsize 6模型wav2vec2ASR参数量 302.86 M配置conf/wav2vec2ASR.yaml数据增强spec_augSpecAugment测试集test-clean解码方法greedy searchWER0.018906约 1.89%。该成绩与 docs/source/released_model.md 中发布的预训练模型Wav2vec2ASR-large-960h-librispeech的记录WER 0.0189Encoder 为 Wav2vec2.0、Decoder 为 CTC、解码方法为 Greedy search相互印证说明RESULTS.md中的数字正是官方发布模型在 test-clean 上的评测结果可作为后续实验的对比基线。需要说明的是该示例在 asr3 目录中只训练 1 个 epoch因此avg_num固定为 1即直接选取最优 checkpoint而非多个模型平均。这一点在 run.sh 中体现为avg_num1的默认值。二、实验骨架run.sh 的五个阶段整个实验由一个入口脚本 run.sh 驱动脚本开头通过parse_options.sh支持--variable value形式的命令行传参。五个阶段及其职责如下Stage功能0数据处理下载 LibriSpeech 数据集、计算 CMVN 统计量、生成词表与 manifest 文件、下载预训练 wav2vec2 权重1模型训练2对 Top-k 个最优模型做参数平均k1 表示直接选最优模型3测试最终模型性能计算 WER4对单条音频文件做推理常用运行方式# 只跑数据处理 bash run.sh --stage 0 --stop_stage 0 # 从数据准备一路训练到测试 bash run.sh --stage 0 --stop_stage 3 # 指定 GPU 与模型平均数量 bash run.sh --gpus 0,1 --avg_num 20脚本还支持resume从指定 epoch 续训、ips多机训练时指定节点 IP等可选变量。ckpt由配置文件文件名自动推导ckpt$(basename ${conf_path} | awk -F. {print $1})即使用conf/wav2vec2ASR.yaml时 checkpoint 名为wav2vec2ASR模型文件统一输出到exp/wav2vec2ASR/checkpoints/下。三、Stage 0数据准备与预训练权重data.shexamples/librispeech/asr3/local/data.sh内部同样分为多个子阶段stage -1调用 dataset/librispeech/librispeech.py 下载 LibriSpeech 并生成各子集 manifest然后将train-clean-100 / train-clean-360 / train-other-500合并为manifest.train.rawdev-clean / dev-other合并为manifest.dev.rawtest-clean / test-other合并为manifest.test.rawstage 0用 utils/compute_mean_std.py 基于训练集 2000 条样本计算 fbank 均值方差输出data/mean_std.jsonstage 1用 utils/build_vocab.py 以char为建模单元生成词表data/lang_char/vocab.txtstage 2用 utils/format_data.py 结合 CMVN 与词表将 raw manifest 格式化为含 token id 的最终 manifeststage 3下载 wav2vec2 预训练权重到exp/wav2vec2/mkdir -p exp/wav2vec2 wget -P exp/wav2vec2 https://paddlespeech.cdn.bcebos.com/wav2vec/wav2vec2-large-960h-lv60-self.pdparams处理完成后data/目录结构如下data/ |-- dev.meta |-- lang_char | -- bpe_unigram_5000.model | -- bpe_unigram_5000.vocab | -- vocab.txt |-- manifest.dev |-- manifest.dev.raw |-- manifest.test |-- manifest.test.raw |-- manifest.train |-- manifest.train.raw |-- mean_std.json |-- test.meta -- train.meta这里下载的wav2vec2-large-960h-lv60-self.pdparams是 wav2vec2.0 在 LibriSpeech 960h 与 LV-60k约 5.3 万小时无标注语音上自监督预训练的权重后续微调阶段将以它为初始化参数。四、模型结构与配置深度解读4.1 整体架构冻结的 wav2vec2 轻量 DNN CTCRESULTS.md与发布模型描述都指出该模型是「Encoder: Wav2vec2.0, Decoder: CTC」。其源码实现在 paddlespeech/s2t/models/wav2vec2/wav2vec2_ASR.py 的Wav2vec2ASR类中前向流程为若normalize_wav为 True先对原始波形做layer_norm归一化送入Wav2Vec2Model提取表征默认冻结不参与梯度更新若output_norm为 True对 wav2vec2 输出再做一次layer_norm训练阶段若配置了spec_augment对特征施加 SpecAugment即RESULTS.md中的 augmentation 列经过VanillaNN编码器即配置中的enc段最后接 CTC 层计算损失。从源码结构可以推断这种「冻结自监督骨干 轻量可训练头」的设计是为了在保持 wav2vec2.0 强大表征能力的同时把微调开销与过拟合风险降到最低。4.2 关键配置参数conf/wav2vec2ASR.yamlconf/wav2vec2ASR.yaml 是模型与训练的完整配置按区块解析如下。网络架构区Network Architecture参数值说明freeze_wav2vec2True冻结 wav2vec2 全部参数源码中对应parm.trainable False只训练 DNN 与 CTC 头normalize_wavTrue对输入波形做 layer normoutput_normTrue对 wav2vec2 输出做 layer norminit_typekaiming_uniform可训练部分参数初始化方式注释提示对收敛至关重要enc.input_shape1024DNN 输入维度与 wav2vec2 的hidden_size对齐enc.dnn_blocks2DNN 隐藏层块数enc.dnn_neurons1024每层神经元数ctc.enc_n_units1024CTC 输入维度ctc.blank_id0CTC blank 符号 idctc.dropout_rate0.0CTC 层 dropoutwav2vec2_params_pathexp/wav2vec2/wav2vec2-large-960h-lv60-self.pdparams预训练权重路径Wav2Vec2.0 骨干区hidden_size1024、num_hidden_layers24、num_attention_heads16、intermediate_size4096、激活函数gelu、各 dropout 默认 0.1、layerdrop0.1卷积特征提取器conv_dim[512]*7、conv_stride[5,2,2,2,2,2,2]、conv_kernel[10,3,3,3,3,2,2]do_stable_layer_normTrue。此外还有一组与自监督预训练相关的量化器参数num_codevectors_per_group320、num_codevector_groups2、codevector_dim256等以及apply_spec_augmentFalse该开关控制 wav2vec2 内部自带的 SpecAugment而外层训练时用的 SpecAugment 由audio_augment/模型内spec_augment机制另行提供。数据与 Dataloader 区train_manifest / dev_manifest / test_manifest指向 Stage 0 生成的 manifestvocab_filepathdata/lang_char/vocab.txt、unit_typechar字符级建模单元sortagrad-1表示所有 epoch 都按样本长度从短到长排序喂入batch_size6且注释特别提醒「不同 batch_size 可能造成结果差异较大」maxlen_in / maxlen_out用于超长样本自动缩减 batchsubsampling_factor1、dist_samplerTrue支持分布式采样。数据增强区audio_augment.sample_rate16000、speeds[95, 100, 105]表示对原始音频做 95%/100%/105% 三档速度扰动——这正是RESULTS.md表格中 augmentation 列所标注的增强来源spec_aug 与速度扰动共同构成该实验的增强方案。训练区n_epoch1仅训练 1 个 epochaccum_grad1global_grad_clip5.0wav2vec2 与 DNN/CTC 各自独立使用adadelta优化器lr0.9, epsilon1e-6, rho0.95与constantlr调度器warmup_steps25000, lr_decay1.0checkpoint.kbest_n50、latest_n5控制保存的最优/最近 checkpoint 数量。五、Stage 1模型训练local/train.sh 支持单卡与多卡两种模式CUDA_VISIBLE_DEVICES为空时走 CPU/单进程训练设置了 GPU 时通过paddle.distributed.launch --gpus${CUDA_VISIBLE_DEVICES}拉起分布式训练并可选--ips指定多机节点。脚本还设置FLAGS_allocator_strategynaive_best_fit优化显存分配并默认seed1988同时开启FLAGS_cudnn_deterministic保证可复现性。训练入口为 paddlespeech/s2t/exps/wav2vec2/bin/train.py对应的模型定义在 paddlespeech/s2t/exps/wav2vec2/model.py。只跑数据准备 训练CPU 示例. ./path.sh . ./cmd.sh bash ./local/data.sh CUDA_VISIBLE_DEVICES ./local/train.sh conf/wav2vec2ASR.yaml wav2vec2ASR六、Stage 2Top-k 模型平均每个 epoch 结束时都会保存 checkpoint。基于验证损失选出最优模型或对 Top-k 模型参数求平均得到最终模型脚本为avg.sh best exp/${ckpt}/checkpoints ${avg_num}avg.sh位于 utils/avg.sh由path.sh中的MAIN_ROOT定位。由于 wav2vec2ASR 只训练 1 个 epoch本示例avg_num1等效于直接选用最优 checkpoint平均后的模型路径为exp/wav2vec2ASR/checkpoints/avg_1。七、Stage 3模型测试与 WER 计算local/test.sh 内置了ctc_greedy_search与ctc_prefix_beam_search两种解码方式的评测循环greedy search 使用decode_batch_size16prefix beam search 必须batch_size1与 wav2vec2_ASR.py 中「该解码方式要求 batch_size1」的校验逻辑一致。每个解码结果先经 utils/format_rsl.py 格式化为文本再用 utils/compute-wer.py 与参考文本data/manifest.test-clean.text比对计算 WER输出到${ckpt_prefix}.${type}.error。解码参数由 conf/tuning/decode.yaml 控制decode_batch_size1、error_rate_typewer、decoding_methodctc_greedy_search可选ctc_prefix_beam_search、beam_size10。一键复现RESULTS.md中的 WER 0.018906bash run.sh --stage 0 --stop_stage 3或使用官方发布的预训练模型wget https://paddlespeech.cdn.bcebos.com/s2t/librispeech/asr3/wav2vec2ASR-large-960h-librispeech_ckpt_1.3.0.model.tar.gz tar xzvf wav2vec2ASR-large-960h-librispeech_ckpt_1.3.0.model.tar.gz source path.sh bash local/data.sh --stage -1 --stop_stage -1 bash local/data.sh --stage 2 --stop_stage 2 CUDA_VISIBLE_DEVICES ./local/test.sh conf/wav2vec2ASR.yaml conf/tuning/decode.yaml exp/wav2vec2ASR/checkpoints/avg_1注意test.sh中的recog_set在脚本内被重新赋值为test-clean因此默认评测集合与RESULTS.md一致均为 test-clean。八、Stage 4单条音频推理local/test_wav.sh 支持对任意一条 16 kHz 采样率的 wav 文件做 CTC greedy 解码推理并自动下载示例音频demo_002_en.wav。用法CUDA_VISIBLE_DEVICES ./local/test_wav.sh conf/wav2vec2ASR.yaml conf/tuning/decode.yaml exp/wav2vec2ASR/checkpoints/avg_1 data/demo_002_en.wav推理入口为 paddlespeech/s2t/exps/wav2vec2/bin/test_wav.py。源码中decode()方法wav2vec2_ASR.py在 greedy 模式下会先做 CTC 贪心搜索再经remove_duplicates_and_blank等后处理得到 token 序列最终通过文本特征字典defeaturize还原为字符文本。九、与其它 asr 示例的定位差异LibriSpeech 下 PaddleSpeech 还提供了 asr0DeepSpeech2、asr1Conformer/U2、asr2Transformer等示例而asr3 专属于 wav2vec2.0 自监督微调路线其特点是直接以 16 kHz 原始波形为输入preprocess.yaml中仅含wav_process依赖大规模无标注预训练权重以极少的训练轮次1 epoch即可达到非常低的 WER。若需复现或在此基础上改进建议从调整freeze_wav2vec2、batch_size、SpecAugment 参数与解码方式入手并始终以RESULTS.md的 0.018906 作为对照基线。赞分享人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 基于 wav2vec2.0 微调 ASR 模型实战以 LibriSpeech asr3 为例PaddleSpeech 基于 wav2vec2.0 微调 ASR 模型实战以 LibriSpeech asr3 为例 本文以 PaddleSpeech 仓库人工智能语音音频NLP媒体生成PaddleSpeech ASR2 在 LibriSpeech 上的 Transformer 实验结果精读从 Attention Rescore 到 JoinCTC 解码PaddleSpeech ASR2 在 LibriSpeech 上的 Transformer 实验结果精读从 Attention Rescore 到 Join人工智能语音音频NLP媒体生成PaddleSpeech 实战基于 wav2vec2.0 微调 LibriSpeech 语音识别Wav2Vec2ASR全流程指南PaddleSpeech 实战基于 wav2vec2.0 微调 LibriSpeech 语音识别Wav2Vec2ASR全流程指南 本篇技术指南围绕 Pad人工智能语音音频上一篇如何快速掌握res-downloader新手完全指南与实战技巧下一篇DBeaver数据迁移全解跨库搬运数据的完整执行手册创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。