TYGER 是什么?一文读懂 NineNineSix 开源全双工语音决策模型

发布时间:2026/10/25 4:38:20
TYGER 是什么?一文读懂 NineNineSix 开源全双工语音决策模型
  • 人工智能
  • 语音
  • 音频
  • 基础模型
  • 本地部署

【免费下载链接】tyger

项目地址:https://ai.gitcode.com/hf_mirrors/nineninesix/tyger
点击查看免费下载

TYGER是 NineNineSix 开源的全双工语音决策模型(open-weight),专为实时语音对话设计:它一边通过内置的 NVIDIA Nemotron 流式语音识别"听"你说什么,一边实时判断何时该回复、何时继续听、何时被打断、何时该"嗯嗯"附和。对于想构建自然语音助手的开发者,这是一个开箱即用的"耳朵 + 对话节奏控制器"。

为什么语音助手需要"全双工"?

大多数语音助手还是"对讲机"模式(半双工):你说完 → 等它想 → 它说完 → 你再开口。对话双方轮流占线,体验生硬。

而真正自然的对话像打电话一样——全双工:双方可以几乎同时说话。这要求系统实时回答三个难题:

  • 🔊话轮结束检测(Endpoint):用户真的说完了吗?该我接话了。
  • ✋打断识别(Barge-in):用户在助手说话时插话,要立刻停下让位。
  • 👂附和(Backchannel):用户还在长句中间,助手适时"mm-hm"一下表示在听。

TYGER 就是为这三个决策而生的模型。它同时接收两路对齐的 16 kHz 单声道音频:用户麦克风 + 助手的播放声,逐帧输出四种话轮状态(LISTEN / HOLD / SPEAK / BACKCHANNEL)和 endpoint、barge-in、backchannel 分数。

💡 仓库本身只包含权重与配置,不含推理代码;配套的开源语音助手项目 tyger-s2s 用它作为"耳朵",浏览器里即可对话(详见下文"上手路径")。

架构拆解:Nemotron ASR + 一个 14M 参数的小 GRU

TYGER 的巧妙之处在于"大模型听声,小模型做决策":

组件说明
语音识别NVIDIA Nemotron 3.5 ASR Streaming 0.6B(约 638M 参数),原封不动复用
话轮决策因果 GRU:3 层、宽度 768(约 14M 参数),从零训练
总参数量652M(FP32 权重约 2.61 GB)
输入两路对齐的 16 kHz 单声道流(用户麦克风 + 助手播放)
帧粒度80 ms 一帧,无前瞻(lookahead)
流式策略320 ms 一跳,Nemotron 每次对 8 秒窗口重编码
会话状态每路对话仅需 9 KiB 的 GRU 状态
语言英文

Nemotron 侧输出第 15 层的 1,024 维声学特征,加上能量归一化信号后喂给 GRU;GRU 的每个时间步同时产出 5 个头:话轮状态、即将开口的 hazard、让话 yield、附和 backchannel、endpoint。架构配置都记录在 config.json 里,Nemotron 的前端配置和分词器完整保留在 nemotron/ 目录。

Nemotron ASR 部分的编码器结构如下图所示(FastConformer 编码器 + 语言编码融合 + RNN-T 解码器):

值得注意的细节:

  • 状态输入只使用真实值(助手在听就标 LISTEN,助手在说就标 SPEAK),不让模型用自己的猜测做状态,避免自我强化偏差;
  • 内置防误触发护栏:6 帧热身、至少 350 ms 高于 -50 dB 的语音、附和间隔不少于 1.2 s、静默 1.2 s 强制兜底 endpoint。

三大核心事件与默认阈值

TYGER 对外表现为三类事件,应用侧直接消费即可:

事件触发时机应用动作默认阈值
Endpoint(话尾)用户说完了开始回答0.91
Barge-in(打断)助手说话时用户插话立刻停止回答0.50
Backchannel(附和)用户说话间隙适合"嗯嗯"播放附和,话轮仍归用户0.40

