NVIDIA 发布了开放权重语音模型 Nemotron 3.5 Transcribe,同时推出 Granary v2 多语言数据清单和可复用的数据整理流水线。单个模型即可完成语音转写、说话人归属标注、翻译和音频问答。
该模型支持 40 种语言转写、其中 31 种语言与英语的双向翻译,以及 13 种语言的说话人归属标注。不同任务支持的语言有所不同,音频问答使用英语数据训练。
该模型可处理最长一小时的录音,标注最多八位说话人,并支持词级时间戳。针对同一段录音,可通过自然语言指令获得不同输出,例如“转写这段录音并标注每位说话人”“将这段音频翻译成英语”,或“这次会议做出了哪些决定?”

开源地址
模型合集:https://modelscope.cn/collections/nv-community/Nemotron-35-Transcribe
Granary v2 数据集:https://modelscope.cn/datasets/nv-community/Granary-v2
01、开始使用 Nemotron 3.5 Transcribe 和 Granary v2
通过 ModelScope 创空间体验 Nemotron 3.5 Transcribe 交互式演示,然后从 ModelScope 下载模型权重,并参照 vLLM 部署指南部署服务。若要适配您的领域,可从 ModelScope 上的 Granary v2 数据清单和医疗 ASR 案例研究入手,也可借助微调智能体技能,让编程智能体驱动整个流程。
模型与数据集
- 模型权重:https://modelscope.cn/collections/nv-community/Nemotron-35-Transcribe
- 交互式演示:https://modelscope.cn/studios/nv-community/Nemotron-3.5-Transcribe
- 数据清单:https://modelscope.cn/datasets/nv-community/Granary-v2
- 高保真子集:https://modelscope.cn/datasets/nv-community/Granary-HiFi
代码仓库与教程
- NVIDIA NeMo Speech GitHub:https://github.com/NVIDIA-NeMo/Speech
- NeMo Curator Granary v2 流水线:https://github.com/NVIDIA-NeMo/Curator/tree/main/tutorials/audio/granary_v2
- vLLM 部署指南:https://github.com/NVIDIA-NeMo/Speech/blob/main/docs/source/speechlm2/vllm_serving.rst
- 语音模型微调指南:https://github.com/NVIDIA-NeMo/Speech/blob/main/tutorials/speechlm2/finetuning/README.md
- 微调智能体技能:https://github.com/NVIDIA-NeMo/Speech/blob/main/.claude/skills/finetune-speech-llm/SKILL.md
本地 AI:
NVIDIA RTX 台式机笔记本电脑和 DGX Spark 上的本地 AI 最新进展:https://blogs.nvidia.com/blog/local-ai-rtx-spark-laptops-updates-models-agents-games/
02、多语言转写基准测试与推理效率
Nemotron 3.5 Transcribe 在英语转写、多语言说话人区分、重叠语音和真实通话评测中取得领先成绩。凭借约 40 亿激活参数,其转写准确率也接近开放权重模型中的最佳水平,兼顾识别性能与参数效率。
Open ASR:英语转写排名第一
Nemotron 3.5 Transcribe 在英语排行榜的开放权重模型中排名第一,平均词错误率(WER)为 5.33%。在模型卡所列的对比中,其七种语言的平均 WER 为 4.62%,长音频 WER 为 10.98%,两项均为参评开放权重模型中的最低值:

Artificial Analysis:以约 40 亿激活参数实现接近最佳水平的准确率
该模型以约 40 亿激活参数实现了 2.81% 的 AA-WER,与开放权重模型的最佳成绩仅相差 0.04 个百分点,而激活参数量约为其六分之一:

David AI:多语言说话人区分错误率最低
在覆盖 21 种语言的说话人区分评测中,该模型以 18.26% 的说话人区分错误率(DER)位列 14 个系统之首。在转写与说话人归属标注联合赛道中,该模型在开放权重模型中排名第一、总体排名第二:

VoiceArena:在完整会话与重叠语音中表现领先
在包含重叠语音及 2–8 位说话人的英语完整会话评测中,该模型以 32.4% 的 cpWER 在 14 个系统中排名第一,同时取得最低的词删除率:

Cekura:真实通话评测中在开放权重模型中排名第一
在包含噪声和不同口音的真实通话私有评测中,该模型使用推荐提示词时的 WER 为 2.48%,在开放权重模型中排名第一:WER 衡量转写错误,DER 衡量说话人归属标注与时间定位错误,cpWER 则在匹配说话人标签后统计转写错误。这三项指标均为数值越低越好。

