尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于预训练 HuBERT 的 LibriSpeech 100 小时微调:PaddleSpeech ASR4 完整实战指南

基于预训练 HuBERT 的 LibriSpeech 100 小时微调:PaddleSpeech ASR4 完整实战指南 人工智能语音音频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 仓库中 examples/librispeech/asr4 为例系统讲解如何用 Hugging Face 风格的预训练 HuBERT 大模型hubert-large-lv60在 LibriSpeechtrain-clean-100子集上微调出一个端到端 CTC 语音识别模型hubertASR并复现官方公布的 WER 0.05868 结果。读完本文你将掌握数据准备与 manifest 生成的完整流水线、hubertASR 配置文件中每个关键参数的底层含义、多阶段run.sh训练/平均/测试/单音频推理的用法以及将预训练 HuBERT 与轻量分类头组合的源码级实现原理。说明本文所有命令与配置均以当前仓库实际内容为准适合在已安装 PaddleSpeech 依赖PaddlePaddle、paddlenlp 等的环境中复现。一、ASR4 示例的整体定位1.1 什么是 hubertASRLibriSpeech 的 asr4 示例是 PaddleSpeech 中基于自监督预训练 HuBERT 模型微调语音识别的参考实现。其核心思路是使用在大规模未标注数据 LV-60k 上预训练的 HuBERT 编码器hubert-large-lv60作为语音特征提取主干在其之上堆叠一个轻量 DNN 分类头VanillaNN与 CTC 解码层形成完整的端到端识别模型只在 LibriSpeechtrain-clean-100约 100 小时上微调即可在test-clean上取得 WER 0.05868 的成绩。从 hubert_ASR.py 的源码可以看到模型的组装方式class HubertASR(nn.Layer): def __init__(self, config: dict): super().__init__() init_type config.get(init_type, None) with DefaultInitializerContext(init_type): self.config config task_cfg self.merge_with_parent(HubertPretrainingConfig, dict(self.config.task_cfg)) model_cfg self.merge_with_parent(HubertConfig, dict(self.config.model_cfg)) hubert HubertModel(model_cfg, task_cfg, [None]) self.normalize_wav config.normalize_wav self.output_norm config.output_norm ... self.hubert hubert self.enc VanillaNN(**config.enc) self.ctc CTC(**config.ctc, odimconfig.output_dim, batch_averageFalse, reductionmean)模型 HuBERT 特征提取器self.hubert→ 可选 LayerNorm → 可选的 SpecAugment → DNN 分类头self.enc→ CTC 层self.ctc并支持通过freeze_hubert冻结预训练主干。1.2 仓库中的目录结构examples/librispeech/asr4的核心文件组织如下run.sh入口脚本通过stage/stop_stage控制 0~4 五个阶段local/data.sh数据下载、CMVN 计算、词表构建、manifest 格式化与预训练模型下载local/train.sh模型训练local/test.sh在测试集上评估greedy search 与 ctc_prefix_beam_searchlocal/test_wav.sh单条音频推理conf/hubertASR.yamlhubertASR 完整配置conf/tuning/decode.yaml解码配置conf/preprocess.yaml预处理配置使用原始波形wav_processRESULTS.md官方复现结果。此外模型的核心实现位于paddlespeech/s2t/models/hubert/hubert_ASR.py与modules/hubert_model.py训练/测试入口位于 paddlespeech/s2t/exps/hubert/bin/train.py、test.py、test_wav.py。二、环境准备与脚本入口2.1 环境变量脚本开始任何操作前需要先加载仓库提供的环境变量脚本path.sh 与 cmd.sh. ./path.sh . ./cmd.shpath.sh会设置MAIN_ROOT仓库根目录、PYTHONPATH、BIN_DIR指向paddlespeech/s2t/exps/hubert/bin等关键变量cmd.sh则负责选择任务调度后端local/sge/slurm/ssh默认cmd_backendlocal即在本机用run.pl直接执行。同时还需要引入仓库通用的参数解析工具使run.sh支持--变量 值形式的命令行传参source ${MAIN_ROOT}/utils/parse_options.sh2.2 run.sh 的本地变量run.sh 中定义了一批可覆盖的本地变量变量默认值含义gpus0使用的 GPU 编号多卡用逗号分隔置空表示只用 CPUstage0起始阶段编号stop_stage0结束阶段编号conf_pathconf/hubertASR.yaml模型配置文件路径decode_conf_pathconf/tuning/decode.yaml解码配置文件路径avg_num1平均 top-k 模型的数量resume空断点续训的 epoch 编号audio_filedata/demo_002_en.wav单音频推理的文件路径ckpt自动生成由conf_path文件名推导例如hubertASR可以通过命令行覆盖这些变量例如bash run.sh --gpus 0,1 --avg_num 202.3 五个阶段的职责总览Stage功能0数据处理下载数据集、计算训练集 CMVN、生成词表、生成 train/dev/test 的 manifest、下载预训练 hubert 模型1模型训练2对 top-k 模型取平均得到最终模型k1 即选最优单模型3在测试集上评估最终模型性能4对单条音频文件进行推理例如只跑数据处理bash run.sh --stage 0 --stop_stage 0三、Stage 0数据准备全流程3.1 数据准备脚本Stage 0 调用 local/data.sh其内部又分为 4 个子阶段-1到2外加预训练模型下载stage 3if [ ${stage} -le 0 ] [ ${stop_stage} -ge 0 ]; then # prepare data bash ./local/data.sh || exit -1 fi也可以直接在命令行单独执行. ./path.sh . ./cmd.sh bash ./local/data.sh3.2 子阶段 -1下载数据集与生成 raw manifest调用仓库的 dataset/librispeech/librispeech.py 下载 LibriSpeech 全部子集并生成各子集的原始 manifestpython3 ${TARGET_DIR}/librispeech/librispeech.py \ --manifest_prefixdata/manifest \ --target_dir${TARGET_DIR}/librispeech \ --full_downloadTrue随后将train-clean-100 / train-clean-360 / train-other-500合并为manifest.train.raw将dev-clean / dev-other合并为manifest.dev.raw将test-clean / test-other合并为manifest.test.raw。3.3 子阶段 0计算 CMVN 统计量基于训练集 raw manifest 计算 Fbank 维度的均值/标准差用于后续特征归一化python3 ${MAIN_ROOT}/utils/compute_mean_std.py \ --manifest_pathdata/manifest.train.raw \ --num_samples2000 \ --spectrum_typefbank \ --feat_dim161 \ --delta_deltafalse \ --sample_rate16000 \ --stride_ms10 \ --window_ms25 \ --use_dB_normalizationFalse \ --num_workers${num_workers} \ --output_pathdata/mean_std.json注意这里取num_samples2000条样本估算统计量feat_dim16180 维 fbank 80 维 delta 1 维能量仅为统计计算服务hubertASR 实际输入是原始波形见 preprocess.yaml 中的wav_process这一点将在后面配置章节详述。3.4 子阶段 1构建词表按字符unit_typechar从训练集文本构建词表python3 ${MAIN_ROOT}/utils/build_vocab.py \ --unit_type ${unit_type} \ --count_threshold0 \ --vocab_path${dict_dir}/vocab.txt \ --manifest_pathsdata/manifest.train.raw生成data/lang_char/vocab.txt。3.5 子阶段 2格式化 manifest将各子集的 raw manifest 格式化为带 token id、可供训练/解码直接读取的 manifestpython3 ${MAIN_ROOT}/utils/format_data.py \ --cmvn_path data/mean_std.json \ --unit_type ${unit_type} \ --vocab_path${dict_dir}/vocab.txt \ --manifest_pathdata/manifest.${set}.raw \ --output_pathdata/manifest.${set}对train / dev / test / dev-clean / dev-other / test-clean / test-other并行执行。3.6 子阶段 3下载预训练 HuBERT 权重mkdir -p exp/hubert wget -P exp/hubert https://paddlespeech.cdn.bcebos.com/hubert/hubert-large-lv60.pdparams该权重为 HuBERT-largeLV-60k 预训练参数对应配置中的hubert_params_path: exp/hubert/hubert-large-lv60.pdparams模型约 1.18 GB。3.7 数据准备完成后的目录结构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四、hubertASR 配置逐项解析conf/hubertASR.yaml 是微调的核心配置文件下面按逻辑分块讲解每个参数的来源与影响。4.1 网络架构块Network Architecturefreeze_hubert: False normalize_wav: True output_norm: True init_type: kaiming_uniform # !Warning: need to convergence enc: input_shape: 1024 dnn_blocks: 2 dnn_neurons: 1024 activation: True ctc: enc_n_units: 1024 blank_id: 0 dropout_rate: 0.0 hubert_params_path: exp/hubert/hubert-large-lv60.pdparamsfreeze_hubert: False不冻结预训练主干。对应源码 hubert_ASR.py 中if config.freeze_hubert:分支为 True 时会把 HuBERT 参数设为trainableFalse当前配置在 100 小时数据上对全模型微调。normalize_wav: True前向时对原始波形做 layer norm 归一化见forward中wav F.layer_norm(wav, wav.shape[1:])。output_norm: True对 HuBERT 输出的特征向量再做一次 layer norm见out F.layer_norm(out, out.shape[1:])。init_type: kaiming_uniform初始化方式源码中通过DefaultInitializerContext(init_type)作用于整个模型构建过程YAML 注释特别提醒该设置对收敛至关重要。encDNN 分类头配置。input_shape: 1024与 HuBERT 编码维度encoder_embed_dim: 1024对齐dnn_blocks: 2、dnn_neurons: 1024表示两层、每层 1024 神经元的前馈网络VanillaNN。ctcCTC 解码层。enc_n_units: 1024输入维度blank_id: 0blank 符编号dropout_rate: 0.0。hubert_params_path预训练权重加载路径。4.2 任务配置块task_cfgtask_cfg: label_rate: 50.0 sample_rate: 16000 normalize: True enable_padding: False max_keep_size: None max_sample_size: 250000 min_sample_size: 32000 single_target: False random_crop: True pad_audio: Falselabel_rate: 50.0每秒标签帧率50 帧/秒。HuBERT 的特征抽取由 7 层卷积组成总下采样倍率由feat2tar_ratio cfg.label_rate * feature_ds_rate / task_cfg.sample_rate计算见 hubert_model.py。sample_rate: 16000输入音频采样率与 LibriSpeech 及数据准备脚本一致。max_sample_size / min_sample_size音频采样点数上限/下限250000 约 15.6 秒32000 约 2 秒用于过滤异常长度样本。random_crop: True训练时对波形做随机裁剪。normalize: True样本级归一化。4.3 模型配置块model_cfg——HuBERT 结构参数model_cfg完整定义了 HuBERT-large 的网络拓扑对应 HubertModel 的构造逻辑model_cfg: dropout_input: 0.0 final_dropout: 0.0 dropout: 0.0 attention_dropout: 0.0 activation_dropout: 0.1 apply_mask: True mask_length: 10 mask_prob: 0.5 mask_selection: static mask_other: 0.0 no_mask_overlap: False mask_channel_length: 64 mask_channel_prob: 0.25 mask_channel_selection: static mask_channel_other: 0.0 no_mask_channel_overlap: False feature_grad_mult: 0.0 layerdrop: 0.1 normalize: True fp16: True label_rate: 50 extractor_mode: layer_norm encoder_layers: 24 encoder_embed_dim: 1024 encoder_ffn_embed_dim: 4096 encoder_attention_heads: 16 activation_fn: gelu encoder_layerdrop: 0.1 dropout_features: 0.0 final_dim: 768 untie_final_proj: True layer_norm_first: True conv_feature_layers: [(512,10,5)] [(512,3,2)] * 4 [(512,2,2)] * 2 conv_bias: False logit_temp: 0.1 target_glu: False mask_min_space: 1 mask_channel_min_space: 1 conv_pos: 128 conv_pos_groups: 16 latent_temp: [2.0, 0.5, 0.999995] skip_masked: False skip_nomask: True卷积特征抽取器conv_feature_layers定义了 7 层 CNN即(512,10,5) 4×(512,3,2) 2×(512,2,2)每项为输出通道、卷积核、步长在 hubert_model.py 通过eval()解析并传入ConvFeatureExtractionModel。编码器主干24 层 Transformer、隐层 1024、FFN 4096、16 头注意力、GELU 激活、layer_norm_first: True。预训练相关的 masking 参数mask_prob、mask_length、mask_channel_*等虽然微调阶段直接使用extract_features提取特征但保留这些参数以保证与预训练权重结构一致。feature_grad_mult: 0.0表示特征抽取层的梯度倍率预训练特性参数。4.4 数据、Dataloader 与训练超参train_manifest: data/manifest.train-clean-100 dev_manifest: data/manifest.dev test_manifest: data/manifest.test-clean注意虽然data.sh会合并出manifest.train.raw但本示例的训练 manifest 指向data/manifest.train-clean-100即仅使用 train-clean-100100 小时测试集指向test-clean。Dataloader 相关关键参数vocab_filepath: data/lang_char/vocab.txt unit_type: char sortagrad: -1 # -1: 全 epoch 启用“短样本优先”0: 禁用其他值: 仅前 N 个 epoch 启用 batch_size: 4 # 不同 batch_size 可能带来结果上的较大差异 maxlen_in: 1500 # 输入长度超过该值时自动减小 batchsize maxlen_out: 150 # 输出长度超过该值时自动减小 batchsize num_workers: 0 dist_sampler: True return_lens_rate: Truereturn_lens_rate: True对应HubertASR.forward(wav, wavs_lens_rate, ...)中的wavs_lens_rate用于把波形长度折算为特征帧长度x_lens (wavs_lens_rate * x.shape[1]).round()。数据增强针对原始波形audio_augment: # for raw audio sample_rate: 16000 speeds: [95, 100, 105]训练超参n_epoch: 3 accum_grad: 8 global_grad_clip: 5.0 model_optim: adadelta model_optim_conf: lr: 1.0 epsilon: 1.0e-6 rho: 0.95 model_scheduler: constantlr model_scheduler_conf: warmup_steps: 25000 lr_decay: 1.0 hubert_optim: adadelta hubert_optim_conf: lr: 0.95 epsilon: 1.0e-6 rho: 0.95 hubert_scheduler: constantlr hubert_scheduler_conf: warmup_steps: 25000 lr_decay: 1.0 log_interval: 1 checkpoint: kbest_n: 50 latest_n: 5关键点双优化器model_optim分类头与hubert_optimHuBERT 主干使用不同学习率1.0 vs 0.95均采用 AdaDelta 常数学习率调度。accum_grad: 8梯度累积 8 步等效放大 batch size。n_epoch: 3训练 3 个 epoch。checkpoint保留 best 前 50 个、latest 前 5 个 checkpoint供 Stage 2 平均使用。4.5 解码配置conf/tuning/decode.yamldecode_batch_size: 1 error_rate_type: wer decoding_method: ctc_greedy_search # ctc_greedy_search, ctc_prefix_beam_search beam_size: 10decoding_method支持ctc_greedy_search贪心搜索与ctc_prefix_beam_search前缀束搜索RESULTS.md 中的官方结果采用 greedy search。beam_size: 10前缀束搜索的束宽greedy 时无效。源码中 HubertASR.decode 明确ctc_prefix_beam_search只支持 batch_size 1。五、Stage 1~4训练、平均、测试与推理5.1 Stage 1训练if [ ${stage} -le 1 ] [ ${stop_stage} -ge 1 ]; then # train model, all ckpt under exp dir CUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${ckpt} ${resume} ${ips} fitrain.sh 会根据CUDA_VISIBLE_DEVICES中的 GPU 数量选择单卡或分布式训练# 单卡 python3 -u ${BIN_DIR}/train.py \ --ngpu ${ngpu} --config ${config_path} --output exp/${ckpt_name} --seed ${seed} --resume ${resume} # 多卡 python3 -m paddle.distributed.launch --gpus${CUDA_VISIBLE_DEVICES} ${ips_config} ${BIN_DIR}/train.py \ --ngpu ${ngpu} --config ${config_path} --output exp/${ckpt_name} --seed ${seed} --resume ${resume}脚本还设置了确定性训练相关环境变量seed 非 0 时启用FLAGS_cudnn_deterministicTrue脚本注释提示seed 可能破坏模型收敛并设置FLAGS_allocator_strategynaive_best_fit。5.2 Stage 2Top-k 模型平均avg.sh best exp/${ckpt}/checkpoints ${avg_num}avg.sh 定义在仓库utils/下通过path.sh的PATH引入。每轮训练都会保存 checkpoint可基于验证损失挑选最优模型或对 top-k 个模型参数取平均得到最终模型。hubertASR 官方仅训练 3 个 epochavg_num设为 1。5.3 Stage 3测试集评估CUDA_VISIBLE_DEVICES0 ./local/test.sh ${conf_path} ${decode_conf_path} exp/${ckpt}/checkpoints/${avg_ckpt} || exit -1test.sh 的评估流程用format_rsl.py生成参考文本data/manifest.test-clean.text对ctc_greedy_searchbatch_size16与ctc_prefix_beam_searchbatch_size1分别调用${BIN_DIR}/test.py生成.rsl识别结果再次用format_rsl.py转成纯文本用compute-wer.py --char1 --v1计算字符级 WER结果写入${ckpt_prefix}.${type}.error。从 test.sh 可以看到评估集当前固定为test-clean与 RESULTS.md 一致。5.4 Stage 4单音频推理CUDA_VISIBLE_DEVICES0 ./local/test_wav.sh ${conf_path} ${decode_conf_path} exp/${ckpt}/checkpoints/${avg_ckpt} ${audio_file} || exit -1test_wav.sh 会自动下载官方演示音频若不存在wget -nc https://paddlespeech.cdn.bcebos.com/datasets/single_wav/en/demo_002_en.wav -P data/然后以batch_size1、ctc_greedy_search方式调用${BIN_DIR}/test_wav.py --audio_file ${audio_file}输出识别文本。注意音频采样率必须为 16K与模型配置一致。六、用预训练 hubertASR 模型直接复现结果6.1 官方发布结果RESULTS.md 全文RESULTS.md 内容如下LibriSpeechhubertASRFintuning on train-clean-100 train: Epoch 3, 1*V100-32G, batchsize: 4, accum_grad: 8ModelParamsConfigAugmentationTest setDecode methodWERhubertASR326.16Mconf/hubertASR.yamlspec_augtest-cleangreedy search0.05868即在 1 张 V100-32G 上训练 3 个 epochbatchsize 4、accum_grad 8、SpecAugment 增强使用贪心搜索解码test-clean 上 WER 为 0.05868。需要说明RESULTS.md 的 Augmentation 列写的是spec_aug而 hubertASR.yaml 中的增强配置为原始波形速度扰动audio_augment.speeds: [95, 100, 105]同时 config.json 中apply_spec_augment为 true。因此实际复现时应以配置文件与源码为准配置中存在不一致字段时注意核对 hubert_ASR.py 中if hasattr(config, spec_augment)的分支是否被触发。6.2 下载发布模型并测试官方发布的可直接下载模型记录在 docs/source/released_model.mdHubert-large-100h-librispeech ModelEncoder 为 HubertDecoder 为 Linear CTC解码方式 Greedy searchtest-clean WER 0.0587模型约 1.27 GB。复现步骤参考 README.mdwget https://paddlespeech.cdn.bcebos.com/hubert/hubertASR-large-100h-librispeech_ckpt_1.4.0.model.tar.gz tar xzvf hubertASR-large-100h-librispeech_ckpt_1.4.0.model.tar.gz source path.sh # 若已处理过数据并得到 manifest可跳过下面两步 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/hubertASR.yaml conf/tuning/decode.yaml exp/hubertASR/checkpoints/avg_16.3 端到端复现从数据到 WER完整复现官方结果train-clean-100 → test-clean只需一条命令bash run.sh --stage 0 --stop_stage 3等价的手工分步执行仅用 CPU. ./path.sh . ./cmd.sh bash ./local/data.sh CUDA_VISIBLE_DEVICES ./local/train.sh conf/hubertASR.yaml hubertASR avg.sh best exp/hubertASR/checkpoints 1 CUDA_VISIBLE_DEVICES ./local/test.sh conf/hubertASR.yaml conf/tuning/decode.yaml exp/hubertASR/checkpoints/avg_1如需同时验证单音频推理可补充CUDA_VISIBLE_DEVICES ./local/test_wav.sh conf/hubertASR.yaml conf/tuning/decode.yaml exp/hubertASR/checkpoints/avg_1 data/demo_002_en.wav七、源码级原理解读7.1 前向与损失计算hubert_ASR.py 的forward是理解整条数据流的钥匙def forward(self, wav, wavs_lens_rate, target, target_lens): if self.normalize_wav: wav F.layer_norm(wav, wav.shape[1:]) # Extract wav2vec output out self.hubert.extract_features(wav)[0] if self.output_norm: out F.layer_norm(out, out.shape[1:]) if self.training and hasattr(self.config, spec_augment): feats self.spec_augment(out) else: feats out x self.enc(feats) x_lens (wavs_lens_rate * x.shape[1]).round().astype(paddle.int64) ctc_loss self.ctc(x, x_lens, target, target_lens) return ctc_loss数据流为原始波形 →可选LayerNorm → HuBERT 卷积Transformer 特征提取 →可选输出 LayerNorm →训练时可选SpecAugment → DNN 分类头 → 帧长度换算 → CTC loss。7.2 HuBERT 特征提取与下采样HubertModel.extract_features 依次经过feature_extractor7 层卷积与 Transformer encoder。下采样倍率由卷积层步长乘积决定(5 × 2^4 × 2^2) 320配合label_rate50与sample_rate16000feat2tar_ratio 50 × 320 / 16000 1.0即输出特征帧率恰好等于每秒 50 帧标签率这是 CTC 帧对齐得以成立的基础。7.3 解码方法与限制decode 支持两种解码方式ctc_greedy_search逐帧取 argmax 后去除重复与 blank依赖remove_duplicates_and_blankctc_prefix_beam_search前缀束搜索beam_size由 decode 配置传入且必须 batch_size 1。八、常见问题与调参提示训练发散/不收敛init_type: kaiming_uniform被 YAML 注释标记为!Warning: need to convergence初始化方式对结果影响很大不要随意改动。batch_size 敏感性YAML 注释明确提示“Different batch_size may cause large differences in results”复现官方结果应保持batch_size: 4、accum_grad: 8。显存与时长限制max_sample_size: 250000会过滤超过约 15.6 秒的音频maxlen_in/maxlen_out超限会自动缩减 batch size。prefix beam search 必须单条解码decode_batch_size: 1否则源码会直接报错。音频采样率单音频推理必须为 16K否则特征帧率与标签帧率失配。分布式训练多卡时通过paddle.distributed.launch --gpus${CUDA_VISIBLE_DEVICES}启动ips变量可指定多机 IP 列表。九、延伸阅读examples/librispeech/asr4/README.md示例的完整英文说明阶段划分、逐条命令。paddlespeech/s2t/models/hubert/hubert_ASR.pyhubertASR 模型组装与前向/解码实现。paddlespeech/s2t/models/hubert/modules/hubert_model.pyHuBERT 主干卷积特征抽取 Transformer encoder。paddlespeech/s2t/exps/hubert/bin/train.py训练入口。docs/source/released_model.md预训练 HuBERT 与 hubertASR 发布模型清单及指标。仓库中还提供了基于其他数据的同类示例例如 examples/librispeech/asr0、examples/librispeech/asr1不同模型的 ASR 基线以及 TTS/VPR/CLS 等其余示例目录可对照了解 PaddleSpeech 各任务的统一工程范式run.sh多阶段 conf目录 local/*.sh脚本。结语本文完整继承了 RESULTS.md 的核心复现信息train-clean-100、3 epoch、1×V100-32G、batchsize 4、accum_grad 8、SpecAugment、greedy search、WER 0.05868并在此基础上深入讲解了 ASR4 示例从数据准备到模型推理的完整工程链路与配置文件细节同时结合 hubert_ASR.py 与 hubert_model.py 源码剖析了其底层原理。读者可以据此在本地完整复现“预训练 HuBERT 在 100 小时语音上的 CTC 微调”并在需要时直接套用该示例范式改造自己的数据集。赞分享人工智能语音音频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 实战基于 HuBERT 预训练模型微调 LibriSpeech 的 Hubert2ASR 全流程指南asr4 示例PaddleSpeech 实战基于 HuBERT 预训练模型微调 LibriSpeech 的 Hubert2ASR 全流程指南asr4 示例 导读 本文围人工智能语音音频NLP媒体生成PaddleSpeech LibriSpeech asr4 实战基于预训练 Hubert 微调的 hubertASR 语音识别与结果复现PaddleSpeech LibriSpeech asr4 实战基于预训练 Hubert 微调的 hubertASR 语音识别与结果复现 本篇文章聚焦 Pad人工智能语音音频如何通过li-wen将openEuler构建时间从12小时缩短到极致如何通过li wen将openEuler构建时间从12小时缩短到极致 前往项目官网免费下载 https://ar.openeuler.org/ar/ http人工智能语音音频NLP媒体生成上一篇深入Pywsd相似度算法Wu-Palmer、Resnik、Jiang-Conrath对比指南下一篇Kindle Comic Converter终极指南快速将漫画转换为Kindle完美格式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表