其中 barge-in 和 backchannel 的默认值比离线评测用的更宽松(0.93 / 0.80),官方建议在你的应用里自行调节——tyger-s2s 的网页上就提供了对应的滑杆。

实测表现:决策有多快、多准?

离线评测在 Open Yap 1K 测试集、Full-Duplex-Bench v1.0(CANDOR 子集)及内部集上进行,阈值在开发集上选定并冻结。endpoint 延迟(从用户说完全计时)如下:

评测集话轮数延迟(中位 / 均值)过早打断1.2 s 内无 endpoint
Open Yap 1K 测试1,000252.5 / 465.0 ms29.90%7.40%
FDB v1.0 CANDOR119307.5 / 383.0 ms25.21%5.04%
内部集(未公开)242252.5 / 286.5 ms12.40%0.00%

其他关键指标(Open Yap 1K 测试集):

  • 🎯 话轮状态 macro-F1:0.9436
  • 📈 Endpoint ROC-AUC / AP:0.9839 / 0.8149
  • 📈 Barge-in ROC-AUC / AP:0.9797 / 0.6657
  • ⚡ 速度:GRU 决策部分在 RTX 4090 上中位仅0.805 ms/帧,峰值显存 108.76 MiB

全部数字与口径定义见 evaluation/metrics.json 和 evaluation/README.md。

⚠️ 注意官方对局限性的坦诚声明:这些只是离线诊断,不是实时语音助手基准;仅一个训练种子;内部集不可复现。

ASR 前端:识别准确率与多语言能力

TYGER 的"耳朵"——Nemotron 3.5 ASR 0.6B——本身就是一款流式识别模型,官方卡片中给出了多组参考数据。流式分块越大,识别准确率越高(延迟相应增加):

在 FLEURS 多语言基准上,按语言覆盖分层的平均 WER 对比(TYGER 本体面向英文):

NVIDIA 原始模型卡(含更多图表与许可说明)完整保留在 upstream/NVIDIA_MODEL_CARD.md。

资源占用与部署:一张消费级显卡够不够?

  • 仅 GRU 决策头:0.8 ms/帧级开销,可忽略;
  • 整套模型(含 Nemotron)在 tyger-s2s 中4 路并发对话约占 4 GB 显存;
  • 部署方式:官方建议直接使用 tyger-s2s(Apache-2.0)提供的 Docker 镜像,或在浏览器/通话场景中作为语音后端 API。

Nemotron 前端在单张 H100 上的并发能力参考(分块越大可支撑并行流越多):

🚀 上手路径

git clone https://link.gitcode.com/i/4106b4461a67f023aa6042609bf6a7d3

仓库内容速览:

文件作用
model.safetensorsTYGER 全部权重(Nemotron + GRU,约 2.6 GB)
config.json模型结构、前端参数、默认策略(阈值、去抖、护栏)
manifest.json每个文件的字节数与 SHA-256 校验值
nemotron/Nemotron 前端配置与分词器
evaluation/评测协议与全部指标
upstream/、licenses/NVIDIA 原始模型卡、图表与 OpenMDW-1.1 许可证

许可与致谢

  • 权重与文件采用OpenMDW-1.1许可,见 LICENSE.md 与 NOTICE.md、licenses/OpenMDW-1.1.txt;
  • NVIDIA Nemotron 的原始许可、模型卡原样保留,未做改动;
  • 训练数据来自 Open Yap 1K v1.0(1,395 训练 / 107 开发 / 100 测试对话),标签由双方发言时间自动生成,无需人工标注。

一句话总结

TYGER =一个"会听"的 0.6B 流式 ASR + 一个 14M 参数的 GRU 决策器,以 252 ms 级中位延迟判断话尾、以 0.98 ROC-AUC 区分打断与附和,是构建全双工语音 Agent 的一个轻量、可复现、许可清晰的开源起点 🎙️

  • 人工智能
  • 语音
  • 音频
  • 基础模型
  • 本地部署

【免费下载链接】tyger

项目地址:https://ai.gitcode.com/hf_mirrors/nineninesix/tyger
点击查看免费下载

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