03、模型架构与 Granary v2 数据流水线
Nemotron 3.5 Transcribe 将语音编码器与采用 Mamba–Transformer 混合架构的混合专家语言模型相结合。模型总参数量为 300 亿,每个 token 激活约 40 亿参数。
Sortformer 提供的说话人线索与声学特征一同输入语言模型,使模型能够在生成文本时标注每一轮发言的说话人。
要根据提示词生成不同形式的转写文本,模型还需要具有明确书面目标形式的训练数据。因此,基于 NVIDIA NeMo Curator 构建的 Granary v2 会为同一段录音生成三种相互对齐的转写形式:tn_raw 为经过文本规范化的逐字转写;
itn_raw 将数字等表达转换为常规书面形式,同时保留口语中的不流畅表达;itn_clean 则在此基础上进一步去除不流畅表达:除了转写文本,该流水线还会生成音频描述、语码混用语音中的外来词还原、音频问答对、上下文术语,以及带质量评分的译文,为不同任务提供训练标签。公开数据清单覆盖 48 种语言、16 个源语料库,共计 463,062 小时。
这些数字描述的是此次发布的数据集,并非 Transcribe 的完整训练数据组合或采样权重。源音频需遵循各语料库的原始许可单独下载,并遵守此次发布所公布的条款。
数据整理流程分为四个阶段:Metadata、ASR、Text 和 HiFi。Metadata 阶段对音频进行分段、跟踪说话人,并标注声学事件和语言。此次发布的源数据已完成分段,因此跳过了该阶段。
随后,ASR 阶段为每种语言指定主模型和回退模型;当主模型未通过幻觉检查时,切换至回退模型,并使用人工参考转写保留可信的拼写。
转写文本生成后,Text 阶段会衍生其他转写变体,并检查字符速率、幻觉模式和文本一致性。只有通过这些检查的记录,才会进入上下文术语和翻译生成环节。前三个阶段的关系如下图所示:

HiFi 阶段进一步过滤含有噪声、削波失真或多位说话人的片段,为 ASR 以外的任务保留高质量子集。
04、利用领域数据微调,提升医疗语音转写效果
医疗录音包含专业术语、药品名称和不同口音。即便通用语音模型能够识别发音,也未必能按要求准确写出术语。提示词可以提供上下文和书写规范,但对于仍然存在的识别错误,需要使用领域数据进行微调,让模型学习这些术语的发音和标准拼写。
NVIDIA 使用其语音模型训练与微调工具包 NeMo Speech,对 Nemotron 3.5 Transcribe 进行医疗语音适配。该案例研究测试了先优化提示词、再进行微调,能否提升印度医生和医学生录音的转写效果。
研究首先在提示词中明确英语、拉丁字母和转写格式,随后将约 153 小时合成语音、29 小时带口音英语和 63 小时医疗录音组合成适配数据。合成过程将标准书面形式与发音分开:例如,以“HbA1c”为标签,而将“H B A one C”输入语音合成器。
随后,训练会更新语音编码器和投影层,并通过 LoRA 适配语言模型,根据开发集结果选择检查点。完整流程在一块 NVIDIA GB300 上耗时约 14 GPU 小时。最终转写仅需一次模型前向处理,无需检索或后处理。
在完整的 Eka Care 基准测试中,WER 从开箱即用时的 30.8%,降至优化提示词后的 23.8%,再降至微调后的 11.8%:

