Dia2 TTS:让对话生成近乎即时响应的流式升级版
初代 Dia 模型证明了开放权重 TTS 系统可以一次生成完整的多说话人对话,但它仍然要等到整份脚本输入完毕,才能发出第一个声音。Dia2 消除了这段等待时间。它是 Nari Labs 的新一代对话模型,围绕流式生成从头重构:在文本还在输入时,音频就已经开始播放。这让它不再局限于预渲染音频片段,而是成为实时对话语音应用中首个切实可行的选择。
为什么 Dia2 是真正的升级,而不只是一次版本迭代
Dia2 保留了初代 Dia 的核心优势——带说话人标签的对话、自然的轮流发言和富有表现力的演绎——同时围绕一项关键变化重构生成流程:它不再需要拿到完整转录稿后才开始说话。收到最初几个词后,Dia2 就会开始生成音频。这正是旁白模型与实时对话模型之间的区别。
Dia2 提供 Dia2-1B 和 Dia2-2B 两种检查点,你可以根据延迟和声音质量的优先级,在更快、更轻量的流式生成与更高保真度的输出之间选择。两种模型都以 Apache 2.0 许可证开放权重,检查点托管在 Hugging Face 上,推理代码则公开在 GitHub。
流式对话生成如何工作
传统 TTS(包括第一代 Dia)本质上采用批处理方式:输入文本,再输出一段完整波形。Dia2 将它重构成增量式流程,主要依靠以下几个机制:
- 逐 Token 流式生成音频。 Dia2 不会等待序列结束信号,而是随着生成过程持续输出音频,因此在提交最初几个词后的极短时间内就能开始播放。
- 基于前缀的说话人条件控制。 初代 Dia 使用单个参考音频片段,而 Dia2 会为每个说话人分配独立的声音前缀。这样可以分别为
[S1]和[S2]设置稳定、不同的声音,并避免它们在长对话中逐渐混淆。 - 约两分钟的生成窗口。 每次流式会话目前最多支持约两分钟的连续英语对话,足以完成一段自然的来回交流、一次语音智能体回复或一个短场景,但无法在一次调用中生成完整的有声书章节。
正是这种架构让 Dia2 能够支撑真正的交互式项目,例如实时语音智能体、实时旁白驱动的游戏和语音到语音流程;在这些场景中,初代 Dia 的一次性生成速度不足以跟上实时交互。
如何在本地运行 Dia2?
- 准备运行环境。 Dia2 通过
uv分发,推理需要 CUDA 12.8 或更高版本。安装前先检查驱动版本,可以避开最常见的安装失败问题。 - 获取模型。 从 GitHub 克隆
nari-labs/dia2,或者直接通过仓库名称加载检查点:追求更高保真度可选nari-labs/Dia2-2B,追求更低延迟则使用 1B 版本。 - 编写带标签的脚本。 与初代 Dia 一样,使用
[S1]/[S2]说话人标签组织输入。Dia2 沿用相同的标签约定,因此已有脚本只需极少修改即可继续使用。 - 调整生成参数。
CFG scale和temperature决定输出是更严格地遵循脚本,还是加入更多自然变化。较低的temperature适合可预测、可用于生产的输出;较高的值则适合更有表现力的探索性结果。 - 生产环境优先使用托管服务器。 由于输出声音默认不会固定为某一个说话人,Dia-TTS-Server 等社区项目提供 Dia 1.6B、Dia2-1B 和 Dia2-2B 之间的热切换,以及兼容 OpenAI 的 API 端点。相比从零编写推理封装,这是一条更快的集成路径。
如何充分发挥 Dia2 的能力
- 固定一次语音前缀,并在所有地方复用。 Dia2 没有针对单一声音进行微调,因此除非固定前缀或随机种子,否则每次运行的输出都会变化。应为每个项目设置一次并保存下来,而不是每次会话都重新生成新声音。
- 围绕两分钟上限设计内容。 对于更长的内容,应将脚本拆分成连续的多次流式调用,而不是强行塞进一个过大的请求。这也有助于交互式场景保持低延迟。
- 不要跳过 CUDA 版本检查。 Dia2 最常见的安装失败原因是驱动不匹配;在排查其他问题之前,先确认 CUDA 版本为 12.8 或更高。
- 根据使用场景选择模型大小。 如果响应速度比音质更重要,例如实时语音智能体或实时聊天语音,请选择 Dia2-1B;如果输出质量优先,并且可以接受略高的延迟,则选择 Dia2-2B。
- 遵守使用政策。 Nari Labs 的许可证明确禁止在未经许可的情况下生成冒充真实人物的音频。任何允许用户提供声音提示的产品,都应内置授权确认机制。
Dia2 与初代 Dia 1.6B 对比
| Dia2 | Dia 1.6B(初代) | |
|---|---|---|
| 生成模式 | 流式,在接收完整文本前就开始生成 | 批处理,需要先获得完整转录稿 |
| 模型大小 | 1B 和 2B 两种检查点 | 1.6B,单一检查点 |
| 声音条件控制 | 每个说话人使用独立前缀 | 共享单个参考音频提示 |
| 最适合 | 实时语音智能体、实时对话、语音到语音 | 预渲染对话、播客、有声书 |
| 最长连续输出 | 每次会话约两分钟 | 没有相同形式的时间限制 |
| 许可证 | Apache 2.0 | Apache 2.0 |
如果项目会提前渲染音频,例如播客单集或游戏中预先制作的对话,初代 Dia 1.6B 的能力依然足够,而且使用起来更简单。当音频必须对此刻正在发生的事情作出响应时,Dia2 的价值才真正体现出来。
常见问题
Dia2 免费且开源吗?
可以。Dia2 以 Apache 2.0 许可证发布,1B 和 2B 两种检查点及推理代码均公开在 GitHub 和 Hugging Face。
Dia2-1B 与 Dia2-2B 在实际使用中有什么区别?
Dia2-1B 更轻量、延迟更低,适合实时交互;Dia2-2B 会牺牲少量速度来换取更高的音频保真度。请根据具体场景更重视响应速度还是输出质量来选择。
Dia2 能在一次调用中生成超过两分钟的音频吗?
单次流式会话不行。目前的上限约为两分钟的连续英语语音,更长的内容应拆分为连续的多次调用。
Dia2 会取代初代 Dia 1.6B 吗?
不会完全取代。实时和交互式应用更适合 Dia2,但对于提前离线渲染对话的项目,初代 Dia 1.6B 仍然是可靠且更简单的选择。
Dia2 对硬件有什么要求?
Dia2 需要兼容 CUDA 12.8 或更高版本的 GPU 环境。1B 和 2B 检查点的具体显存需求不同,其中较小的模型更适合硬件资源有限的环境。
体验类似的对话功能
Dia2 本身需要通过其开源实现运行。如果你想在浏览器中制作多说话人音频,可以尝试文本转对话,这是一个功能相近的选择。它不是 Dia2,也不提供 Dia2 的实时流式引擎,但可以让你在本地部署模型之前先尝试多说话人场景。