mcpField
N
nemotron-asr-finetune

nemotron-asr-finetune

github.com/nvidia开发3.8k190 次安装今天更新
代码仓库

关于 nemotron-asr-finetune

nemotron-asr-finetune 是用于规划 Nemotron Speech/Riva ASR 域适配的编排技能,面向希望改善特定领域或语言识别效果的用户。它先评估数据、指标与资源,再选择成本足够低的方案并将执行阶段交给相应子技能。

主要功能

  1. 01界定领域、语言、指标与资源
  2. 02比较词语增强、语言模型和微调路径
  3. 03规划数据准备、训练与评估
  4. 04检查训练前数据和环境
  5. 05协调部署及后续迭代

适用场景

  1. 01为特定领域规划 ASR 准确率提升
  2. 02根据数据量选择适配方案
  3. 03安排 WER 评估与遗忘检查
  4. 04制定模型微调和部署步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/skills --skill nemotron-asr-finetune

安装后在 Claude Code 中输入/nemotron-asr-finetune确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BENCHMARK.md
skill-card.md
skill.oms.sig
assets/
experiment-ledger-template.md
evals/
EVAL.md
evals.json
references/
path-selection.md
planning-answers.md
sub-skills.md
workflow.md
scripts/
link-nemo-subskill.sh
main.py

详细介绍

Nemotron Speech ASR 定制 — 编排技能

注意:“Nemotron Speech”是 NVIDIA 目前在文档中称为 Riva / Riva NIM 的产品面向公众使用的名称;声学模型使用 NVIDIA NeMo 进行训练和微调。命令、配置路径、导入语句和文档 URL 仍使用 “Riva” / “NeMo”——这只是品牌名称变更。不要重命名它们。

此技能的用途

这是一项高层编排技能,不是分步训练手册。对于诸如*“我想针对我的领域/语言微调 ASR”*这样的目标,它的任务是:

  1. 界定问题范围(真实音频量、目标评估集、延迟/硬件预算、语言/领域)。
  2. 选择成本最低且足够有效的路径——词语增强、n-gram LM 融合或微调——只有在质量不达标时才升级方案。
  3. 将每个阶段交由合适的子技能处理(数据生成、训练、评估、部署/优化)。
  4. 在过程中回答成本/时间/数据相关问题(要达到 X% WER 需要多少小时、合成数据与真实数据的对比、L40S 与 H100 的对比、预期成本)。

它负责制定计划和安排流程;子技能负责执行。如果尚不存在所需的子技能,此技能会将其标记为占位符并提供临时指导。

适用场景

对于任何希望让 Nemotron Speech / Riva ASR 模型更好地适用于特定领域或语言的请求,都可以使用此技能——例如提升准确率、降低 WER、添加语言或规划微调。即使用户指定了某种技术,也应从这里开始:先将其视为候选方案,待编排步骤确认它是成本最低且足够有效的路径后,再安排相应的子技能。

编排工作流

运行以下循环;每个阶段都会注明调用的子技能。完整详情见 references/workflow.md。

#阶段具体操作子技能
1说明目标明确目标:领域/语言、错误类型、指标。编排(此技能)
2澄清并确定范围提出需求探索问题:有多少真实音频?目标评估集是什么?延迟/硬件预算是多少?部署目标是什么?编排
3选择路径选择成本最低且足够的层级(增强 → n-gram LM → 微调)。只有质量未达标时才升级;在提出完整计划的同时进行实验。编排 → 研究/训练
4确保数据质量如果数据稀缺/嘈杂:使用合成数据(TTS)、适合 TTS 的格式、噪声分析/采集、混合数据、为供应商样本评分;将客户数据对齐到训练格式;标记缺失的真实数据。SDG / 数据
5训练应用训练方案(配置、超参数、回放/课程学习、GPU/OOM 预检)并运行。研究 / 训练
6评估在领域数据集上计算归一化 WER,并在通用数据集上检查 A/B 遗忘;根据错误进行分析,找出下一步可采取的措施。评估
7继续循环或交付如果未达目标,则带着针对性数据回到阶段 4/5;否则选择/平均检查点。继续循环前先征求用户意见。编排
8部署导出到 NIM/HF,热切换检查点并提供服务。部署 / 优化

阶段 4–8 是微调路径(data → NeMo train → NeMo eval → Riva deploy)。成本更低的层级(增强、自定义词汇表、n-gram LM)走由单个子技能负责的更短分支——不要强行让它们走完整个循环。参见 references/workflow.md 中按层级划分的分支表(§3b)。

训练前(阶段 5),运行数据集质量预检(§4a):验证/转换音频至 16 kHz;如用户要求,则通过运行参考预训练模型,并根据提供的真实标注检查 WER,来审核转录质量。参见 references/workflow.md §4a。

同样在训练前(阶段 5),运行环境/依赖预检(§4b):如果未提供 NeMo,则拉取最新的 main(本地执行)或最新发布的容器标签(容器执行)。如果已提供 NeMo 检出版本/安装版本,检查其版本,但仍建议切换到最新的 main(存在过时风险)并询问用户——如果用户坚持使用所提供的版本,则继续使用,并且只有在确实遇到具体的版本问题(例如不支持某项功能)时才重新考虑。参见 references/workflow.md §4b。

整个过程中,回答**“过程中”**的问题(数据量、合成数据与真实数据、达到某个 WER 目标所需的小时数、成本、GPU 选择)——参见 references/planning-answers.md。

此技能调用的子技能

详细的注册信息、调用方式和交接约定见 references/sub-skills.md。

