news 2026/9/25 13:00:29

Nemotron-3-Diarization API详解:4种输入方式与输出结果怎么用对

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nemotron-3-Diarization API详解:4种输入方式与输出结果怎么用对

Nemotron-3-Diarization API详解:4种输入方式与输出结果怎么用对

【免费下载链接】Nemotron-3-Diarization项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Nemotron-3-Diarization

Nemotron-3-Diarization 是 NVIDIA 开源的说话人分离(Speaker Diarization)模型,专门回答音频中"谁在什么时候说话"。它最多支持 8 位说话人,同时覆盖流式与离线两种推理场景。本文带你一次看懂diarize()API 的 4 种输入方式与 2 种输出结果,并按延迟需求选对流式参数组,让 API 第一次就用对。

1️⃣ 快速认识:这个模型能做什么?

Nemotron 3 Diarization 是一个 1 亿参数的 Transformer 编码器(31 层,带 RoPE 位置编码),把 10 ms 梅尔频谱特征降采样为 80 ms 帧率处理;流式推理时通过AOSC(按到达顺序的说话人缓存)+ FIFO 队列在分块之间保持说话人身份稳定。

一句话概括:输入一段音频,输出"每个时刻是谁在说话"。

关键能力说明
说话人数上限最多 8 人,通道按"谁先出现"自动排序
输入音频16 kHz 单声道,支持.wav/.flac/.opus/.mp3
时长限制分块推理下无固定上限
输出帧分辨率默认 10 ms,可配置为 10 ms 的任意倍数
最低输入缓冲延迟0.32 s(离线配置为 30.4 s)

2️⃣ 四种输入方式:diarize()的 audio 参数怎么传?

调用核心只有一行:

predicted_segments = diar_model.diarize(audio=audio_input, batch_size=1)

区别全在audio_input的传法上,官方支持 4 种:

方式一:单个音频文件路径(最简单)

适合快速验证:

audio_input = "/path/to/multispeaker_audio1.wav"

方式二:文件路径列表(批量推理)

一次处理多段音频,batch_size与之配合:

audio_input = ["/path/to/multispeaker_audio1.wav", "/path/to/multispeaker_audio2.wav"]

方式三:Numpy 数组(单个或列表,内存中音频)

适合流式管线中已经解码好的 PCM 数据:

import numpy as np audio_input = np.random.randn(16000 * 10).astype(np.float32) # 10秒@16kHz diar_model.diarize(audio=audio_input, batch_size=1, sample_rate=16000)

⚠️重点提示:传 Numpy 数组时必须显式指定sample_rate(默认 16000),传数组列表时更不可省略。

方式四:JSONL manifest 文件(大批量/评测场景)

每行一个 JSON 对象,含audio_filepath、offset、duration字段:

{"audio_filepath": "/path/to/multispeaker_audio1.wav", "offset": 0, "duration": 600} {"audio_filepath": "/path/to/multispeaker_audio2.wav", "offset": 900, "duration": 580}

📌 小贴士:非标准音频建议先用 ffmpeg 转成 16 kHz 单声道 PCM:ffmpeg -i input.mp3 -ac 1 -ar 16000 -c:a pcm_s16le conversation.wav

3️⃣ 两种输出结果:拿到数据后怎么读?

默认输出:带说话人标记的片段列表

predicted_segments = diar_model.diarize(audio=audio_input, batch_size=1) # 每个片段形如:(开始秒, 结束秒, speaker_index)

这是最常用的形式——直接得到"起止时间 + 说话人编号"。

可选输出:说话人活动概率张量

加一个参数即可同时拿到逐帧概率:

predicted_segments, predicted_probs = diar_model.diarize( audio=audio_input, batch_size=1, include_tensor_outputs=True)

读这个张量只需记住 4 点:

  • 形状为[T, 8]:T 个输出帧 × 8 个说话人通道,取值是 0~1 的活动概率;
  • 8 个通道按说话人在音频中首次出现的时间排序,第 0 通道就是最先开口的人;
  • 默认帧分辨率 10 ms,可配置为 30 ms、80 ms、240 ms 等任意 10 ms 倍数;
  • 概率经后处理即可得到类似["speaker1", 0.51, 12.62]的通用标签 + 时间戳。

4️⃣ 流式参数速查:一张表选对延迟配置

流式配置以80 ms 帧为单位定义,官方给出 4 档推荐参数(详见 README.md):

配置延迟SPKCACHE_LENFIFO_LENCHUNK_LENRIGHT_CONTEXTUPDATE_PERIOD
离线(精度优先)30.4 s2644034040300
低延迟1.04 s26426494222
超低延迟0.64 s26426462222
极超低延迟0.32 s26426431222

两个使用要点:

  1. 延迟 = (CHUNK_LEN + RIGHT_CONTEXT) × 80 ms,不含计算耗时;
  2. 参数设置完成后记得调用diar_model._check_streaming_parameters()做校验,延迟越低精度会略有下降,按业务取舍。

5️⃣ 进阶一步:从"谁说了"到"说了什么"

分离模型只回答who spoke when;要生成"谁说了什么"的说话人归属转写,需搭配流式 ASR 模型。官方给出两种受支持组合及完整命令参数,完整流程见 ASR_INTEGRATION_GUIDE.md。

如果你要做效果评测,DER / SCA / MAE 指标的定义与推荐评测命令见 diarization_evaluation.md。

6️⃣ 常见坑位清单

  • 说话人编号≠真名:输出的speaker_index只是会话内身份编号,不代表真实姓名,展示人名需要应用层另行映射;
  • 超过 8 人:模型只有 8 个通道,更多说话人会漏检或被错分;
  • 忘了 sample_rate:传 Numpy 数组而不指定采样率,结果会整体跑偏;
  • 音频格式不对:务必 16 kHz 单声道,否则可能被拒绝或效果变差;
  • 重连后编号变了:标签是"会话局部"的,断开重连后身份编号会重新分配,这属于正常行为。

📎相关资料:README.md(完整使用说明与性能数据) · ASR_INTEGRATION_GUIDE.md(ASR 集成指南) · diarization_evaluation.md(评测协议) · Nemotron-3-Diarization.nemo(模型检查点)

【免费下载链接】Nemotron-3-Diarization项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/Nemotron-3-Diarization

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/25 12:55:44

CTF密码学入门:栅栏密码原理与解题实战

1. 从"聪明的小羊"这个标题能读出什么第一次看到"聪明的小羊"这个题目名,很多人会愣一下——CTF的Crypto方向,怎么起了个这么萌的名字?我当初也是这样,盯着题目名看了半天,完全摸不着头脑。但做过…

作者头像 李华
网站建设 2026/9/25 12:49:45

华中科技大学数据结构实验C语言通关指南:从指针到调试一次讲清

简介:华中科技大学数据结构实验代码与解析,面向计算机专业学生及C语言数据结构学习者,也可用于期末复习或实验课自学。压缩包共四个C语言源文件,对应顺序表、单链表、二叉树、邻接表(无向图)四个经典实验&a…

作者头像 李华
网站建设 2026/9/25 12:44:08

2026年AI编程工具横评:TaoToken统一Key接入8款热门工具实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/25 12:41:59

NodeJS HTTPS双向认证与HSM私钥管理:从OpenSSL到Nginx

简介:面向需要实现HTTPS双向认证的Node.js开发者,这份PDF详解了如何结合硬件安全模块(HSM)完成TLS双向认证,尤其适合银行UKEY等本地加密运算场景。与常见的OpenSSL HSM插件方案不同,资料采用纯JavaScript通…

作者头像 李华