关于 nemotron-asr-finetune
nemotron-asr-finetune 是用于规划 Nemotron Speech/Riva ASR 域适配的编排技能,面向希望改善特定领域或语言识别效果的用户。它先评估数据、指标与资源,再选择成本足够低的方案并将执行阶段交给相应子技能。
主要功能
- 01界定领域、语言、指标与资源
- 02比较词语增强、语言模型和微调路径
- 03规划数据准备、训练与评估
- 04检查训练前数据和环境
- 05协调部署及后续迭代
适用场景
- 01为特定领域规划 ASR 准确率提升
- 02根据数据量选择适配方案
- 03安排 WER 评估与遗忘检查
- 04制定模型微调和部署步骤
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ nvidia/ skills --skill nemotron-asr-finetune安装后在 Claude Code 中输入/nemotron-asr-finetune确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BENCHMARK.mdskill-card.mdskill.oms.sigassets/experiment-ledger-template.mdevals/EVAL.mdevals.jsonreferences/path-selection.mdplanning-answers.mdsub-skills.mdworkflow.mdscripts/link-nemo-subskill.shmain.py详细介绍
Nemotron Speech ASR 定制 — 编排技能
注意:“Nemotron Speech”是 NVIDIA 目前在文档中称为 Riva / Riva NIM 的产品面向公众使用的名称;声学模型使用 NVIDIA NeMo 进行训练和微调。命令、配置路径、导入语句和文档 URL 仍使用 “Riva” / “NeMo”——这只是品牌名称变更。不要重命名它们。
此技能的用途
这是一项高层编排技能,不是分步训练手册。对于诸如*“我想针对我的领域/语言微调 ASR”*这样的目标,它的任务是:
- 界定问题范围(真实音频量、目标评估集、延迟/硬件预算、语言/领域)。
- 选择成本最低且足够有效的路径——词语增强、n-gram LM 融合或微调——只有在质量不达标时才升级方案。
- 将每个阶段交由合适的子技能处理(数据生成、训练、评估、部署/优化)。
- 在过程中回答成本/时间/数据相关问题(要达到 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”——请勿更名。