Nemotron 3.5 ASR:为你的语言、领域或口音进行微调
How to Fine-Tune Nemotron 3.5 ASR for Your Language, Domain, or Accent
Nemotron 3.5 ASR 是一个 600M 参数的多语言流式语音识别模型,单个检查点覆盖 40 种语言-地区(含英、西、德、法、意、日、韩、中、阿拉伯等)。采用 Cache-Aware FastConformer 编码器与 RNNT 解码器,缓存内部状态避免重复计算,实现低延迟流式转录且不损失精度。模型原生输出带标点和大写的生产级文本,无需后处理。支持指定语言(target_lang=es-ES)或自动语言检测(target_lang=auto)。通过注意力上下文大小(att_context_size)可在推理时直接调节延迟-准确率权衡,范围从 80ms 到 1.12s,无需重新训练。模型以 NeMo 检查点形式发布,可用于微调以适配特定语言、领域或口音。
一个模型搞定40种语言的实时语音转文字,NVIDIA还给了完整微调代码和实测数据,做语音Agent和字幕的可以照着抄作业。
隆重推出 NVIDIA Nemotron 3.5 ASR,流式多语言:一个 600M 参数的语音转文本模型,可从单个 checkpoint 转写 40 个语言区域,实时完成,并内置标点与大小写。它是广受欢迎的 Nemotron 3 ASR 模型(仅支持英语)的继任者,后者于今年早些时候在 Hugging Face 上以及以 NIM 形式发布。自发布以来,Nemotron 3 ASR 已通过 Artificial Analysis 的独立基准验证,其在所有流式 ASR 模型中延迟排名第 2——语音结束后仅需 0.07 秒即可给出最终转写——并在 AA-WER 流式指数与最终转写时间排行榜中位于"最具吸引力象限",在准确率与延迟的综合权衡上跻身最佳模型之列。该模型采用 Cache-Aware FastConformer-RNNT 架构,可流式处理音频,而无需进行那种让大多数流式 ASR 变慢的冗余重复计算——因此你能同时获得低延迟和高准确率,而不必牺牲其一。Nemotron 3.5 ASR 以开放权重形式在 Hugging Face 上发布——你可以检查、微调并部署它,无需 API 依赖或按调用计费。除非你主动选择,否则不会有数据离开你的基础设施。而且由于它是一个强大的基础模型,你可以针对自己的语言、领域或口音对其进行微调。本文后半部分将详细讲解具体做法。
当今多语言语音识别的问题
如果你曾经构建过需要转写语音的产品,你很可能遇到过以下这些障碍之一:
- 多语言税。你想支持多种语言,于是把 40 个不同的模型——或者 40 个不同的厂商 API——拼凑在一起,每一个都有自己的怪癖、延迟特性和计费方式。你的基础设施变成了一座一次性集成的博物馆。
- 流式与准确率的权衡。实时字幕需要低延迟,但大多数“流式”ASR 系统是靠反复重新处理重叠的音频窗口来伪造流式的。这既消耗算力,又增加延迟。把延迟调低,准确率就会断崖式下跌。
- 后处理流水线。ASR 的原始输出往往是一整面没有标点、全小写的文字墙。你得再挂上一个模型来处理标点和大小写,于是又多了一个活动部件。
- “已知语言”假设。许多系统要求你事先告诉它是什么语言。但如果是客服热线,来电者在句子中间就在英语和西班牙语之间切换呢?
Nemotron 3.5 ASR 的构建目标,就是把这四个问题全部收拢进一个模型。
它能做什么
一个模型,覆盖 40 个语言区域。 单个 600M 参数的 checkpoint 即可转写英语(美国/英国)、西班牙语(美国/西班牙)、德语、法语(法国/加拿大)、意大利语、阿拉伯语、日语、韩语、葡萄牙语(巴西/葡萄牙)、俄语、印地语、土耳其语、越南语、荷兰语、乌克兰语、波兰语、芬兰语、普通话、捷克语、保加利亚语、斯洛伐克语、瑞典语、克罗地亚语、罗马尼亚语、爱沙尼亚语、丹麦语、匈牙利语、挪威博克马尔语、挪威尼诺斯克语、希伯来语、希腊语、立陶宛语、拉脱维亚语、马耳他语、斯洛文尼亚语和泰语。无需按语言分别部署,无需切换模型。
实时流式处理,做对了。 该模型基于 Cache-Aware FastConformer 编码器构建。传统的“缓冲式”流式处理会在每一步重新处理重叠的音频块,反复做同样的工作。而该模型则缓存编码器的内部状态并加以复用——每个音频帧只被处理一次,没有重叠。其结果是计算量和端到端延迟大幅降低,且没有精度损失。
原生支持标点和大写。 输出即为可直接用于生产的文本——正确的大小写、逗号、句号、问号——直接来自模型。无需单独的标点恢复步骤。
语言条件控制,由你选择。 你可以用两种方式运行它:
- 在你已知输入语言时告知模型(
target_lang=en-US)——通常精度最佳。 - 让模型自行检测语言(
target_lang=auto)——在你不知道语言时,模型会检测语言并据此进行转写。
工作原理(2 分钟速览版)
该模型有两个主要部分:
一个缓存感知的 FastConformer 编码器(24 层)。FastConformer 是 Conformer 架构的高效演进版本,具有线性可扩展的注意力机制。"缓存感知"部分正是流式处理的魔法所在:编码器会缓存来自先前帧的自注意力和卷积激活值,因此当新音频到来时,它只计算真正新增的部分。不会重新计算任何内容。
一个 RNNT(循环神经网络转录器)解码器。RNNT 是流式 ASR 的主力解码器——它随着音频的流入逐帧输出文本,这正是实时转写所需要的。
在此基础上,该模型还加入了基于提示词的语言 ID 条件控制:一个语言信号与音频一同输入,这使得同一组权重能够将其输出专门适配到目标语言——或者在 auto 模式下,自行推断语言。
它是在海量语音数据上训练的,涵盖所有支持的语言,使用了公共和专有数据的混合,并统一规范为带标点、大小写正确的文本。
一个值得了解的调节参数:att_context_size
流式 ASR 本质上是在多快输出文本与模型在最终确定前能“偷看”多少未来音频之间的一种权衡。Nemotron ASR 通过注意力上下文大小直接体现了这一点:
| 注意力上下文 | 块大小(延迟) | 使用场景 |
|---|---|---|
[56, 0] | 80ms(超低) | 超低延迟语音智能体 |
[56, 1] | 160ms(低) | 交互式语音智能体、对话式 AI |
[56, 3] | 320ms(均衡) | 对话式 AI、实时字幕 |
[56, 6] | 560ms(中等) | 高准确率且延迟合理 |
[56, 13] | 1.12s(高) | 最高准确率,高延迟 |
同一个 checkpoint 覆盖整个频谱——你在推理时选择工作点,无需重新训练。
几分钟内即可试用
该模型以 NeMo checkpoint 形式发布。克隆 NeMo 分支,并将流式推理脚本指向你的音频:
git clone https://github.com/NVIDIA-NeMo/NeMo.git
使用已知语言进行转写:
python ${NEMO_ROOT}/examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py \
model_path=${MODEL_PATH} \
dataset_manifest=${MANIFEST_PATH} \
output_path=${OUTPUT_FOLDER} \
target_lang=es-ES \
att_context_size="[56,3]" \
strip_lang_tags=true
或者让模型检测语言:
python ${NEMO_ROOT}/examples/asr/asr_cache_aware_streaming/speech_to_text_cache_aware_streaming_infer.py \
model_path=${MODEL_PATH} \
dataset_manifest=${MANIFEST_PATH} \
output_path=${OUTPUT_FOLDER} \
target_lang=auto \
att_context_size="[56,3]" \
strip_lang_tags=true
音频应为单声道 .wav。manifest 是标准的 NeMo JSON-lines 文件:
{"audio_filepath": "/path/to/clip.wav", "duration": 4.27, "text": "reference transcript"}
模型会在每个完整句子结束时自动预测 language_tag,即“This is a test sample. ”。“strip_lang_tags=True”会移除语言标签以提高可读性。
深度解析:为你的语言微调 Nemotron ASR
Nemotron 3.5 ASR 开箱即用表现强劲——但它的训练数据混合中,某些语言的数据量远超其他语言。长尾语种仍有提升空间,而几小时的领域内音频加上正确的配方,就能弥补其中令人惊讶的一大块差距。
为了更具体地说明,我们做了一个完整示例:取基础模型,用两种中等资源量的欧洲语言——希腊语和保加利亚语——对它进行强化,然后在留出数据上如实评估。下面的结果就来自这次运行。本节只是高层概览,编码示例放在配套的 GitHub 仓库 中。等我们发布覆盖整个流程的智能体 SKILL.md 后,这篇博客也会相应更新。
为什么要微调?
以下几种情况会带来回报:
- 强化长尾地区语言。预训练数据较少的语言收益最大。
- 领域专业知识或专业词汇基础模型很少见到的医学、法律、金融或技术词汇。
- 口音、方言和声学环境。电话语音、远场、车载,或特定说话人群。
- 新语言。从零开始引导一个尚未覆盖的地区语言。
微调威力预览
🎥 视频讲解:在 YouTube 上观看
本演练演示了多语言流式推理、延迟与准确率的权衡、部署选项,以及下文所述的微调工作流。
方案一览
整个工作流共五步:
- 将训练器指向目标语言的打包语音数据——无需逐文件解包,由 NeMo/Lhotse 高效流式处理。
- 从基础检查点(
init_from_nemo_model)出发,使用相同的 Cache-Aware FastConformer-RNNT 方案进行微调,并以每个音频片段对应的语言标签作为条件。 - 在模型从未见过的留出集上评估——采用与你将要部署时相同的低延迟流式设置(例如
att_context_size=[56,0],80ms chunk;0ms lookahead)。 - 在语言表现较弱的地方补充更多数据并重新训练。
- 导出并部署微调后的检查点。
第 1 步——数据
我们从公开多语言语料库(Granary、Common Voice、FLEURS)中汇集了一个覆盖两种语言(希腊语和保加利亚语)的均衡混合数据集,约 2000 小时,保存为打包的 NeMo/Lhotse 分片。其中最重要的两个细节:
- 每个片段都带有一个
target_lang标签——正是它驱动了模型基于提示词的语言条件控制,因此把标签写对(并使用模型能够识别的取值)至关重要。 - 与基础模型的文本风格保持一致——带标点、大小写规范的转写文本,因为这才是模型所产出的内容。
留出的 FLEURS 测试集划分(未参与训练)为我们提供了每种语言真实、贴近实际场景的基准评测。
第 2 步——训练
对流式 RNNT 模型进行一次直接的全量微调,由固定的步数预算驱动(这是在流式/可迭代数据上进行调度的正确方式)。它可在单块 GPU 上运行以快速跑一遍,并能干净地扩展到多 GPU 以进行更完整的训练。在这样的小数据集上,一个 epoch 只需几分钟,而非数小时。
第 3 步——评估
我们在留出的 FLEURS 测试集上测量了词错误率,采用 80ms 分块的流式模式——这是最严苛的条件,不允许"偷看"未来音频。相比基础模型的提升很大,尤其是对那些起初表现最弱的语言:
| 语言 | 基础模型 | 微调后 | WER 相对提升 |
|---|---|---|---|
| 🇬🇷 希腊语 | 35 | 24 | 32% |
| 🇧🇬 保加利亚语 | 22 | 15 | 31% |
在留出的 FLEURS 测试集上的原始 WER(%),最低延迟流式模式。基础模型和微调模型采用相同的评估方式。
在基础模型中错误率较高的语言,经过短暂微调后变得真正可用了——保加利亚语的错误率下降了一半以上。
第 4 步——在有帮助的地方扩展数据
为了测试更多数据能带来多大提升,我们随后混入了约 2,000 小时的议会演讲数据(MOSEL/VoxPopuli),这是 Granary Dataset 的一部分,将训练池从约 290 小时扩大到约 2,300 小时。即使在那次更长训练进行到一半时,最弱的语言也进一步改善(例如保加利亚语降至 20 多小时段),这印证了一个显而易见的杠杆:更多母语数据会持续带来帮助——不过不同语言和领域的收益并不均衡,所以要靠测量而不是假设。
第 5 步——部署
微调后的模型与基座模型架构相同,因此可以直接接入相同的服务路径,并在推理时通过 att_context_size 选择你的延迟/准确率工作点,与第一部分完全一致。
我们的收获
- 微调对资源匮乏的语言具有变革性意义——最大的收益出现在基座模型最薄弱的地方。
- 在部署延迟下、在留出数据上评估。训练集分数只会让你自我感觉良好;一个在 0 ms 前瞻下运行的独立测试集才能告诉你真相。
- 把语言标签弄对。提示词条件化很强大,但对语言标签不匹配毫不宽容。
- 保护其他语言。在多语言模型上做专精时,混入一部分该模型其他语言的数据(“回放”)并重新检查它们,这样你就能强化目标语言区域,而不会侵蚀其余部分。
- 更多数据有帮助,但不均衡。增加小时数确实稳定地提升了大多数语言;有一种语言停滞了——这提醒我们,领域匹配与原始数量同样重要。
📦 完整演练——数据准备脚本、训练配置、确切命令以及完整的基准测试数字——都在配套的 GitHub 仓库中。本节是概览;仓库才是实操。
对于生产环境部署,请关注本月晚些时候发布的 NIM 版本,它将提供 gRPC 流式传输,并支持 NVIDIA Ampere、Hopper、Blackwell、Lovelace、Turing、Volta 和 Jetson。
你可以用它构建什么
以下是该模型解锁的一些用例:
- 亚秒级语音智能体 —— ASR → LLM → TTS 循环中,语音转文字这一环不再是瓶颈。查看我们的语音智能体示例。
- 实时多语言会议字幕 —— 单一数据流,参与者使用不同语言,字幕实时生成。
- 全球规模的呼叫中心分析 —— 一个 ASR 后端,取代按语言分散的多个供应商。
- 实时字幕 + 翻译,适用于直播和活动。
- 端侧转录,在 Jetson 上运行,适用于隐私敏感或离线环境。
准备好用单一流式 ASR 模型构建多语言语音应用了吗?
🤗 试用 Nemotron 3.5 ASR:nvidia/nemotron-3.5-asr-streaming-0.6b
🧠 使用 NVIDIA NeMo 运行并微调:Nemo Framework
📚 探索训练示例:Fine-Tuning Notebook
无论你是在构建语音智能体、多语言字幕系统、联络中心分析,还是端侧语音应用,Nemotron 3.5 ASR 都提供了一个单一的多语言模型,可针对你的用例进行部署、定制和微调。
Nemotron 3.5 ASR 可通过合作伙伴生态获取:
- 云服务提供商:Microsoft Foundry
- 推理服务提供商:Baseten、DeepInfra,Eigen AI、fal(ASR)、ModelScope
- AI 云与服务:Together AI
我们很期待看到你构建的作品。欢迎在模型讨论页面分享你的基准测试、微调结果和语言适配成果:
💬 模型讨论:https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b/discussions
模型:https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b
许可证:OpenMDW-1.1
运行时:NeMo 26.06+
来源:Hugging Face:Blog(RSS) · huggingface.co