人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载ESPnet2 为 SLUE 2022 Challenge基于 VoxCeleb 音频的语音情感理解任务提供了完整的端到端训练配方位于 egs2/slue-voxceleb/asr1/。该任务要求模型同时输出语音转写文本和情感意图标签Neutral / Positive / Negative本文将基于该配方的结果文档 README.md 逐层展开从数据准备、流水线结构到两组核心实验的完整网络配置与意图分类评测脚本帮助读者掌握ASR 意图联合建模这一 ESPnet2 多目标范式的全流程实现。一、任务与实验环境概述SLUESentiment-aware Language Understanding EvaluationVoxCeleb 子任务的评测方式是模型对每条语音先输出情感意图标签、再输出转写文本二者拼接在同一行文本中形如Positive hello world。评测时先比较意图标签的逐行一致率Intent Classification Accuracy再用 sclite 计算去掉意图词后的转写 WER。原结果文档记录了以下运行环境可作为复现该结果的参考基线项版本记录时间Tue Dec 28 12:28:28 EST 2021Python3.9.5ESPnet0.10.3a2PyTorch1.8.1cu102Git 提交6bf3c2a4f138d35331634d2e879bbc5c32a5266e2021-12-22需要注意当前仓库代码已在该版本之后持续演进配方中的local/data.sh、local/score.sh等脚本结构保持一致但asr.sh的 stage 划分与参数可能有更新复现时以当前仓库脚本为准。二、数据准备从 TSV 标注到 Kaldi 风格数据目录2.1 数据源说明配方依赖 VoxCeleb 数据需要在 db.sh 中手动设置VOXCELEB环境变量该数据无法自动下载VOXCELEB若未设置local/data.sh 在 stage 1 检查不到VOXCELEB/LICENSE.txt时会直接报错退出。2.2 三个数据划分与 TSV 映射local/data_prep_slue.py 将官方 TSV 标注文件转换为 ESPnet2 所需的text/wav.scp/utt2spk三个划分分别对应划分TSV 文件音频目录前缀trainslue-voxceleb_fine-tune.tsvfine-tune_raw/develslue-voxceleb_dev.tsvdev_raw/testslue-voxceleb_test_blind.tsvtest_raw/脚本中有两个值得注意的细节意图标签与转写拼接非盲测集的text文件内容格式为intent speaker即words ( row[4].replace( , _) row[1].encode(ascii, ignore).decode() )意图词第 4 列中的空格被替换为下划线以保证单 token 匹配后面跟随说话人字段。mixed意图的样本会被直接跳过。盲测集处理test 集没有参考转写text中意图位填blank提交结果需提交到官方 leaderboard说话人取自 TSV 第 1 列。2.3 目录整理与 BPE 词表local/data.sh的 stage 2 完成三件事对text/wav.scp/utt2spk排序、用utt2spk_to_spk2utt.pl生成spk2utt并用utils/validate_data_dir.sh --no-feats校验目录随后调用 local/run_spm.sh 构建 BPE 词表并把原始data目录替换为data_bpe_1000即 1000 词 BPE 词表版本供后续token_typeword之外的模式复用。三、训练流水线run.sh 与 asr.sh 的 stage 结构3.1 入口命令run.sh 是配方的入口默认配置如下train_settrain valid_setdevel test_setstest devel asr_configconf/train_asr.yaml ./asr.sh \ --lang en \ --ngpu 1 \ --use_lm false \ --nbpe 5000 \ --token_type word \ --feats_type raw \ --gpu_inference true \ --max_wav_duration 30 \ --feats_normalize utterance_mvn \ --inference_nj 8 \ --inference_asr_model valid.acc.ave_10best.pth \ --asr_config ${asr_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} $关键参数解读参数取值作用--token_type wordword使用词级词表data/en_token_list/word/tokens.txt不训练 BPE意图标签作为一个独立词进入词表--feats_type rawraw直接消费 16 kHz 原始波形前端在训练时在线提取dump/raw--feats_normalize utterance_mvn逐句 MVN该配方不使用全局 MVN 统计而是逐句均值方差归一化跳过 stage 10 的 global_mvn 汇总--max_wav_duration 3030 秒stage 4 中过滤时长超出范围的句子VoxCeleb 音频普遍较短此处放宽上限--inference_asr_model valid.acc.ave_10best.pth10 best 平均解码时使用验证集准确率前 10 名 epoch 的平均权重模型与 README 中实验名valid.acc.ave_10best对应--use_lm false关闭 LM跳过 stage 6~8 的语言模型训练只训练 ASR 模型--gpu_inference trueGPU 解码配合--inference_nj 8并行 8 个解码任务3.2 asr.sh 的 stage 流程asr.sh 是 ESPnet2 的标准 ASR 模板与本配方相关的 stage 为Stage 1调用local/data.sh准备data/{train,devel,test}Stage 3feats_typeraw时用scripts/audio/format_wav_scp.sh规范化wav.scp统一格式与采样率生成dump/raw/org/*Stage 4按min/max_wav_duration与utt2num_samples过滤过长/过短句子并删除空文本Stage 5token_typeword时通过espnet2.bin.tokenize_text --write_vocabulary true从lm_train.txt统计词级词表词表首行固定为blankCTC blank / ignore index末行为sos/eosStage 10以--collect_stats true运行espnet2.bin.asr_train收集 shape 统计由于--feats_normalize utterance_mvn会跳过 sum 统计的聚合Stage 11加载--config conf/train_asr.yaml进行正式训练Stage 12~13分别对test与devel解码并调用local/score.sh完成意图准确率、Macro F1 与 WER 评测。四、核心实验配置详解结果文档记录了两组 Conformer 实验对应两份配置文件。两者均采用编码器 Transformer 解码器 Specaugment 谱增强的联合建模结构差异在于输入表示与模型规模。4.1 实验一Conformer 编码器 Transformer 解码器谱增强配置文件conf/tuning/train_asr_conformer.yaml完整内容如下# network architecture # encoder related 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: conv2d normalize_before: true macaron_style: true pos_enc_layer_type: rel_pos selfattention_layer_type: rel_selfattn activation_type: swish use_cnn_module: true cnn_module_kernel: 31 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 optim: adam optim_conf: lr: 0.0002 scheduler: warmuplr # pytorch v1.1.0 required #Tune warmup steps scheduler_conf: warmup_steps: 25000 max_epoch: 50 model_conf: ctc_weight: 0.3 lsm_weight: 0.1 length_normalized_loss: false extract_feats_in_collect_stats: false specaug: specaug specaug_conf: apply_time_warp: true time_warp_window: 5 time_warp_mode: bicubic apply_freq_mask: true freq_mask_width_range: - 0 - 30 num_freq_mask: 2 apply_time_mask: true time_mask_width_range: - 0 - 40 num_time_mask: 2 best_model_criterion: - - valid - acc - max keep_nbest_models: 10配置要点编码器12 层 Conformer隐藏维度 512、8 头注意力、前馈内维 2048input_layer: conv2d作为子采样前端rel_pos相对位置编码 rel_selfattn相对自注意力 macaron 风格的双前馈结构CNN 模块卷积核为 31解码器6 层标准 Transformer线性内维 2048优化策略Adamlr2e-4 WarmupLR25000 步预热最多 50 epoch模型损失ctc_weight: 0.3表示 CTC 与 attention 损失的混合训练权重lsm_weight: 0.1为 label smoothing 系数Specaugment时间扭曲窗口 5bicubic 插值 2 条频带掩码宽度 0~30 2 条时域掩码宽度 0~40与原文档with spectral augmentation的描述一致模型选择按验证集acc最大值挑选 best modelkeep_nbest_models: 10保留 10 个最优 epoch正是解码端valid.acc.ave_10best.pth的来源。由于该实验使用feats_typerawutterance_mvn音频前端为 ESPnet2 内置的在线 FBank 提取配合--feats_normalize utterance_mvn做逐句归一化不依赖外部 SSL 特征。结果文档同时注明该模型有预训练权重发布于 Hugging Faceespnet/siddhana_slue_asr_train_asr_conformer_raw_en_word_valid.acc.ave_10best可直接下载用于推理对照。4.2 实验二Conformeroutput_size 256 冻结 wav2vec 2.0 上游配置文件conf/tuning/train_asr_wav2vec2_conformer_small.yaml。该文件与 conf/train_asr.yamlrun.sh默认引用的配置内容一致核心差异在于引入 s3prl 前端与参数冻结batch_type: numel batch_bins: 6000000 encoder: conformer accum_grad: 2 encoder_conf: output_size: 256 attention_heads: 4 linear_units: 1024 num_blocks: 12 ... input_layer: conv2d2 decoder: transformer decoder_conf: attention_heads: 4 linear_units: 2048 num_blocks: 6 ... optim: adam optim_conf: lr: 0.002 weight_decay: 1.0e-06 scheduler: warmuplr scheduler_conf: warmup_steps: 5000 max_epoch: 100 freeze_param: [ frontend.upstream ] frontend: s3prl frontend_conf: frontend_conf: upstream: wav2vec2_large_ll60k download_dir: ./hub multilayer_feature: True preencoder: linear preencoder_conf: input_size: 1024 # 若更换 upstream需同步修改此值 output_size: 80与实验一的结构性差异SSL 前端frontend: s3prl加载wav2vec2_large_ll60k上游模型提取帧级特征multilayer_feature: True聚合多层输出再经线性 preencoder 从 1024 维投影到 80 维作为 Conformer 的输入freeze_param: [frontend.upstream]冻结 wav2vec 2.0 全部参数只训练 preencoder 与下游 ASR 模型——这是一种自监督特征 轻量判别头的半微调方案更小的编码器output_size: 256、4 头注意力、linear_units: 1024input_layer: conv2d22 步下采样批处理与优化batch_type: numelbatch_bins: 6000000按 600 万个样本点动态攒批、accum_grad: 2梯度累积、lr2e-3 配 5000 步 warmup、最多 100 epoch——比实验一更长的训练预算以弥补冻结特征的表达上限Specaugment 与模型选择标准与实验一完全相同。该配置同样适用extract_feats_in_collect_stats: false即 stage 10 收集统计时生成 dummy stats 而非真实前向提特征加快统计阶段。4.3 备选Conformer Hugging Face 文本后编码器配方中还提供了一份 conf/tuning/train_asr_conformer_nlu.yaml它在实验一结构之上增加postencoder: hugging_face_transformersbert-base-uncased经freeze_param冻结用 BERT 对解码器输出做文本语义后处理适合意图类别依赖上下文语义的场景conf/tuning/train_asr_conformer_s3prl.yaml则是实验一与 s3prl 前端的组合变体。这些变体可作为后续调优的起点。五、意图评测脚本与指标计算5.1 评分流程local/score.sh 在 stage 13 被调用默认评测目录为inference_asr_model_valid.acc.ave_10best/{devel,test}依次执行三步local/score.py逐行比对score_wer/hyp.trn与ref.trn的第一个 token即意图标签计算准确率同时把意图词剔除后写出hyp_asr.trn/ref_asr.trn供 WER 评测local/generate_asr_files.py生成纯 ASR 评测文件local/f1_score.py基于sklearn.metrics.classification_report输出逐类 Precision / Recall / F1并额外打印限定labels[Neutral, Positive]的报告剔除样本极少的 Negative 类最终返回 macro 平均 F1。最后score.sh用 sclite 对剔除意图词后的*_asr.trn计算 WER结果写入score_wer/result_asr.txt并 grep 出Avg/SPKR行。5.2 评测口径说明从 local/score.py 源码看意图准确率定义为1 - (error / len(hyp_lines))其中error是逐行首 token 不匹配的句子数与逐行严格相等比较——这意味着意图标签词表中空格必须预先处理数据准备时已将空格替换为下划线。f1_score.py的 Macro F1 使用f1_score(..., averagemacro)对类别不平衡非常敏感。六、实验结果以下结果完整继承自 README.md评测集为 devel954 条。实验一Conformer 编码器 Transformer 解码器谱增强datasetSntIntent Classification Accuracy (%)Intent Classification Macro F1 (%)inference_asr_model_valid.acc.ave_10best/devel95480.239.7逐类分类报告LabelSntPrecRecallF1Neutral784859389Positive167402430Negative3000实验二Conformeroutput_size 256 冻结 wav2vec 2.0 上游datasetSntIntent Classification Accuracy (%)Intent Classification Macro F1 (%)inference_asr_model_valid.acc.ave_10best/devel95479.044.0逐类分类报告LabelSntPrecRecallF1Neutral784888787Positive167464344Negative3000两组结果可以读出几点信息类别高度不平衡是主导因素devel 集中 Neutral 占 784/954Positive 仅 167Negative 只有 3 条。两组的 Accuracy80.2% / 79.0%与 Macro F139.7% / 44.0%之间的落差正是 Neutral 高召回压制了宏观指标实验二在 Accuracy 上略低 1.2 个百分点但 Positive 类的 Precision40 → 46与 Recall24 → 43均明显更高Macro F1 提升 4.3 个百分点——冻结 wav2vec 2.0 特征 更小的 Conformer 反而对少数类更友好Negative 类两例均为 3 条样本从源码结构看其指标无统计意义f1_score.py中额外打印限定[Neutral, Positive]的报告也印证了这一点。七、复现与扩展建议基于当前仓库的配方结构复现路径为按 db.sh 设置VOXCELEB指向官方数据包含LICENSE.txt、三个 TSV 与fine-tune_raw/、dev_raw/、test_raw/音频在egs2/slue-voxceleb/asr1/下运行bash run.sh可按--asr_config conf/tuning/train_asr_conformer.yaml切换实验配置关注exp/asr_*/inference_asr_model_valid.acc.ave_10best/{devel,test}/score_wer/下的result_asr.txtWER、意图准确率与 Macro F1 输出。若要扩展该配方可参考的方向包括在train_asr_conformer_nlu.yaml中更换 BERT 后编码器、用--speed_perturb_factors做语速扰动情感任务需谨慎可能破坏韵律线索、或在f1_score.py的逐类报告中纳入类别加权 F1 以缓解Neutral类主导指标的问题。八、相关文件索引文件作用README.md实验环境与结果记录本文主体依据run.sh配方入口默认超参asr.shESPnet2 标准 ASR 流水线模板db.sh语料路径配置需手动填VOXCELEBlocal/data.sh数据下载与目录整理local/data_prep_slue.pyTSV → Kaldi 风格数据目录转换local/score.sh意图 WER 评分入口local/score.py意图准确率计算local/f1_score.py逐类报告与 Macro F1conf/train_asr.yaml默认训练配置wav2vec 2.0 冻结上游 Conformer 256conf/tuning/train_asr_conformer.yaml大模型 Conformer 调优配置conf/tuning/train_asr_wav2vec2_conformer_small.yaml小模型 wav2vec 2.0 配置与默认一致conf/tuning/train_asr_conformer_nlu.yaml附加 BERT 后编码器的 NLU 变体赞分享人工智能语音音频深度学习NLP【免费下载链接】espnetEnd-to-End Speech Processing Toolkit项目地址https://gitcode.com/gh_mirrors/es/espnet点击查看免费下载相关推荐Joplin AI Chat为插件提供稳定 LLM 调用接口的 Provider 抽象与隐私守卫设计Joplin AI Chat为插件提供稳定 LLM 调用接口的 Provider 抽象与隐私守卫设计 Joplin 的核心并不内置聊天界面而是向插件和内置功人工智能语音音频深度学习NLP情感语音合成SenseVoice情感识别与CosyVoice生成联动方案情感语音合成SenseVoice情感识别与CosyVoice生成联动方案 引言语音交互的情感鸿沟 你是否遇到过这样的场景智能助手用冰冷的语调播报您的亲人人工智能大模型语音音频微调本地部署Zap-GPT语音识别应用语音转文本与情感分析Zap GPT语音识别应用语音转文本与情感分析 在数字化沟通日益频繁的今天传统文字输入已难以满足高效交互需求。Zap GPT Free作为一款集成ChatG上一篇终极养肝神器FGO-py全自动助手让你的Fate/Grand Order游戏体验焕然一新下一篇5分钟快速上手lightline.vim让Vim界面更美观的终极指南 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
从浏览器密码库到Bitwarden:开源密码管理的完整实践指南 1. 从浏览器密码库搬到Bitwarden,值不值我搬到 Bitwarden 是在一个改密码改到崩溃的深夜。当时浏览器密码库里躺着四百多个账号,我自己能记住的不到十个,其余全靠自动填充续命。那天某站点曝出数据泄露,我挨个改密码,发… · 2026/9/25 5:15:28
TEN Framework 中基于 FFmpeg 的媒体解复用器扩展(ffmpeg_demuxer)实战指南 人工智能AI Agent多模态语音AI 应用 【免费下载链接】ten-framework Open-source framework for conversational voice AI agents 项目地址: https://gitcode.com/TEN-framework/ten-framework 点击查看 免费下载 导读
本文以 TEN Framework 官方示例扩展包 ffmpe… · 2026/9/25 5:15:28
中兴B860AV3.2-M刷机教程:S905L3线刷EmotnUI固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:25:50
EMC核心术语解析:EMI/EMS、RE/CS、EFT/ESD的物理本质与工程落地 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:25:50
USB流量分析实战:从HID协议到Wireshark/tshark还原键盘鼠标操作 1. 从一份USB流量里找到键盘敲出的FlagCTF流量分析里,USB流量算是杂项题中辨识度最高、套路最成熟的一类。题目通常给你一个.pcap或.pcapng文件,描述是"有人用键盘敲了一封信,但捕获文件出了点问题",或者干脆只留下一句… · 2026/9/25 6:25:43
零基础一小时C语言入门:从变量循环到数组指针的极简指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:25:31
CTF流量分析实战:USB键盘与鼠标流量提取与还原 CTF流量分析做了几年,USB这个方向真的是“老面孔”了。从入门赛到省级决赛,USB流量题几乎成了标配,尤其是键盘流量,几乎人手一把梭。但是很多人卡在不知道USB流量到底在说什么、键盘映射怎么处理、鼠标坐标怎么还原,更… · 2026/9/25 6:25:25
辉芒微MCU烧录校验全指南:从Hex到FMD-Link实操 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 6:25:25
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37