完整基准包含 3,619 个片段,其中 855 个调优片段用于选择提示词和检查点,因此全量结果并非完全基于留出集的评测。在按说话人划分的 2,764 个留出片段上,微调将 WER 从最佳提示词基线的 22.44% 降至 12.17%,相对降低 45.8%,表明适配收益也能延伸至未参与调优的说话人。
05、本地部署与推理
Nemotron 3.5 Transcribe 可通过 NeMo Speech 插件配合 vLLM,部署为兼容 OpenAI API 的服务。以下采用官方单卡 H100 80GB BF16 配置,使用 Linux、Python 3.13 及兼容的 NVIDIA 驱动。
模型下载
从 ModelScope 下载模型
pip install modelscope
modelscope download \
--model nv-community/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
--local_dir nv-community/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B
MODEL_DIR="$PWD/nv-community/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B"环境安装
在同一终端中安装 NeMo Speech 和 vLLM。官方部署示例采用 vLLM 0.32.0 和 NeMo Speech 最新 main 分支,并安装仓库中锁定版本的依赖:
pip install uv
git clone https://github.com/NVIDIA-NeMo/Speech.git nemo-speech
cd nemo-speech
uv venv --python 3.13 .venv
UV_PROJECT_ENVIRONMENT=$PWD/.venv \
uv sync --extra asr --extra vllm --locked --no-install-project
uv pip install --python .venv/bin/python --no-deps -e .
uv pip install --python .venv/bin/python --no-deps \
opencv-python-headless==5.0.0.93
uv pip install --python .venv/bin/python openai
source .venv/bin/activate启动 vLLM 服务
在同一终端中启动服务,并启用 MTP 推测解码:
export VLLM_PLUGINS=nemo_speechlm
export VLLM_MAX_AUDIO_DECODE_DURATION_S=3600
export VLLM_MAX_AUDIO_CLIP_FILESIZE_MB=180
export VLLM_USE_V2_MODEL_RUNNER=0
vllm serve "$MODEL_DIR" \
--served-model-name nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
--trust-remote-code --dtype bfloat16 --gpu-memory-utilization 0.94 \
--max-model-len 65536 --max-num-batched-tokens 4096 --max-num-seqs 192 \
--enable-chunked-prefill --no-enable-prefix-caching \
--use-replayssm --mamba-backend flashinfer --mamba-cache-mode none \
--mm-processor-cache-gb 0 --no-async-scheduling \
--limit-mm-per-prompt '{"audio":{"count":6,"length":120000000}}' \
--speculative-config '{"method":"mtp","num_speculative_tokens":8}' \
--reasoning-parser nemotron_v3 \
--trust-request-mm-kwargs \
--middleware nemo.collections.speechlm2.vllm.salm.ctc_serving.ctc_timestamp_middleware服务默认监听 127.0.0.1:8000。以上参数面向 H100 80GB;在其他设备上,请根据可用 GPU 显存调整上下文长度和并发数。
调用本地服务
在另一个终端中激活同一环境,然后使用 OpenAI SDK 上传本地 WAV 音频文件并获取转写文本:
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:8000/v1", api_key="EMPTY")
audio = base64.b64encode(Path("audio.wav").read_bytes()).decode()
response = client.chat.completions.create(
model="nvidia/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B",
messages=[{"role": "user", "content": [
{"type": "text", "text": "Transcribe the following audio."},
{"type": "audio_url", "audio_url": {
"url": f"data:audio/wav;base64,{audio}"
}},
]}],
temperature=0,
top_p=1.0,
max_tokens=16384,
extra_body={
"chat_template_kwargs": {"enable_thinking": False},
"skip_special_tokens": False,
},
)
print(response.choices[0].message.content)将 audio.wav 替换为实际的 WAV 文件。如需语音翻译,将提示词改为 Please translate the given speech to Chinese.(请将给定语音翻译为中文。)
转写和翻译任务请保持系统提示词为空。该模型面向离线音频处理,并非实时流式 ASR 服务。
06、模型训练
ms-swift 支持训练 Nemotron 3.5 Transcribe。ms-swift 是 ModelScope 官方的大模型训练框架。开源仓库:https://github.com/modelscope/ms-swift
环境准备:
pip install git+https://github.com/modelscope/ms-swift.git
pip install transformers -U
# 其他依赖的安装请参阅:https://swift.readthedocs.io/zh-cn/latest/Megatron-SWIFT/Quick-start.html
#id2下面以 google/fleurs 数据集中的粤语数据为例,训练模型的粤语转写能力。SFT 脚本如下:
PYTORCH_CUDA_ALLOC_CONF='expandable_segments:True' \
SWIFT_AUDIO_LOAD_BACKEND=soundfile_pyav \
NPROC_PER_NODE=4 \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
megatron sft \
--model nv-community/NVIDIA-Nemotron-3.5-Transcribe-30B-A4B \
--dataset 'google/fleurs:yue_hant_hk_train' \
--val_dataset 'google/fleurs:yue_hant_hk_validation' \
--load_from_cache_file true \
--tuner_type lora_llm \
--lora_rank 8 \
--lora_alpha 16 \
--target_modules linear_qkv linear_proj proj \
--freeze_vit false \
--freeze_aligner false \
--tensor_model_parallel_size 1 \
--expert_model_parallel_size 4 \
--expert_tensor_parallel_size 1 \
--context_parallel_size 1 \
--mtp_num_layers 0 \
--megatron_extra_kwargs '{"moe_router_bias_update_rate":0.0}' \
--micro_batch_size 1 \
--global_batch_size 16 \
--num_train_epochs 3 \
--max_length 8192 \
--lr 5e-5 \
--lr_warmup_fraction 0.05 \
--min_lr 5e-6 \
--recompute_granularity selective \
--padding_free false \
--packing false \
--attention_backend flash \
--logging_steps 1 \
--eval_steps 200 \
--save_steps 1000 \
--save_safetensors true \
--save_missing_weights true \
--merge_lora true \
--no_save_optim true \
--no_save_rng true训练曲线如下所示

训练完成后,在验证集上运行推理:
CUDA_VISIBLE_DEVICES=0 swift infer \
--model output/vx-xxx/checkpoint-xxx \
--max_new_tokens 256 \
--temperature 0 \
--stream false将微调后的模型推送至 ModelScope:
swift export \
--adapters output/vx-xxx/checkpoint-xxx \
--push_to_hub true \
--hub_model_id '<your-model-id>' \
--hub_token '<your-sdk-token>'