AB
AiBoss
project

Nemotron-3-Diarization - 支持流式与离线推理的八说话人日志模型

Nemotron-3-Diarization 是 NVIDIA 发布的开源说话人日志(diarization)模型,用于判断「谁在什么时候说话」,同时支持流式与离线推理,最多可处理八位说话人。模型以 NeMo 框架实现,单一检查点即可覆盖从 0.32 秒到 30.4 秒输入缓冲延迟的多种配置,适合会议转写、通话分析等需要区分说话人的音频场景。

Nemotron-3-Diarization 是 NVIDIA 发布的一个开放权重说话人日志(speaker diarization)模型,目标是解决真实音频中「谁在什么时候说话」的问题。它同时支持流式推理与离线推理,最多可处理八位说话人。按照项目自述,模型沿用 Sortformer 的思路,通过按说话人首次出现顺序排列输出通道来解决说话人排列歧义;流式推理部分则采用 Streaming Sortformer 中提出的到达顺序说话人缓存(AOSC)与 FIFO 队列,前者保留较早音频块中的说话人信息以维持身份一致性,后者为每一步处理提供近期帧上下文。它适合需要把多说话人音频切分并标注说话人身份的开发者,例如会议记录转写、客服通话分析、播客内容整理等场景。

维护者与状态

该项目由 nvidia 维护,托管在 Hugging Face 上。仓库创建时间为 2026-09-01,最后更新时间为 2026-09-24。任务类型标注为 voice-activity-detection,使用框架为 nemo。截至 2026-09-24,近 30 天下载量为 4282,点赞数为 223。事实表中未给出正式 release 信息,因此这里不对版本发布情况作额外说明。

主要能力

以下能力均来自项目自述(模型卡),并非第三方评测结论:

  • 流式与离线双模式:据项目说明,同一个检查点既可用于流式推理,也可用于离线式推理,离线式配置使用 30.4 秒的输入缓冲。
  • 最多八位说话人:模型自述支持最多八说话人的日志化处理。
  • 低延迟配置:项目称单一检查点可支持低至 80 毫秒的输入缓冲延迟,但推荐的最低配置为 0.32 秒。
  • 可配置的输出分辨率:输出帧分辨率可按 10 毫秒的倍数进行配置。
  • 分块推理下时长不受限:据项目说明,采用分块推理时,音频的最大时长不受限制。
  • 说话人排列消歧:沿用 Sortformer 的做法,按说话人首次到达顺序排列输出通道。
  • 流式缓存机制:采用 AOSC 与 FIFO 队列,在长音频中保持说话人身份稳定。

使用入口

模型仓库地址为 Nemotron-3-Diarization。

据项目说明,可以通过 NVIDIA NeMo Speech 进行训练、微调或推理。前置条件包括 Python 3.12 或更高版本、Cython 以及较新的 PyTorch 版本。安装命令示例:

apt-get update && apt-get install -y libsndfile1 ffmpeg
uv pip install Cython packaging
uv pip install 'nemo-toolkit[asr]'

模型卡给出的快速开始脚本会加载模型、对 WAV 文件执行日志化并打印结果:

from nemo.collections.asr.models import SortformerEncLabelModel
diar_model = SortformerEncLabelModel.from_pretrained("nvidia/Nemotron-3-Diarization")
diar_model.eval()
diar_model.sortformer_modules.chunk_len = 340
diar_model.sortformer_modules.chunk_right_context = 40
diar_model.sortformer_modules.fifo_len = 40
diar_model.sortformer_modules.spkcache_update_period = 300
diar_model._check_streaming_parameters()
predicted_segments = diar_model.diarize(audio=["/path/to/your/audio.wav"], batch_size=1)
for segment in predicted_segments[0]:
    print(segment)

输入格式方面,项目自述支持单个音频文件路径、音频文件路径列表、numpy 数组(单个或列表),以及按行分隔的 JSON manifest 文件。使用 numpy 数组时必须在 diar_model.diarize() 中指定正确的 sample_rate,默认值为 16000。

流式配置由若干以 80 毫秒帧为单位的参数决定,包括 SPKCACHE_LEN、FIFO_LEN、CHUNK_LEN、RIGHT_CONTEXT 与 UPDATE_PERIOD。模型卡给出了四档推荐配置:离线式(30.4 秒延迟)、低延迟(1.04 秒)、极低延迟(0.64 秒)与超低延迟(0.32 秒)。项目特别说明,这里的延迟指输入缓冲延迟,计算方式为(CHUNK_LEN + RIGHT_CONTEXT)× 80 毫秒,不包含计算处理时间。

获取结果时,diar_model.diarize() 返回形如「起始秒、结束秒、说话人索引」的片段列表;传入 include_tensor_outputs=True 还可获得说话人活动概率张量。若需要更详细的 DER 评估,项目指向 NeMo 的示例脚本 e2e_diarize_speech.py,可通过调整 chunk_len、fifo_len、chunk_right_context、spkcache_update_period 等参数测试流式行为。

此外,模型卡称该模型已在 🤗 Transformers 中原生支持,可分别用于离线与流式日志化,并给出了基于 AutoModelForAudioFrameClassification 与 AutoProcessor 的离线示例代码。

许可与限制

许可证为 openmdw-1.1,使用时请以仓库中的 LICENSE 文件为准。项目自述称该模型可用于商业或非商业用途,这属于维护者的表述,具体授权范围仍应回到许可证原文确认。

已知限制与边界方面,项目说明中提到的几点值得注意:延迟数值仅指输入缓冲延迟,不含计算处理时间;使用 numpy 数组输入时必须显式提供正确的采样率;流式配置的各参数以 80 毫秒帧为单位,需要按场景选择推荐组合。模型卡未列出具体的硬件要求、基准分数或参数量,因此本文不对这些内容作任何推断。