角色(按架构定义)用途要调用的子技能
研究 / 训练NeMo 配置、训练方案、微调、检查点平均;也负责 NeMo 侧的词语增强和 n-gram LM 试点nemo-speech-asr-finetune
SDG / 数据设计合成转录文本/文本、噪声分析、供应商数据影响、数据混合data-designer(合成文本;音频通过 nemotron-speech 中的 TTS 生成);占位符: asr-data-profiling
评估归一化 WER、A/B 遗忘、错误分析离线文件 WER → nemo-speech-asr-finetune;服务端点 WER → nemotron-speech
部署 / 优化NIM/Riva 导出、检查点切换、NIM 构建优化、服务nemotron-speech

如果子技能不可用,请说明这一点,提供参考资料中的临时指导,并继续执行计划。

选择路径(从成本最低开始)

第 3 阶段的范围界定会选出能够满足目标的最低成本方案。摘要;完整的、有文档依据的路径阶梯见 references/path-selection.md。

  • 词语增强——适用于范围有限的一组已知词语、名称或术语。有两种产物不同的实现方式: 试点(NeMo):通过 GPU-PB 上下文偏置(nemo-speech-asr-finetune)离线验证效果;或 部署(Riva):通过运行时 boosted_lm_score(nemotron-speech)将其部署——两者的分数体系不同,不要混用。两种方式都在运行时生效,均无需训练。详见 references/path-selection.md。
  • 自定义词汇 / 发音——适用于未登录词或始终发音错误的术语。在部署时应用。→ 部署子技能。
  • N-gram(KenLM)LM——适用于有文本但音频较少的领域表达 / 词序列。有两种以相同方式构建、但因架构而采用不同部署方式的实现: 试点(NeMo,NGPU-LM):离线验证效果(nemo-speech-asr-finetune);或 部署(Riva):将其部署(nemotron-speech)。对于 CTC,将试点语料库重新构建为 Riva 词级 LM——不要直接部署试点产物。对于 RNN-T/TDT 则相反:将试点的 .nemo 产物原样交给 Riva,无需重新构建。详见 references/path-selection.md。
  • 微调——适用于真实声学差异(口音、噪声、信道),且拥有足够的转录音频(NIM 指南:100 小时以上;只有在混合数据以避免灾难性遗忘的情况下,才可将约 10 小时视为最低门槛)。少于约 10 小时时,不要建议微调——应改为建议词语增强(灾难性遗忘 / 过拟合风险极高)。→ 研究 / 训练。
  • 从头训练 / 跨语言迁移——适用于没有合适检查点的新语言(最后手段)。→ 研究 / 训练。

路径排序和各模型的支持情况遵循 NVIDIA Speech NIM ASR 自定义指南: https://docs.nvidia.com/nim/speech/latest/asr/customization/customization.html。

核心原则

  • 先确定范围,再做选择。 在完成需求发现问题并测得基线之前,不要建议微调。
  • 选择足够满足需求且成本最低的路径。 只有在当前方案有确凿证据表明无法达到目标时,才升级到更高阶方案;在向用户说明完整微调计划的同时,也可以先尝试低成本方案。
  • 依据评估约定进行测量。 报告领域数据集上的归一化 WER,以及通用数据集上的 A/B 遗忘检查——不能只依据训练日志。
  • 训练前先验证。 第 5 阶段前运行数据集质量预检:验证 / 转换音频至 16 kHz;当用户提出要求时,将真实标注转录与参考模型的 WER 进行比较,以审核标注。不要在未经重采样或按要求未经审核的数据集上训练。详见 references/workflow.md §4a。
  • 训练前了解环境。 如果用户没有提供 NeMo,则拉取最新的 main(或最新发布的容器标签)。如果用户提供了 NeMo,则检查其版本,但仍建议使用最新的 main 并先询问用户——用户提供的代码检出版本始终有过时风险。如果用户坚持保留现有版本,不要提前拉取;只有实际遇到具体版本问题(例如功能不受支持)时才重新考虑。将已解决的问题记录在台账中。详见 references/workflow.md §4b。
  • 委派执行,不要重新实现。 将执行工作交给子技能;本技能专注于计划、排序,以及成本 / 时间 / 数据方面的解答。
  • 真实目标领域音频通常是瓶颈。 优先使用真实数据;使用合成数据补足已测得的差距,并单独加权,以便进行消融实验。
  • 额外的调优周期开始前,先征求用户意见;需要的子技能仍为占位内容时,也应如此。

信息来源

主题位置
NIM Speech 文档主页https://docs.nvidia.com/nim/speech/latest/index.html
ASR 自定义指南(方法、各模型支持情况)https://docs.nvidia.com/nim/speech/latest/asr/customization/customization.html
ASR 支持矩阵(模型和功能)https://docs.nvidia.com/nim/speech/latest/reference/support-matrix/asr.html
NeMo 微调(标志/配置)docs/source/asr/fine_tuning.rst,以及 nemo-speech-asr-finetune 子技能
Riva ASR 教程(增强、LM、微调)https://github.com/nvidia-riva/tutorials
将分词器扩展到新语言并进行声学微调https://github.com/nvidia-riva/tutorials/blob/main/asr-extend-tokenizer-to-newlang-ft-acoustic-model.ipynb

限制

  • 仅负责编排——执行由子技能完成。如果子技能还是占位内容,相关指南仅为临时方案,直至子技能就绪。
  • 训练阶段需要 GPU;部署/服务由 nemotron-speech 子技能负责。
  • 模型名称、配置路径、标志以及各模型的功能支持情况会随着 NeMo/Riva 版本而变化——请对照支持矩阵和当前检出版本进行核实。
  • 面向公众的品牌名称是 “Nemotron Speech”;命令、导入语句、配置路径和文档 URL 仍使用 “Riva” / “NeMo”——请勿更名。

评论

支持 Markdown